summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/collections/buildbot_suites.bat1
-rw-r--r--mysql-test/extra/rpl_tests/rpl_deadlock.test8
-rw-r--r--mysql-test/extra/rpl_tests/rpl_semi_sync.inc2
-rw-r--r--mysql-test/include/check-warnings.test2
-rw-r--r--mysql-test/include/column_compression_rpl.inc260
-rw-r--r--mysql-test/include/ctype_utf8mb4.inc4
-rw-r--r--mysql-test/include/default_mysqld.cnf2
-rw-r--r--mysql-test/include/have_innodb.combinations30
-rw-r--r--mysql-test/include/have_innodb.inc2
-rw-r--r--mysql-test/include/have_not_innodb_plugin.inc4
-rw-r--r--mysql-test/include/have_semisync.inc4
-rw-r--r--mysql-test/include/have_semisync.opt4
-rw-r--r--mysql-test/include/have_semisync_plugin.inc15
-rw-r--r--mysql-test/include/have_xtradb.combinations13
-rw-r--r--mysql-test/include/have_xtradb.inc4
-rw-r--r--mysql-test/include/install_semisync.inc39
-rw-r--r--mysql-test/include/mtr_check.sql8
-rw-r--r--mysql-test/include/mtr_warnings.sql6
-rw-r--r--mysql-test/include/rpl_events.inc159
-rw-r--r--mysql-test/include/uninstall_semisync.inc29
-rw-r--r--mysql-test/lib/My/SafeProcess/safe_kill_win.cc3
-rwxr-xr-xmysql-test/mysql-test-run.pl67
-rw-r--r--mysql-test/r/1st.result1
-rw-r--r--mysql-test/r/alter_table.result13
-rw-r--r--mysql-test/r/alter_user.result56
-rw-r--r--mysql-test/r/analyze_stmt_privileges2.result6
-rw-r--r--mysql-test/r/column_compression.result1362
-rw-r--r--mysql-test/r/column_compression_parts.result293
-rw-r--r--mysql-test/r/column_compression_rpl.result2250
-rw-r--r--mysql-test/r/compound.result3
-rw-r--r--mysql-test/r/connect.result3
-rw-r--r--mysql-test/r/create_drop_function.result4
-rw-r--r--mysql-test/r/create_user.result48
-rw-r--r--mysql-test/r/cte_recursive.result13
-rw-r--r--mysql-test/r/ctype_upgrade.result6
-rw-r--r--mysql-test/r/ctype_utf8mb4_innodb.result12
-rw-r--r--mysql-test/r/ctype_utf8mb4_myisam.result7
-rw-r--r--mysql-test/r/custom_aggregate_functions.result949
-rw-r--r--mysql-test/r/default.result6
-rw-r--r--mysql-test/r/derived.result56
-rw-r--r--mysql-test/r/derived_cond_pushdown.result5151
-rw-r--r--mysql-test/r/derived_view.result6
-rw-r--r--mysql-test/r/errors.result10
-rw-r--r--mysql-test/r/events_grant.result2
-rw-r--r--mysql-test/r/explain.result8
-rw-r--r--mysql-test/r/explain_json.result2
-rw-r--r--mysql-test/r/features.result1
-rw-r--r--mysql-test/r/fulltext.result2
-rw-r--r--mysql-test/r/func_gconcat.result126
-rw-r--r--mysql-test/r/func_group.result2
-rw-r--r--mysql-test/r/func_group_innodb.result6
-rw-r--r--mysql-test/r/func_misc.result4
-rw-r--r--mysql-test/r/func_str.result4
-rw-r--r--mysql-test/r/grant.result18
-rw-r--r--mysql-test/r/group_by_null.result2
-rw-r--r--mysql-test/r/information_schema-big.result2
-rw-r--r--mysql-test/r/information_schema.result43
-rw-r--r--mysql-test/r/information_schema2.result2
-rw-r--r--mysql-test/r/information_schema_all_engines.result2
-rw-r--r--mysql-test/r/information_schema_db.result4
-rw-r--r--mysql-test/r/information_schema_inno.result9
-rw-r--r--mysql-test/r/information_schema_part.result2
-rw-r--r--mysql-test/r/insert_update.result16
-rw-r--r--mysql-test/r/invisible_binlog.result65
-rw-r--r--mysql-test/r/invisible_field.result553
-rw-r--r--mysql-test/r/invisible_field_debug.result371
-rw-r--r--mysql-test/r/join.result1
-rw-r--r--mysql-test/r/join_nested.result2
-rw-r--r--mysql-test/r/join_nested_jcl6.result2
-rw-r--r--mysql-test/r/limit_rows_examined.result6
-rw-r--r--mysql-test/r/log_slow.result5
-rw-r--r--mysql-test/r/log_tables_upgrade.result1
-rw-r--r--mysql-test/r/lowercase_table_grant.result8
-rw-r--r--mysql-test/r/myisam_explain_non_select_all.result22
-rw-r--r--mysql-test/r/mysql_client_test.result1
-rw-r--r--mysql-test/r/mysql_client_test_comp.result1
-rw-r--r--mysql-test/r/mysql_client_test_nonblock.result1
-rw-r--r--mysql-test/r/mysql_upgrade-6984.result6
-rw-r--r--mysql-test/r/mysql_upgrade.result31
-rw-r--r--mysql-test/r/mysql_upgrade_no_innodb.result6
-rw-r--r--mysql-test/r/mysql_upgrade_noengine.result41
-rw-r--r--mysql-test/r/mysql_upgrade_ssl.result1
-rw-r--r--mysql-test/r/mysql_upgrade_view.result18
-rw-r--r--mysql-test/r/mysqlbinlog_row_compressed.result16
-rw-r--r--mysql-test/r/mysqlbinlog_row_minimal.result16
-rw-r--r--mysql-test/r/mysqlcheck.result9
-rw-r--r--mysql-test/r/mysqld--help,win.rdiff34
-rw-r--r--mysql-test/r/mysqld--help.result197
-rw-r--r--mysql-test/r/mysqldump.result182
-rw-r--r--mysql-test/r/no_password_column-mdev-11170.result1
-rw-r--r--mysql-test/r/opt_tvc.result640
-rw-r--r--mysql-test/r/order_by.result2
-rw-r--r--mysql-test/r/outfile.resultbin2323 -> 2323 bytes
-rw-r--r--mysql-test/r/partition.result3
-rw-r--r--mysql-test/r/partition_alter.result7
-rw-r--r--mysql-test/r/partition_exchange.result24
-rw-r--r--mysql-test/r/partition_innodb.result6
-rw-r--r--mysql-test/r/partition_pruning.result88
-rw-r--r--mysql-test/r/partition_range.result4
-rw-r--r--mysql-test/r/ps.result11
-rw-r--r--mysql-test/r/query_cache.result2
-rw-r--r--mysql-test/r/range.result7
-rw-r--r--mysql-test/r/range_mrr_icp.result7
-rw-r--r--mysql-test/r/select.result10
-rw-r--r--mysql-test/r/select_found.result2
-rw-r--r--mysql-test/r/select_jcl6.result10
-rw-r--r--mysql-test/r/select_pkeycache.result10
-rw-r--r--mysql-test/r/selectivity.result12
-rw-r--r--mysql-test/r/selectivity_innodb.result12
-rw-r--r--mysql-test/r/set_statement.result2
-rw-r--r--mysql-test/r/show_check.result28
-rw-r--r--mysql-test/r/simultaneous_assignment.result222
-rw-r--r--mysql-test/r/sp-big.result29
-rw-r--r--mysql-test/r/sp-destruct.result12
-rw-r--r--mysql-test/r/sp-error.result2
-rw-r--r--mysql-test/r/sp.result35
-rw-r--r--mysql-test/r/sql_mode.result8
-rw-r--r--mysql-test/r/status.result40
-rw-r--r--mysql-test/r/subselect.result28
-rw-r--r--mysql-test/r/subselect4.result20
-rw-r--r--mysql-test/r/subselect_mat.result4
-rw-r--r--mysql-test/r/subselect_mat_cost_bugs.result2
-rw-r--r--mysql-test/r/subselect_no_exists_to_in.result28
-rw-r--r--mysql-test/r/subselect_no_mat.result28
-rw-r--r--mysql-test/r/subselect_no_opts.result28
-rw-r--r--mysql-test/r/subselect_no_scache.result28
-rw-r--r--mysql-test/r/subselect_no_semijoin.result28
-rw-r--r--mysql-test/r/subselect_sj.result2
-rw-r--r--mysql-test/r/system_mysql_db.result10
-rw-r--r--mysql-test/r/system_mysql_db_fix40123.result10
-rw-r--r--mysql-test/r/system_mysql_db_fix50030.result10
-rw-r--r--mysql-test/r/system_mysql_db_fix50117.result10
-rw-r--r--mysql-test/r/table_elim.result4
-rw-r--r--mysql-test/r/table_value_constr.result2073
-rw-r--r--mysql-test/r/timeout.result67
-rw-r--r--mysql-test/r/transaction_timeout.result51
-rw-r--r--mysql-test/r/union.result4
-rw-r--r--mysql-test/r/variables.result2
-rw-r--r--mysql-test/r/view.result22
-rw-r--r--mysql-test/r/view_grant.result16
-rw-r--r--mysql-test/r/win_percentile.result326
-rw-r--r--mysql-test/std_data/mdev11084.frmbin0 -> 589 bytes
-rw-r--r--mysql-test/std_data/mdev11084.parbin0 -> 36 bytes
-rw-r--r--mysql-test/std_data/mdev11084.part1.MYDbin0 -> 7 bytes
-rw-r--r--mysql-test/std_data/mdev11084.part1.MYIbin0 -> 1024 bytes
-rw-r--r--mysql-test/suite.pm14
-rw-r--r--mysql-test/suite/binlog/r/binlog_base64_flag.result2
-rw-r--r--mysql-test/suite/binlog/r/binlog_killed.result89
-rw-r--r--mysql-test/suite/binlog/r/load_data_stm_view.result1
-rw-r--r--mysql-test/suite/binlog/t/binlog_killed.test95
-rw-r--r--mysql-test/suite/binlog/t/load_data_stm_view.test4
-rw-r--r--mysql-test/suite/binlog_encryption/rpl_semi_sync.result6
-rw-r--r--mysql-test/suite/binlog_encryption/rpl_sync-slave.opt2
-rw-r--r--mysql-test/suite/compat/oracle/r/empty_string_literal.result2
-rw-r--r--mysql-test/suite/compat/oracle/r/sp-param.result16
-rw-r--r--mysql-test/suite/compat/oracle/r/sp.result4
-rw-r--r--mysql-test/suite/encryption/r/encrypt_and_grep.result4
-rw-r--r--mysql-test/suite/encryption/r/innochecksum.result9
-rw-r--r--mysql-test/suite/encryption/r/innodb-bad-key-change.result33
-rw-r--r--mysql-test/suite/encryption/r/innodb-bad-key-change2.result36
-rw-r--r--mysql-test/suite/encryption/r/innodb-bad-key-change4.result11
-rw-r--r--mysql-test/suite/encryption/r/innodb-encryption-disable.result5
-rw-r--r--mysql-test/suite/encryption/r/innodb-first-page-read.result2
-rw-r--r--mysql-test/suite/encryption/r/innodb-force-corrupt.result5
-rw-r--r--mysql-test/suite/encryption/r/innodb-key-rotation-disable.result2
-rw-r--r--mysql-test/suite/encryption/r/innodb-missing-key.result7
-rw-r--r--mysql-test/suite/encryption/r/innodb-redo-badkey.result1
-rw-r--r--mysql-test/suite/encryption/r/innodb-redo-nokeys.result6
-rw-r--r--mysql-test/suite/encryption/r/innodb-spatial-index.result1
-rw-r--r--mysql-test/suite/encryption/r/innodb_encrypt_log_corruption.result21
-rw-r--r--mysql-test/suite/encryption/r/innodb_encryption-page-compression.result1
-rw-r--r--mysql-test/suite/encryption/r/innodb_encryption.result5
-rw-r--r--mysql-test/suite/encryption/r/innodb_lotoftables.result40
-rw-r--r--mysql-test/suite/encryption/r/innodb_onlinealter_encryption.result1
-rw-r--r--mysql-test/suite/encryption/t/encrypt_and_grep.test3
-rw-r--r--mysql-test/suite/encryption/t/innochecksum.test22
-rw-r--r--mysql-test/suite/encryption/t/innodb-bad-key-change.opt2
-rw-r--r--mysql-test/suite/encryption/t/innodb-bad-key-change.test26
-rw-r--r--mysql-test/suite/encryption/t/innodb-bad-key-change2.opt2
-rw-r--r--mysql-test/suite/encryption/t/innodb-bad-key-change2.test26
-rw-r--r--mysql-test/suite/encryption/t/innodb-bad-key-change4.opt4
-rw-r--r--mysql-test/suite/encryption/t/innodb-bad-key-change4.test1
-rw-r--r--mysql-test/suite/encryption/t/innodb-compressed-blob.combinations8
-rw-r--r--mysql-test/suite/encryption/t/innodb-compressed-blob.opt6
-rw-r--r--mysql-test/suite/encryption/t/innodb-encryption-disable.opt2
-rw-r--r--mysql-test/suite/encryption/t/innodb-encryption-disable.test5
-rw-r--r--mysql-test/suite/encryption/t/innodb-first-page-read.test5
-rw-r--r--mysql-test/suite/encryption/t/innodb-force-corrupt.opt2
-rw-r--r--mysql-test/suite/encryption/t/innodb-force-corrupt.test5
-rw-r--r--mysql-test/suite/encryption/t/innodb-key-rotation-disable.test5
-rw-r--r--mysql-test/suite/encryption/t/innodb-missing-key.opt3
-rw-r--r--mysql-test/suite/encryption/t/innodb-missing-key.test7
-rw-r--r--mysql-test/suite/encryption/t/innodb-redo-badkey.opt2
-rw-r--r--mysql-test/suite/encryption/t/innodb-redo-badkey.test3
-rw-r--r--mysql-test/suite/encryption/t/innodb-redo-nokeys.test8
-rw-r--r--mysql-test/suite/encryption/t/innodb_encryption-page-compression.test1
-rw-r--r--mysql-test/suite/encryption/t/innodb_onlinealter_encryption.test3
-rw-r--r--mysql-test/suite/federated/federated_partition.result5
-rw-r--r--mysql-test/suite/federated/federated_partition.test1
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc3
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_schemata.inc3
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_triggers.inc3
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_views.inc6
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_storedproc_10.result6
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_trig_03.result22
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_trig_03e.result6
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_views.result8
-rw-r--r--mysql-test/suite/funcs_1/r/is_basics_mixed.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_column_privileges.result1
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns.result1
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_mysql.result56
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result51
-rw-r--r--mysql-test/suite/funcs_1/r/is_key_column_usage.result33
-rw-r--r--mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result33
-rw-r--r--mysql-test/suite/funcs_1/r/is_routines_embedded.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_schema_privileges.result2
-rw-r--r--mysql-test/suite/funcs_1/r/is_schema_privileges_is_mysql_test.result1
-rw-r--r--mysql-test/suite/funcs_1/r/is_schemata.result3
-rw-r--r--mysql-test/suite/funcs_1/r/is_schemata_embedded.result3
-rw-r--r--mysql-test/suite/funcs_1/r/is_statistics.result26
-rw-r--r--mysql-test/suite/funcs_1/r/is_statistics_mysql.result5
-rw-r--r--mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result10
-rw-r--r--mysql-test/suite/funcs_1/r/is_table_constraints.result15
-rw-r--r--mysql-test/suite/funcs_1/r/is_table_constraints_mysql.result2
-rw-r--r--mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result4
-rw-r--r--mysql-test/suite/funcs_1/r/is_table_privileges.result4
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_mysql.result25
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result50
-rw-r--r--mysql-test/suite/funcs_1/r/is_triggers.result5
-rw-r--r--mysql-test/suite/funcs_1/r/is_triggers_embedded.result3
-rw-r--r--mysql-test/suite/funcs_1/r/is_user_privileges.result33
-rw-r--r--mysql-test/suite/funcs_1/r/is_views.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_views_embedded.result6
-rw-r--r--mysql-test/suite/funcs_1/r/memory_storedproc_10.result6
-rw-r--r--mysql-test/suite/funcs_1/r/memory_trig_03.result22
-rw-r--r--mysql-test/suite/funcs_1/r/memory_trig_03e.result6
-rw-r--r--mysql-test/suite/funcs_1/r/memory_views.result8
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_storedproc_10.result6
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_trig_03.result22
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_trig_03e.result6
-rw-r--r--mysql-test/suite/funcs_1/r/myisam_views-big.result8
-rw-r--r--mysql-test/suite/funcs_1/r/storedproc.result63
-rw-r--r--mysql-test/suite/funcs_1/t/is_basics_mixed.test6
-rw-r--r--mysql-test/suite/funcs_1/t/is_statistics.test3
-rw-r--r--mysql-test/suite/funcs_1/t/is_table_constraints.test4
-rw-r--r--mysql-test/suite/galera/r/galera_ist_progress.result9
-rw-r--r--mysql-test/suite/galera/suite.pm6
-rw-r--r--mysql-test/suite/galera_3nodes/suite.pm6
-rw-r--r--mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc2
-rw-r--r--mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result4
-rw-r--r--mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result4
-rw-r--r--mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result2
-rw-r--r--mysql-test/suite/gcol/r/innodb_virtual_rebuild.result8
-rw-r--r--mysql-test/suite/gcol/t/innodb_virtual_basic.test1
-rw-r--r--mysql-test/suite/gcol/t/innodb_virtual_rebuild.test2
-rw-r--r--mysql-test/suite/innodb/include/innodb-page-compression.inc5
-rw-r--r--mysql-test/suite/innodb/r/alter_crash.result6
-rw-r--r--mysql-test/suite/innodb/r/alter_rename_existing.result7
-rw-r--r--mysql-test/suite/innodb/r/create-index-debug.result3
-rw-r--r--mysql-test/suite/innodb/r/ddl_purge.result25
-rw-r--r--mysql-test/suite/innodb/r/dml_purge.result27
-rw-r--r--mysql-test/suite/innodb/r/fake_changes-7000.result6
-rw-r--r--mysql-test/suite/innodb/r/group_commit_crash.result2
-rw-r--r--mysql-test/suite/innodb/r/group_commit_crash_no_optimize_thread.result2
-rw-r--r--mysql-test/suite/innodb/r/innodb-16k.result5
-rw-r--r--mysql-test/suite/innodb/r/innodb-alter-debug.result8
-rw-r--r--mysql-test/suite/innodb/r/innodb-alter-nullable.result4
-rw-r--r--mysql-test/suite/innodb/r/innodb-alter.result21
-rw-r--r--mysql-test/suite/innodb/r/innodb-changed-pages.result72
-rw-r--r--mysql-test/suite/innodb/r/innodb-fk-warnings.result18
-rw-r--r--mysql-test/suite/innodb/r/innodb-fk.result4
-rw-r--r--mysql-test/suite/innodb/r/innodb-fkcheck.result4
-rw-r--r--mysql-test/suite/innodb/r/innodb-flush-changed-page-bitmaps.result4
-rw-r--r--mysql-test/suite/innodb/r/innodb-index-debug.result4
-rw-r--r--mysql-test/suite/innodb/r/innodb-index-online-fk.result5
-rw-r--r--mysql-test/suite/innodb/r/innodb-index-online.result4
-rw-r--r--mysql-test/suite/innodb/r/innodb-page-cleaners.result45
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_default.result2
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_snappy.result2
-rw-r--r--mysql-test/suite/innodb/r/innodb-table-online.result4
-rw-r--r--mysql-test/suite/innodb/r/innodb-timeout.result60
-rw-r--r--mysql-test/suite/innodb/r/innodb-wl5522-debug.result18
-rw-r--r--mysql-test/suite/innodb/r/innodb.result57
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug14147491.result3
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug47167.result32
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug54044.result2
-rw-r--r--mysql-test/suite/innodb/r/innodb_bulk_create_index_flush.result2
-rw-r--r--mysql-test/suite/innodb/r/innodb_file_format.result66
-rw-r--r--mysql-test/suite/innodb/r/innodb_information_schema.result1
-rw-r--r--mysql-test/suite/innodb/r/innodb_mysql.result12
-rw-r--r--mysql-test/suite/innodb/r/innodb_prefix_index_restart_server.result6
-rw-r--r--mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result8
-rw-r--r--mysql-test/suite/innodb/r/innodb_xtradb_compat.result313
-rw-r--r--mysql-test/suite/innodb/r/instant_alter,32k.rdiff113
-rw-r--r--mysql-test/suite/innodb/r/instant_alter,4k.rdiff191
-rw-r--r--mysql-test/suite/innodb/r/instant_alter,64k.rdiff113
-rw-r--r--mysql-test/suite/innodb/r/instant_alter,8k.rdiff191
-rw-r--r--mysql-test/suite/innodb/r/instant_alter.result1221
-rw-r--r--mysql-test/suite/innodb/r/instant_alter_crash.result104
-rw-r--r--mysql-test/suite/innodb/r/instant_alter_debug.result167
-rw-r--r--mysql-test/suite/innodb/r/instant_alter_inject.result66
-rw-r--r--mysql-test/suite/innodb/r/instant_alter_rollback.result91
-rw-r--r--mysql-test/suite/innodb/r/log_corruption.result19
-rw-r--r--mysql-test/suite/innodb/r/monitor.result30
-rw-r--r--mysql-test/suite/innodb/r/mvcc.result1
-rw-r--r--mysql-test/suite/innodb/r/recovery_shutdown.result1
-rw-r--r--mysql-test/suite/innodb/r/rename_table_debug.result23
-rw-r--r--mysql-test/suite/innodb/r/row_format_redundant.result2
-rw-r--r--mysql-test/suite/innodb/r/table_flags,32k.rdiff89
-rw-r--r--mysql-test/suite/innodb/r/table_flags,4k.rdiff92
-rw-r--r--mysql-test/suite/innodb/r/table_flags,64k.rdiff89
-rw-r--r--mysql-test/suite/innodb/r/table_flags,8k.rdiff92
-rw-r--r--mysql-test/suite/innodb/r/table_flags.result40
-rw-r--r--mysql-test/suite/innodb/r/truncate_debug.result6
-rw-r--r--mysql-test/suite/innodb/r/update_time_wl6658.result10
-rw-r--r--mysql-test/suite/innodb/t/alter_rename_existing.test6
-rw-r--r--mysql-test/suite/innodb/t/ddl_purge.test36
-rw-r--r--mysql-test/suite/innodb/t/dml_purge.test59
-rw-r--r--mysql-test/suite/innodb/t/fake_changes-7000.test9
-rw-r--r--mysql-test/suite/innodb/t/group_commit_crash.test4
-rw-r--r--mysql-test/suite/innodb/t/group_commit_crash_no_optimize_thread.test4
-rw-r--r--mysql-test/suite/innodb/t/ibuf_not_empty.test2
-rw-r--r--mysql-test/suite/innodb/t/innodb-16k.test14
-rw-r--r--mysql-test/suite/innodb/t/innodb-alter-debug.test8
-rw-r--r--mysql-test/suite/innodb/t/innodb-alter.test27
-rw-r--r--mysql-test/suite/innodb/t/innodb-changed-pages-master.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb-changed-pages.test63
-rw-r--r--mysql-test/suite/innodb/t/innodb-enlarge-blob.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb-flush-changed-page-bitmaps.opt2
-rw-r--r--mysql-test/suite/innodb/t/innodb-flush-changed-page-bitmaps.test5
-rw-r--r--mysql-test/suite/innodb/t/innodb-index-debug.test2
-rw-r--r--mysql-test/suite/innodb/t/innodb-page-cleaners.test98
-rw-r--r--mysql-test/suite/innodb/t/innodb-timeout.test83
-rw-r--r--mysql-test/suite/innodb/t/innodb-trim.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb.test35
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug14147491.test4
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug47167.test51
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug54044.test2
-rw-r--r--mysql-test/suite/innodb/t/innodb_bulk_create_index_flush.test2
-rw-r--r--mysql-test/suite/innodb/t/innodb_default_row_format.combinations4
-rw-r--r--mysql-test/suite/innodb/t/innodb_default_row_format.inc2
-rw-r--r--mysql-test/suite/innodb/t/innodb_file_format.test44
-rw-r--r--mysql-test/suite/innodb/t/innodb_force_recovery.test1
-rw-r--r--mysql-test/suite/innodb/t/innodb_mysql-master.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_prefix_index_restart_server.test9
-rw-r--r--mysql-test/suite/innodb/t/innodb_xtradb_compat-master.opt38
-rw-r--r--mysql-test/suite/innodb/t/innodb_xtradb_compat.test160
-rw-r--r--mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt2
-rw-r--r--mysql-test/suite/innodb/t/innodb_zip_innochecksum2.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_zip_innochecksum3.opt1
-rw-r--r--mysql-test/suite/innodb/t/instant_alter.opt1
-rw-r--r--mysql-test/suite/innodb/t/instant_alter.test320
-rw-r--r--mysql-test/suite/innodb/t/instant_alter_crash.test128
-rw-r--r--mysql-test/suite/innodb/t/instant_alter_debug.test181
-rw-r--r--mysql-test/suite/innodb/t/instant_alter_inject.test46
-rw-r--r--mysql-test/suite/innodb/t/instant_alter_rollback.test73
-rw-r--r--mysql-test/suite/innodb/t/log_corruption.test67
-rw-r--r--mysql-test/suite/innodb/t/monitor.test18
-rw-r--r--mysql-test/suite/innodb/t/recovery_shutdown.test3
-rw-r--r--mysql-test/suite/innodb/t/rename_table_debug.test33
-rw-r--r--mysql-test/suite/innodb/t/row_format_redundant.test6
-rw-r--r--mysql-test/suite/innodb/t/table_flags.test5
-rw-r--r--mysql-test/suite/innodb/t/truncate_debug.test7
-rw-r--r--mysql-test/suite/innodb/t/update_time_wl6658.test5
-rw-r--r--mysql-test/suite/innodb_fts/r/fulltext.result2
-rw-r--r--mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result14
-rw-r--r--mysql-test/suite/innodb_fts/r/misc_debug.result2
-rw-r--r--mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test13
-rw-r--r--mysql-test/suite/innodb_gis/r/alter_spatial_index.result51
-rw-r--r--mysql-test/suite/innodb_gis/r/point_basic.result6
-rw-r--r--mysql-test/suite/innodb_gis/r/rollback.result2
-rw-r--r--mysql-test/suite/innodb_gis/t/alter_spatial_index.test21
-rw-r--r--mysql-test/suite/innodb_gis/t/rollback.test3
-rw-r--r--mysql-test/suite/innodb_zip/include/innodb_wl6501_scale.inc2
-rw-r--r--mysql-test/suite/innodb_zip/r/16k.result24
-rw-r--r--mysql-test/suite/innodb_zip/r/4k.result22
-rw-r--r--mysql-test/suite/innodb_zip/r/8k.result21
-rw-r--r--mysql-test/suite/innodb_zip/r/bug56680.result3
-rw-r--r--mysql-test/suite/innodb_zip/r/cmp_per_index.result2
-rw-r--r--mysql-test/suite/innodb_zip/r/create_options.result107
-rw-r--r--mysql-test/suite/innodb_zip/r/index_large_prefix.result82
-rw-r--r--mysql-test/suite/innodb_zip/r/index_large_prefix_4k.result40
-rw-r--r--mysql-test/suite/innodb_zip/r/index_large_prefix_8k.result67
-rw-r--r--mysql-test/suite/innodb_zip/r/innodb-zip.result143
-rw-r--r--mysql-test/suite/innodb_zip/r/prefix_index_liftedlimit.result22
-rw-r--r--mysql-test/suite/innodb_zip/r/wl6501_scale_1.result9
-rw-r--r--mysql-test/suite/innodb_zip/t/16k.test9
-rw-r--r--mysql-test/suite/innodb_zip/t/4k.test9
-rw-r--r--mysql-test/suite/innodb_zip/t/8k.test9
-rw-r--r--mysql-test/suite/innodb_zip/t/bug56680.test16
-rw-r--r--mysql-test/suite/innodb_zip/t/cmp_per_index.test4
-rw-r--r--mysql-test/suite/innodb_zip/t/create_options.test55
-rw-r--r--mysql-test/suite/innodb_zip/t/index_large_prefix.test33
-rw-r--r--mysql-test/suite/innodb_zip/t/index_large_prefix_4k.test11
-rw-r--r--mysql-test/suite/innodb_zip/t/index_large_prefix_8k.test27
-rw-r--r--mysql-test/suite/innodb_zip/t/innodb-zip.test101
-rw-r--r--mysql-test/suite/innodb_zip/t/prefix_index_liftedlimit.test33
-rw-r--r--mysql-test/suite/innodb_zip/t/recover.test3
-rw-r--r--mysql-test/suite/jp/r/jp_create_db_sjis.result2
-rw-r--r--mysql-test/suite/jp/r/jp_create_db_ucs2.result2
-rw-r--r--mysql-test/suite/jp/r/jp_create_db_ujis.result2
-rw-r--r--mysql-test/suite/jp/r/jp_create_db_utf8.result2
-rw-r--r--mysql-test/suite/jp/t/jp_create_db_sjis.test2
-rw-r--r--mysql-test/suite/jp/t/jp_create_db_ucs2.test2
-rw-r--r--mysql-test/suite/jp/t/jp_create_db_ujis.test2
-rw-r--r--mysql-test/suite/jp/t/jp_create_db_utf8.test2
-rw-r--r--mysql-test/suite/mariabackup/suite.opt2
-rw-r--r--mysql-test/suite/mariabackup/system_versioning.result49
-rw-r--r--mysql-test/suite/mariabackup/system_versioning.test50
-rw-r--r--mysql-test/suite/mariabackup/xb_compressed_encrypted.opt1
-rw-r--r--mysql-test/suite/multi_source/gtid_ignore_duplicates.result5
-rw-r--r--mysql-test/suite/multi_source/gtid_ignore_duplicates.test5
-rw-r--r--mysql-test/suite/multi_source/gtid_slave_pos.result155
-rw-r--r--mysql-test/suite/multi_source/gtid_slave_pos.test173
-rw-r--r--mysql-test/suite/parts/r/cache.result15
-rw-r--r--mysql-test/suite/parts/r/optimizer.result4
-rw-r--r--mysql-test/suite/parts/r/partition_open.result8
-rw-r--r--mysql-test/suite/parts/t/cache.test22
-rw-r--r--mysql-test/suite/parts/t/partition_debug_innodb-master.opt2
-rw-r--r--mysql-test/suite/parts/t/partition_exch_qa_12.test1
-rw-r--r--mysql-test/suite/parts/t/partition_open.test24
-rw-r--r--mysql-test/suite/percona/disabled.def45
-rw-r--r--mysql-test/suite/percona/have_response_time_distribution.inc4
-rw-r--r--mysql-test/suite/percona/have_response_time_distribution.require2
-rw-r--r--mysql-test/suite/percona/innodb_sys_index.result11
-rw-r--r--mysql-test/suite/percona/innodb_sys_index.test19
-rw-r--r--mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error-master.opt1
-rw-r--r--mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error.result16
-rw-r--r--mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error.test54
-rw-r--r--mysql-test/suite/percona/percona_flush_contiguous_neighbors-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_flush_contiguous_neighbors.result21
-rw-r--r--mysql-test/suite/percona/percona_flush_contiguous_neighbors.test37
-rw-r--r--mysql-test/suite/percona/percona_innodb_buffer_pool_shm-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_innodb_buffer_pool_shm.result4
-rw-r--r--mysql-test/suite/percona/percona_innodb_buffer_pool_shm.test2
-rw-r--r--mysql-test/suite/percona/percona_innodb_deadlock_count.result28
-rw-r--r--mysql-test/suite/percona/percona_innodb_deadlock_count.test51
-rw-r--r--mysql-test/suite/percona/percona_innodb_expand_fast_index_creation.result64
-rw-r--r--mysql-test/suite/percona/percona_innodb_expand_fast_index_creation.test45
-rw-r--r--mysql-test/suite/percona/percona_innodb_fake_changes.result55
-rw-r--r--mysql-test/suite/percona/percona_innodb_fake_changes.test49
-rw-r--r--mysql-test/suite/percona/percona_innodb_fake_changes_locks.result23
-rw-r--r--mysql-test/suite/percona/percona_innodb_fake_changes_locks.test24
-rw-r--r--mysql-test/suite/percona/percona_innodb_kill_idle_trx.result41
-rw-r--r--mysql-test/suite/percona/percona_innodb_kill_idle_trx.test28
-rw-r--r--mysql-test/suite/percona/percona_innodb_kill_idle_trx_locks.result45
-rw-r--r--mysql-test/suite/percona/percona_innodb_kill_idle_trx_locks.test31
-rw-r--r--mysql-test/suite/percona/percona_innodb_kill_idle_trx_show.inc2
-rw-r--r--mysql-test/suite/percona/percona_log_warnings_suppress-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_log_warnings_suppress.result31
-rw-r--r--mysql-test/suite/percona/percona_log_warnings_suppress.test47
-rw-r--r--mysql-test/suite/percona/percona_processlist_row_stats.result70
-rw-r--r--mysql-test/suite/percona/percona_processlist_row_stats.test79
-rw-r--r--mysql-test/suite/percona/percona_query_cache_with_comments.inc.backup88
-rw-r--r--mysql-test/suite/percona/percona_query_response_time-replication.result727
-rw-r--r--mysql-test/suite/percona/percona_query_response_time-replication.test28
-rw-r--r--mysql-test/suite/percona/percona_query_response_time-stored.result544
-rw-r--r--mysql-test/suite/percona/percona_query_response_time-stored.test36
-rw-r--r--mysql-test/suite/percona/percona_query_response_time.result1307
-rw-r--r--mysql-test/suite/percona/percona_query_response_time.test20
-rw-r--r--mysql-test/suite/percona/percona_query_response_time_flush.inc1
-rw-r--r--mysql-test/suite/percona/percona_query_response_time_show.inc8
-rw-r--r--mysql-test/suite/percona/percona_query_response_time_sleep.inc19
-rw-r--r--mysql-test/suite/percona/percona_server_variables.inc3
-rw-r--r--mysql-test/suite/percona/percona_server_variables_debug.result382
-rw-r--r--mysql-test/suite/percona/percona_server_variables_debug.test2
-rw-r--r--mysql-test/suite/percona/percona_server_variables_release.result377
-rw-r--r--mysql-test/suite/percona/percona_server_variables_release.test2
-rw-r--r--mysql-test/suite/percona/percona_show_temp_tables.result58
-rw-r--r--mysql-test/suite/percona/percona_show_temp_tables.test65
-rw-r--r--mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl.result3
-rw-r--r--mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl.test1
-rw-r--r--mysql-test/suite/percona/percona_slow_extended-use_global_control-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_slow_extended-use_global_control.result12
-rw-r--r--mysql-test/suite/percona/percona_slow_extended-use_global_control.test12
-rw-r--r--mysql-test/suite/percona/percona_sync_flush.result35
-rw-r--r--mysql-test/suite/percona/percona_sync_flush.test33
-rw-r--r--mysql-test/suite/percona/percona_xtradb_bug317074.result5
-rw-r--r--mysql-test/suite/percona/percona_xtradb_bug317074.test48
-rw-r--r--mysql-test/suite/percona/profiling_slow.patch/percona_bug643149.result21
-rw-r--r--mysql-test/suite/percona/profiling_slow.patch/percona_bug643149.test49
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.inc117
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.inc.backup88
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.result1058
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.test5
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_begin.inc12
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_clear.inc5
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_crash.result21
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_crash.test22
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_disable.result1057
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_disable.test3
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_end.inc3
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_eval.inc7
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_prepared_statements.result396
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_prepared_statements.test208
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_show.inc8
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_status_wait_query_cache_mutex.result20
-rw-r--r--mysql-test/suite/percona/query_cache_enhance.patch/percona_status_wait_query_cache_mutex.test35
-rw-r--r--mysql-test/suite/percona/query_response_time-replication.inc57
-rw-r--r--mysql-test/suite/percona/query_response_time-stored.inc37
-rw-r--r--mysql-test/suite/percona/query_response_time.inc43
-rw-r--r--mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-replication.result70
-rw-r--r--mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-replication.test57
-rw-r--r--mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-stored.result313
-rw-r--r--mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-stored.test90
-rw-r--r--mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time.result567
-rw-r--r--mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time.test68
-rw-r--r--mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_flush.inc1
-rw-r--r--mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_show.inc8
-rw-r--r--mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_sleep.inc19
-rw-r--r--mysql-test/suite/percona/show_slave_status_nolock.patch/percona_show_slave_status_nolock.result69
-rw-r--r--mysql-test/suite/percona/show_slave_status_nolock.patch/percona_show_slave_status_nolock.test90
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/grep.inc16
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined.result18
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined.test6
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2.result12
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2.test4
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow.result12
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow.test12
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter.result25
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter.test32
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl.result3
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl.test1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl.result3
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl.test1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl.result9
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl.test3
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity.result9
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity.test12
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time.result24
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time.test23
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended.result13
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended.test23
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit.result25
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit.test32
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats-slave.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats.result22
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats.test51
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time-slave.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time.result89
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time.test107
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-slave.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements.result94
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements.test133
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl.result3
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl.test1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl.result3
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl.test1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-master.opt1
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time.result46
-rw-r--r--mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time.test40
-rw-r--r--mysql-test/suite/percona/sql_no_fcache.patch/percona_sql_no_fcache.result12
-rw-r--r--mysql-test/suite/percona/sql_no_fcache.patch/percona_sql_no_fcache.test11
-rw-r--r--mysql-test/suite/percona/userstat_bug602047.result15
-rw-r--r--mysql-test/suite/percona/userstat_bug602047.test12
-rw-r--r--mysql-test/suite/perfschema/r/dml_handler.result9
-rw-r--r--mysql-test/suite/perfschema/r/dml_setup_instruments.result6
-rw-r--r--mysql-test/suite/perfschema/r/information_schema.result45
-rw-r--r--mysql-test/suite/perfschema/r/ortho_iter.result3
-rw-r--r--mysql-test/suite/perfschema/r/relaylog.result10
-rw-r--r--mysql-test/suite/perfschema/r/threads_innodb,xtradb.rdiff-disabled10
-rw-r--r--mysql-test/suite/perfschema/r/threads_mysql.result4
-rw-r--r--mysql-test/suite/perfschema/t/dml_handler.test3
-rw-r--r--mysql-test/suite/perfschema/t/information_schema.test30
-rw-r--r--mysql-test/suite/perfschema/t/ortho_iter.test3
-rw-r--r--mysql-test/suite/plugins/r/qc_info.result22
-rw-r--r--mysql-test/suite/plugins/r/qc_info_priv.result6
-rw-r--r--mysql-test/suite/plugins/t/qc_info.test6
-rw-r--r--mysql-test/suite/roles/create_and_drop_role_invalid_user_table.result4
-rw-r--r--mysql-test/suite/roles/set_role-recursive.result8
-rw-r--r--mysql-test/suite/roles/set_role-simple.result4
-rw-r--r--mysql-test/suite/roles/show_create_database-10463.result8
-rw-r--r--mysql-test/suite/roles/show_create_database-10463.test8
-rw-r--r--mysql-test/suite/rpl/r/rpl_alter_instant.result66
-rw-r--r--mysql-test/suite/rpl/r/rpl_deadlock_innodb.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_events.result17
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_crash.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_ignored.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_mdev4484.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_stop_start.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_until.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_mdev10863.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_mdev12179.result265
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync_after_sync.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync_after_sync_row.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync_event.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync_event_after_sync.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync_uninstall_plugin.result73
-rw-r--r--mysql-test/suite/rpl/r/rpl_semisync_ali_issues.result353
-rw-r--r--mysql-test/suite/rpl/r/rpl_sp.result32
-rw-r--r--mysql-test/suite/rpl/r/rpl_stop_slave.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_update.result16
-rw-r--r--mysql-test/suite/rpl/r/rpl_view_debug.result2
-rw-r--r--mysql-test/suite/rpl/r/show_status_stop_slave_race-7126.result1
-rw-r--r--mysql-test/suite/rpl/t/rpl_alter_instant.test50
-rw-r--r--mysql-test/suite/rpl/t/rpl_events.test154
-rw-r--r--mysql-test/suite/rpl/t/rpl_gtid_crash.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_gtid_errorhandling.test8
-rw-r--r--mysql-test/suite/rpl/t/rpl_gtid_ignored.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_gtid_mdev4484.test16
-rw-r--r--mysql-test/suite/rpl/t/rpl_gtid_stop_start.test18
-rw-r--r--mysql-test/suite/rpl/t/rpl_gtid_until.test3
-rw-r--r--mysql-test/suite/rpl/t/rpl_mdev10863.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_mdev12179.test280
-rw-r--r--mysql-test/suite/rpl/t/rpl_mdev359.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_mdev6020.test3
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync_event.test3
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync_skip_repl.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync_uninstall_plugin.test132
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync_wait_point.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_semisync_ali_issues-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_semisync_ali_issues-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_semisync_ali_issues.test410
-rw-r--r--mysql-test/suite/rpl/t/rpl_stop_slave.test12
-rw-r--r--mysql-test/suite/rpl/t/rpl_sync-slave.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_update.test15
-rw-r--r--mysql-test/suite/rpl/t/semisync_future-7591.test1
-rw-r--r--mysql-test/suite/rpl/t/semisync_memleak_4066.test1
-rw-r--r--mysql-test/suite/rpl/t/show_status_stop_slave_race-7126.test1
-rw-r--r--mysql-test/suite/sql_sequence/alter_notembedded.result38
-rw-r--r--mysql-test/suite/sql_sequence/alter_notembedded.test37
-rw-r--r--mysql-test/suite/sql_sequence/default.result187
-rw-r--r--mysql-test/suite/sql_sequence/default.test125
-rw-r--r--mysql-test/suite/sql_sequence/gtid.result8
-rw-r--r--mysql-test/suite/sql_sequence/gtid.test3
-rw-r--r--mysql-test/suite/sql_sequence/other.result19
-rw-r--r--mysql-test/suite/sql_sequence/other.test17
-rw-r--r--mysql-test/suite/sql_sequence/replication.result43
-rw-r--r--mysql-test/suite/sql_sequence/replication.test26
-rw-r--r--mysql-test/suite/sys_vars/disabled.def1
-rw-r--r--mysql-test/suite/sys_vars/inc/sysvars_server.inc2
-rw-r--r--mysql-test/suite/sys_vars/r/bind_address_basic.result57
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_adaptive_hash_index_partitions_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_blocking_buffer_pool_restore_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_buffer_pool_populate_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_buffer_pool_restore_at_startup_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_buffer_pool_shm_checksum_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_buffer_pool_shm_key_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_checkpoint_age_target_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_corrupt_table_action_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_dict_size_limit_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_doublewrite_file_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_fake_changes_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_fast_checksum_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_file_format_basic.result65
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result80
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_file_format_max_basic.result71
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_flush_checkpoint_debug_basic.result15
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_ibuf_accel_rate_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_ibuf_active_contract_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_ibuf_max_size_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_import_table_from_xtrabackup_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_instrument_semaphores_basic.result57
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_kill_idle_transaction_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_large_prefix_basic.result102
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_lazy_drop_table_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result4
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_locking_fake_changes_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_log_block_size_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_max_bitmap_file_size_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_max_changed_pages_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_mtflush_threads_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_page_cleaners_basic.result37
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_print_lock_wait_timeout_info_basic.result104
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_read_ahead_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_recovery_stats_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_recovery_update_relay_log_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_sched_priority_cleaner_basic.result30
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_sched_priority_io_basic.result30
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_sched_priority_master_basic.result30
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_sched_priority_purge_basic.result30
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_show_locks_held_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_show_verbose_locks_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result16
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_stats_auto_update_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_stats_update_need_lock_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_support_xa_basic.result227
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_support_xa_func.result90
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_thread_concurrency_timer_based_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_track_changed_pages_basic.result19
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_track_redo_log_now_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_use_global_flush_log_at_trx_commit_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_use_mtflush_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_use_stacktrace_basic.result48
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_use_sys_stats_table_basic.result1
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_use_trim_basic.result37
-rw-r--r--mysql-test/suite/sys_vars/r/lock_wait_timeout_basic.result16
-rw-r--r--mysql-test/suite/sys_vars/r/log_disabled_statements_basic.result60
-rw-r--r--mysql-test/suite/sys_vars/r/log_disabled_statements_func.result82
-rw-r--r--mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result46
-rw-r--r--mysql-test/suite/sys_vars/r/log_result_errors_basic.result148
-rw-r--r--mysql-test/suite/sys_vars/r/log_slow_admin_statements_func.result36
-rw-r--r--mysql-test/suite/sys_vars/r/log_slow_disabled_statements_basic.result72
-rw-r--r--mysql-test/suite/sys_vars/r/log_slow_disabled_statements_func.result166
-rw-r--r--mysql-test/suite/sys_vars/r/log_slow_filter_basic.result24
-rw-r--r--mysql-test/suite/sys_vars/r/optimizer_switch_basic.result36
-rw-r--r--mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result6
-rw-r--r--mysql-test/suite/sys_vars/r/session_track_system_variables_basic.result22
-rw-r--r--mysql-test/suite/sys_vars/r/slave_transaction_retry_errors.result21
-rw-r--r--mysql-test/suite/sys_vars/r/slave_transaction_retry_interval_basic.result126
-rw-r--r--mysql-test/suite/sys_vars/r/sql_mode_basic.result16
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_debug,32bit.rdiff4
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_debug.result15
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_innodb,32bit,xtradb.rdiff-disabled1257
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_innodb,32bit.rdiff282
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_innodb,xtradb.rdiff-disabled688
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_innodb.result658
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff300
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_embedded.result310
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff362
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result488
-rw-r--r--mysql-test/suite/sys_vars/r/tcp_keepalive_time.result9
-rw-r--r--mysql-test/suite/sys_vars/t/all_vars.test2
-rw-r--r--mysql-test/suite/sys_vars/t/bind_address_basic.test95
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_adaptive_hash_index_partitions_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_blocking_buffer_pool_restore_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_buffer_pool_populate_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_buffer_pool_restore_at_startup_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_buffer_pool_shm_checksum_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_buffer_pool_shm_key_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_checkpoint_age_target_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_corrupt_table_action_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_dict_size_limit_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_doublewrite_file_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_fake_changes_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_fast_checksum_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_file_format_basic.test61
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test101
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_file_format_max_basic.test66
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_flush_checkpoint_debug_basic.test12
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_ibuf_accel_rate_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_ibuf_active_contract_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_ibuf_max_size_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_import_table_from_xtrabackup_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_instrument_semaphores_basic.test42
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_kill_idle_transaction_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_large_prefix_basic.test82
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_lazy_drop_table_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_locking_fake_changes_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_log_block_size_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_max_bitmap_file_size_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_max_changed_pages_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_mtflush_threads_basic.test21
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_page_cleaners_basic.test34
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_print_lock_wait_timeout_info_basic.test89
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_read_ahead_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_recovery_stats_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_recovery_update_relay_log_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_sched_priority_cleaner_basic.test51
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_sched_priority_io_basic.test44
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_sched_priority_master_basic.test44
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_sched_priority_purge_basic.test44
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_show_locks_held_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_show_verbose_locks_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_stats_auto_update_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_stats_update_need_lock_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_support_xa_basic.test240
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_support_xa_func.test135
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_thread_concurrency_timer_based_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_tmpdir_basic.test5
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_track_changed_pages_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_track_redo_log_now_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_use_global_flush_log_at_trx_commit_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_use_mtflush_basic.test22
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_use_stacktrace_basic.test56
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_use_sys_stats_table_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_use_trim_basic.test36
-rw-r--r--mysql-test/suite/sys_vars/t/log_disabled_statements_basic.test51
-rw-r--r--mysql-test/suite/sys_vars/t/log_disabled_statements_func-master.opt2
-rw-r--r--mysql-test/suite/sys_vars/t/log_disabled_statements_func.test61
-rw-r--r--mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test53
-rw-r--r--mysql-test/suite/sys_vars/t/log_slow_admin_statements_func.test29
-rw-r--r--mysql-test/suite/sys_vars/t/log_slow_disabled_statements_basic.test57
-rw-r--r--mysql-test/suite/sys_vars/t/log_slow_disabled_statements_func.test92
-rw-r--r--mysql-test/suite/sys_vars/t/log_slow_filter_basic.test6
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test30
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_point_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test1
-rw-r--r--mysql-test/suite/sys_vars/t/slave_transaction_retry_errors-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/slave_transaction_retry_errors.test19
-rw-r--r--mysql-test/suite/sys_vars/t/slave_transaction_retry_interval_basic.test190
-rw-r--r--mysql-test/suite/sys_vars/t/sql_mode_basic.test4
-rw-r--r--mysql-test/suite/sys_vars/t/sysvars_debug.test1
-rw-r--r--mysql-test/suite/sys_vars/t/tcp_keepalive_time.test11
-rw-r--r--mysql-test/suite/vcol/r/vcol_blocked_sql_funcs.result4
-rw-r--r--mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_main.inc2
-rw-r--r--mysql-test/suite/versioning/common.inc118
-rw-r--r--mysql-test/suite/versioning/common.opt1
-rw-r--r--mysql-test/suite/versioning/common_finish.inc10
-rw-r--r--mysql-test/suite/versioning/disabled.def (renamed from mysql-test/suite/handler/disabled.def)4
-rw-r--r--mysql-test/suite/versioning/engines.combinations8
-rw-r--r--mysql-test/suite/versioning/engines.inc1
-rw-r--r--mysql-test/suite/versioning/key_type.combinations2
-rw-r--r--mysql-test/suite/versioning/key_type.inc23
-rw-r--r--mysql-test/suite/versioning/r/alter.result484
-rw-r--r--mysql-test/suite/versioning/r/auto_increment.result119
-rw-r--r--mysql-test/suite/versioning/r/commit_id.result98
-rw-r--r--mysql-test/suite/versioning/r/create.result470
-rw-r--r--mysql-test/suite/versioning/r/cte.result118
-rw-r--r--mysql-test/suite/versioning/r/ddl.result211
-rw-r--r--mysql-test/suite/versioning/r/debug.result54
-rw-r--r--mysql-test/suite/versioning/r/delete.result320
-rw-r--r--mysql-test/suite/versioning/r/derived.result295
-rw-r--r--mysql-test/suite/versioning/r/foreign.result232
-rw-r--r--mysql-test/suite/versioning/r/insert.result373
-rw-r--r--mysql-test/suite/versioning/r/online.result34
-rw-r--r--mysql-test/suite/versioning/r/optimized.result64
-rw-r--r--mysql-test/suite/versioning/r/partition.result420
-rw-r--r--mysql-test/suite/versioning/r/replace.result10
-rw-r--r--mysql-test/suite/versioning/r/rpl.result118
-rw-r--r--mysql-test/suite/versioning/r/select.result515
-rw-r--r--mysql-test/suite/versioning/r/select2,myisam.rdiff38
-rw-r--r--mysql-test/suite/versioning/r/select2.result338
-rw-r--r--mysql-test/suite/versioning/r/simple.result73
-rw-r--r--mysql-test/suite/versioning/r/sysvars.result129
-rw-r--r--mysql-test/suite/versioning/r/truncate.result71
-rw-r--r--mysql-test/suite/versioning/r/truncate_privilege.result33
-rw-r--r--mysql-test/suite/versioning/r/trx_id.result72
-rw-r--r--mysql-test/suite/versioning/r/update.result625
-rw-r--r--mysql-test/suite/versioning/r/view.result137
-rw-r--r--mysql-test/suite/versioning/r/vtmd.result365
-rw-r--r--mysql-test/suite/versioning/r/vtmd_show.result229
-rw-r--r--mysql-test/suite/versioning/t/alter.test414
-rw-r--r--mysql-test/suite/versioning/t/auto_increment.test68
-rw-r--r--mysql-test/suite/versioning/t/commit_id.test94
-rw-r--r--mysql-test/suite/versioning/t/create.test367
-rw-r--r--mysql-test/suite/versioning/t/cte.test101
-rw-r--r--mysql-test/suite/versioning/t/ddl.test105
-rw-r--r--mysql-test/suite/versioning/t/debug.test35
-rw-r--r--mysql-test/suite/versioning/t/delete.test129
-rw-r--r--mysql-test/suite/versioning/t/derived.test236
-rw-r--r--mysql-test/suite/versioning/t/engines.combinations8
-rw-r--r--mysql-test/suite/versioning/t/foreign.combinations5
-rw-r--r--mysql-test/suite/versioning/t/foreign.test282
-rw-r--r--mysql-test/suite/versioning/t/insert.test271
-rw-r--r--mysql-test/suite/versioning/t/online.test42
-rw-r--r--mysql-test/suite/versioning/t/optimized.test33
-rw-r--r--mysql-test/suite/versioning/t/partition.combinations5
-rw-r--r--mysql-test/suite/versioning/t/partition.opt1
-rw-r--r--mysql-test/suite/versioning/t/partition.test373
-rw-r--r--mysql-test/suite/versioning/t/replace.test13
-rw-r--r--mysql-test/suite/versioning/t/rpl.test108
-rw-r--r--mysql-test/suite/versioning/t/select.test306
-rw-r--r--mysql-test/suite/versioning/t/select2.test211
-rw-r--r--mysql-test/suite/versioning/t/simple.test73
-rw-r--r--mysql-test/suite/versioning/t/sysvars.test87
-rw-r--r--mysql-test/suite/versioning/t/truncate.opt1
-rw-r--r--mysql-test/suite/versioning/t/truncate.test72
-rw-r--r--mysql-test/suite/versioning/t/truncate_privilege.test41
-rw-r--r--mysql-test/suite/versioning/t/trx_id.test75
-rw-r--r--mysql-test/suite/versioning/t/update.test288
-rw-r--r--mysql-test/suite/versioning/t/view.test116
-rw-r--r--mysql-test/suite/versioning/t/vtmd.opt1
-rw-r--r--mysql-test/suite/versioning/t/vtmd.test204
-rw-r--r--mysql-test/suite/versioning/t/vtmd_show.opt1
-rw-r--r--mysql-test/suite/versioning/t/vtmd_show.test90
-rw-r--r--mysql-test/suite/versioning/wait_system_clock.inc10
-rw-r--r--mysql-test/suite/wsrep/suite.pm6
-rw-r--r--mysql-test/t/alter_table.test10
-rw-r--r--mysql-test/t/bootstrap.test2
-rw-r--r--mysql-test/t/column_compression.inc125
-rw-r--r--mysql-test/t/column_compression.test81
-rw-r--r--mysql-test/t/column_compression_parts.test182
-rw-r--r--mysql-test/t/column_compression_rpl.test16
-rw-r--r--mysql-test/t/compound.test3
-rw-r--r--mysql-test/t/create.test1
-rw-r--r--mysql-test/t/cte_recursive.test12
-rw-r--r--mysql-test/t/ctype_utf8mb4_innodb-master.opt1
-rw-r--r--mysql-test/t/custom_aggregate_functions.test785
-rw-r--r--mysql-test/t/default.test4
-rw-r--r--mysql-test/t/derived_cond_pushdown.test809
-rw-r--r--mysql-test/t/errors.test10
-rw-r--r--mysql-test/t/func_gconcat.test73
-rw-r--r--mysql-test/t/func_group_innodb.test2
-rw-r--r--mysql-test/t/func_misc.test2
-rw-r--r--mysql-test/t/gis.test1
-rw-r--r--mysql-test/t/group_by_null.test2
-rw-r--r--mysql-test/t/information_schema-big.test8
-rw-r--r--mysql-test/t/information_schema.test40
-rw-r--r--mysql-test/t/information_schema2.test2
-rw-r--r--mysql-test/t/information_schema_db.test4
-rw-r--r--mysql-test/t/information_schema_inno.test6
-rw-r--r--mysql-test/t/information_schema_part.test2
-rw-r--r--mysql-test/t/insert_update.test8
-rw-r--r--mysql-test/t/invisible_binlog.test32
-rw-r--r--mysql-test/t/invisible_field.test240
-rw-r--r--mysql-test/t/invisible_field_debug.test272
-rw-r--r--mysql-test/t/mysql_client_test-master.opt1
-rw-r--r--mysql-test/t/mysql_client_test.test1
-rw-r--r--mysql-test/t/mysql_client_test_comp-master.opt1
-rw-r--r--mysql-test/t/mysql_client_test_comp.test2
-rw-r--r--mysql-test/t/mysql_client_test_nonblock-master.opt1
-rw-r--r--mysql-test/t/mysql_client_test_nonblock.test1
-rw-r--r--mysql-test/t/mysql_upgrade.test22
-rw-r--r--mysql-test/t/mysql_upgrade_noengine.test15
-rw-r--r--mysql-test/t/mysqld--help.test4
-rw-r--r--mysql-test/t/mysqldump.test45
-rw-r--r--mysql-test/t/opt_tvc.test342
-rw-r--r--mysql-test/t/partition.test2
-rw-r--r--mysql-test/t/partition_alter.test11
-rw-r--r--mysql-test/t/partition_exchange.test24
-rw-r--r--mysql-test/t/partition_innodb-master.opt1
-rw-r--r--mysql-test/t/ps.test2
-rw-r--r--mysql-test/t/range.test5
-rw-r--r--mysql-test/t/show_check.test58
-rw-r--r--mysql-test/t/simultaneous_assignment.test204
-rw-r--r--mysql-test/t/sp-big.test40
-rw-r--r--mysql-test/t/sp-destruct.test2
-rw-r--r--mysql-test/t/sp-error.test2
-rw-r--r--mysql-test/t/sp.test39
-rw-r--r--mysql-test/t/sql_mode.test2
-rw-r--r--mysql-test/t/status.test43
-rw-r--r--mysql-test/t/subselect_sj.test1
-rw-r--r--mysql-test/t/system_mysql_db_fix40123.test2
-rw-r--r--mysql-test/t/system_mysql_db_fix50030.test2
-rw-r--r--mysql-test/t/system_mysql_db_fix50117.test2
-rw-r--r--mysql-test/t/table_value_constr.test1046
-rw-r--r--mysql-test/t/timeout.test60
-rw-r--r--mysql-test/t/transaction_timeout.test54
-rw-r--r--mysql-test/t/type_datetime_hires.test1
-rw-r--r--mysql-test/t/variables.test2
-rw-r--r--mysql-test/t/win_percentile.test104
-rw-r--r--mysql-test/unstable-tests614
-rw-r--r--mysql-test/valgrind.supp2
952 files changed, 41551 insertions, 20753 deletions
diff --git a/mysql-test/collections/buildbot_suites.bat b/mysql-test/collections/buildbot_suites.bat
index 40b1aceca10..8e468e297ed 100644
--- a/mysql-test/collections/buildbot_suites.bat
+++ b/mysql-test/collections/buildbot_suites.bat
@@ -1,6 +1,7 @@
perl mysql-test-run.pl --verbose-restart --force --suite-timeout=120 --max-test-fail=10 --retry=3 --parallel=4 --suite=^
main,^
innodb,^
+versioning,^
plugins,^
mariabackup,^
roles,^
diff --git a/mysql-test/extra/rpl_tests/rpl_deadlock.test b/mysql-test/extra/rpl_tests/rpl_deadlock.test
index f7a1e71d5d9..e9191d5fcd8 100644
--- a/mysql-test/extra/rpl_tests/rpl_deadlock.test
+++ b/mysql-test/extra/rpl_tests/rpl_deadlock.test
@@ -46,6 +46,9 @@ BEGIN;
SELECT * FROM t1 FOR UPDATE;
# Save variable 'Slave_retried_transactions' before deadlock
let $slave_retried_transactions= query_get_value(SHOW GLOBAL STATUS LIKE 'Slave_retried_transactions', Value, 1);
+# Run the START SLAVE in a separate connection. Otherwise it terminates
+# the SELECT FOR UPDATE transaction (START SLAVE does implicit COMMIT!).
+connection slave1;
START SLAVE;
# Wait until SQL thread blocked: variable 'Slave_retried_transactions' will incremented
let $status_var= Slave_retried_transactions;
@@ -53,6 +56,7 @@ let $status_var_value= $slave_retried_transactions;
let $status_type= GLOBAL;
let $status_var_comparsion= >;
--source include/wait_for_status_var.inc
+connection slave;
SELECT COUNT(*) FROM t2;
COMMIT;
sync_with_master;
@@ -78,9 +82,11 @@ BEGIN;
# Hold lock
SELECT * FROM t1 FOR UPDATE;
# Wait until slave stopped with error 'Lock wait timeout exceeded'
+connection slave1;
START SLAVE;
let $slave_sql_errno= 1205;
--source include/wait_for_slave_sql_error.inc
+connection slave;
SELECT COUNT(*) FROM t2;
COMMIT;
--source include/start_slave.inc
@@ -109,9 +115,11 @@ BEGIN;
# Hold lock
SELECT * FROM t1 FOR UPDATE;
# Wait until slave stopped with error 'Lock wait timeout exceeded'
+connection slave1;
START SLAVE;
let $slave_sql_errno= 1205;
--source include/wait_for_slave_sql_error.inc
+connection slave;
SELECT COUNT(*) FROM t2;
COMMIT;
--source include/start_slave.inc
diff --git a/mysql-test/extra/rpl_tests/rpl_semi_sync.inc b/mysql-test/extra/rpl_tests/rpl_semi_sync.inc
index 12053c54f4e..393b49372e1 100644
--- a/mysql-test/extra/rpl_tests/rpl_semi_sync.inc
+++ b/mysql-test/extra/rpl_tests/rpl_semi_sync.inc
@@ -4,7 +4,6 @@
# Please check all dependent tests after modifying it
#
-source include/have_semisync.inc;
source include/not_embedded.inc;
source include/have_innodb.inc;
source include/master-slave.inc;
@@ -17,6 +16,7 @@ connection master;
call mtr.add_suppression("Timeout waiting for reply of binlog");
call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
+call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
diff --git a/mysql-test/include/check-warnings.test b/mysql-test/include/check-warnings.test
index b2f73c32e35..be347ba46ec 100644
--- a/mysql-test/include/check-warnings.test
+++ b/mysql-test/include/check-warnings.test
@@ -36,7 +36,7 @@ create temporary table error_log (
let $log_error= $MTR_LOG_ERROR;
let $log_warning= $log_error.warnings;
-# Try tload the warnings into a temporary table,
+# Try to load the warnings into a temporary table,
# it might fail with error saying "The MySQL server is
# running with the --secure-file-priv" in which case
# an attempt to load the file using LOAD DATA LOCAL is made
diff --git a/mysql-test/include/column_compression_rpl.inc b/mysql-test/include/column_compression_rpl.inc
new file mode 100644
index 00000000000..7c8931a491f
--- /dev/null
+++ b/mysql-test/include/column_compression_rpl.inc
@@ -0,0 +1,260 @@
+
+--connection slave
+
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
+
+--connection master
+if (!$engine_type) {let $engine_type=`SELECT @@storage_engine`; let $engine_type2=`SELECT @@storage_engine`;}
+
+--disable_warnings
+DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+--enable_warnings
+
+echo --------------------------------------------------------------------------------------------------------------;
+echo --------------------------------------------COMPRESSED TO COMPRESSED------------------------------------------;
+echo --------------------------------------------------------------------------------------------------------------;
+
+--sync_slave_with_master
+eval CREATE TABLE t1 (a BLOB COMPRESSED default "1111111111") ENGINE=$engine_type2;
+eval CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED default "0") ENGINE=$engine_type2;
+eval CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=$engine_type2;
+
+--connection master
+eval CREATE TABLE t1 (a BLOB COMPRESSED default "1111111111") ENGINE=$engine_type;
+eval CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED default "0") ENGINE=$engine_type;
+eval CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=$engine_type;
+
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),(default);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009"),(default);
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+
+echo --------------------------------------------------data on master------------------------------------------------;
+
+let $a= 10;
+while ($a)
+{
+ --sorted_result
+ eval SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t$a;
+ --sorted_result
+ eval SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t$a';
+ dec $a;
+}
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+
+echo --------------------------------------------------data on slave-------------------------------------------------;
+
+--sync_slave_with_master
+let $a= 10;
+while ($a)
+{
+ --sorted_result
+ eval SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t$a;
+ --sorted_result
+ eval SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t$a';
+ dec $a;
+}
+
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+
+--connection master
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+FLUSH STATUS;
+
+echo -----------------------------------------------------------------------------------------------------------------;
+echo ---------------------------------------COMPRESSED TO NOT COMPRESSED----------------------------------------------;
+echo -----------------------------------------------------------------------------------------------------------------;
+
+--sync_slave_with_master
+FLUSH STATUS;
+eval CREATE TABLE t1 (a BLOB) ENGINE=$engine_type2;
+eval CREATE TABLE t2 (a TINYBLOB) ENGINE=$engine_type2;
+eval CREATE TABLE t3 (a MEDIUMBLOB) ENGINE=$engine_type2;
+eval CREATE TABLE t4 (a LONGBLOB) ENGINE=$engine_type2;
+eval CREATE TABLE t5 (a TEXT) ENGINE=$engine_type2;
+eval CREATE TABLE t6 (a TINYTEXT) ENGINE=$engine_type2;
+eval CREATE TABLE t7 (a MEDIUMTEXT) ENGINE=$engine_type2;
+eval CREATE TABLE t8 (a LONGTEXT) ENGINE=$engine_type2;
+eval CREATE TABLE t9 (a VARCHAR(10000)) ENGINE=$engine_type2;
+eval CREATE TABLE t10 (a VARBINARY(10000)) ENGINE=$engine_type2;
+
+--connection master
+eval CREATE TABLE IF NOT EXISTS t1 (a BLOB COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t2 (a TINYBLOB COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t3 (a MEDIUMBLOB COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t4 (a LONGBLOB COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t5 (a TEXT COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t6 (a TINYTEXT COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t7 (a MEDIUMTEXT COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t8 (a LONGTEXT COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t9 (a VARCHAR(10000) COMPRESSED) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t10 (a VARBINARY(10000) COMPRESSED) ENGINE=$engine_type;
+
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009");
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+
+echo ---------------------------------------data on master-----------------------------------------------------------;
+
+let $a= 10;
+while ($a)
+{
+ --sorted_result
+ eval SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t$a;
+ --sorted_result
+ eval SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t$a';
+ dec $a;
+}
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+
+echo ---------------------------------------data on slave-------------------------------------------------------------;
+
+--sync_slave_with_master
+let $a= 10;
+while ($a)
+{
+ --sorted_result
+ eval SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t$a;
+ --sorted_result
+ eval SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t$a';
+ dec $a;
+}
+
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+--connection master
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+FLUSH STATUS;
+
+echo -----------------------------------------------------------------------------------------------------------------;
+echo -----------------------------------NOT COMPRESSED to COMPRESSED--------------------------------------------------;
+echo -----------------------------------------------------------------------------------------------------------------;
+
+--sync_slave_with_master
+FLUSH STATUS;
+eval CREATE TABLE t1 (a BLOB COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=$engine_type2;
+
+--connection master
+eval CREATE TABLE IF NOT EXISTS t1 (a BLOB) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t2 (a TINYBLOB) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t3 (a MEDIUMBLOB) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t4 (a LONGBLOB) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t5 (a TEXT) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t6 (a TINYTEXT) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t7 (a MEDIUMTEXT) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t8 (a LONGTEXT) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t9 (a VARCHAR(10000)) ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t10 (a VARBINARY(10000)) ENGINE=$engine_type;
+
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009");
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+
+echo -----------------------------------data on master---------------------------------------------------------------;
+
+let $a= 10;
+while ($a)
+{
+ --sorted_result
+ eval SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t$a;
+ --sorted_result
+ eval SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t$a';
+ dec $a;
+}
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+
+echo -----------------------------------data on slave-----------------------------------------------------------------;
+
+--sync_slave_with_master
+let $a= 10;
+while ($a)
+{
+ --sorted_result
+ eval SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t$a;
+ --sorted_result
+ eval SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t$a';
+ dec $a;
+}
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+
+--connection master
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+
+echo -----------------------------------------------------------------------------------------------------------------;
+echo ------varchar(1000)->varchar(999) compressed, varchar(1000) compressed->varchar(999) ----------------------------;
+echo -----------------------------------------------------------------------------------------------------------------;
+
+--sync_slave_with_master
+eval CREATE TABLE t1 (a VARCHAR(999) COMPRESSED) ENGINE=$engine_type2;
+eval CREATE TABLE t2 (a VARCHAR(999)) ENGINE=$engine_type2;
+show warnings;
+call mtr.add_suppression("Slave: Data too long for column 'a' at row 1 Error_code: 1406");
+call mtr.add_suppression("Slave: Table 't2' already exists Error_code: 1050");
+
+--connection master
+eval CREATE TABLE IF NOT EXISTS t1 (a VARCHAR(1000))ENGINE=$engine_type;
+eval CREATE TABLE IF NOT EXISTS t2 (a VARCHAR(1000) COMPRESSED)ENGINE=$engine_type;
+
+INSERT INTO t1(a) VALUES(REPEAT('a',1000));
+--connection slave
+--let $slave_sql_errno= 1406,1677
+--source include/wait_for_slave_sql_error_and_skip.inc
+show warnings;
+
+--connection master
+ INSERT INTO t2(a) VALUES(REPEAT('a',1000));
+--connection slave
+--let $slave_sql_errno= 1406,1677
+--source include/wait_for_slave_sql_error_and_skip.inc
+show warnings;
+
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+
+--connection master
+DROP TABLE t1,t2;
+--sync_slave_with_master
+
+
diff --git a/mysql-test/include/ctype_utf8mb4.inc b/mysql-test/include/ctype_utf8mb4.inc
index 2d48f9373f6..cb422f66947 100644
--- a/mysql-test/include/ctype_utf8mb4.inc
+++ b/mysql-test/include/ctype_utf8mb4.inc
@@ -191,8 +191,10 @@ drop table t1;
#
if(!$is_heap)
{
---error ER_TOO_LONG_KEY
+--error 0,ER_TOO_LONG_KEY
eval create table t1 (a text character set utf8mb4, primary key(a(371))) engine $engine;
+show warnings;
+drop table if exists t1;
}
#
diff --git a/mysql-test/include/default_mysqld.cnf b/mysql-test/include/default_mysqld.cnf
index 44a7fd12d27..69a2b58288b 100644
--- a/mysql-test/include/default_mysqld.cnf
+++ b/mysql-test/include/default_mysqld.cnf
@@ -17,7 +17,7 @@
# Default values that applies to all MySQL Servers
[mysqld]
disable-getopt-prefix-matching
-
+plugin-maturity=unknown
open-files-limit= 1024
local-infile
character-set-server= latin1
diff --git a/mysql-test/include/have_innodb.combinations b/mysql-test/include/have_innodb.combinations
index 7e9e6b9e3b0..ac760f7fcad 100644
--- a/mysql-test/include/have_innodb.combinations
+++ b/mysql-test/include/have_innodb.combinations
@@ -18,36 +18,6 @@ innodb-sys-tables
innodb-sys-virtual
innodb-metrics
-[xtradb_plugin]
-ignore-builtin-innodb
-plugin-load-add=$HA_XTRADB_SO
-innodb
-innodb-cmpmem
-innodb-cmp-per-index
-innodb-trx
-innodb-locks
-innodb-buffer-pool-stats
-innodb-buffer-page
-innodb-buffer-page-lru
-innodb-sys-foreign
-innodb-sys-foreign-cols
-innodb-sys-tables
-innodb-metrics
-
-[xtradb]
-innodb
-innodb-cmpmem
-innodb-cmp-per-index
-innodb-trx
-innodb-locks
-innodb-metrics
-innodb-buffer-pool-stats
-innodb-buffer-page
-innodb-buffer-page-lru
-innodb-sys-foreign
-innodb-sys-foreign-cols
-innodb-sys-tables
-
[innodb]
innodb
innodb-cmpmem
diff --git a/mysql-test/include/have_innodb.inc b/mysql-test/include/have_innodb.inc
index b89797d5828..69ffdb5b284 100644
--- a/mysql-test/include/have_innodb.inc
+++ b/mysql-test/include/have_innodb.inc
@@ -1,4 +1,4 @@
#
# suite.pm will make sure that all tests including this file
-# will be skipped unless innodb or xtradb is enabled
+# will be skipped unless innodb is enabled
#
diff --git a/mysql-test/include/have_not_innodb_plugin.inc b/mysql-test/include/have_not_innodb_plugin.inc
deleted file mode 100644
index e40fd811021..00000000000
--- a/mysql-test/include/have_not_innodb_plugin.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-disable_query_log;
---require r/not_true.require
-select (PLUGIN_LIBRARY LIKE 'ha_innodb_plugin%' OR PLUGIN_DESCRIPTION LIKE '%xtradb%') as `TRUE` from information_schema.plugins where PLUGIN_NAME='InnoDB';
-enable_query_log;
diff --git a/mysql-test/include/have_semisync.inc b/mysql-test/include/have_semisync.inc
deleted file mode 100644
index 243fad83717..00000000000
--- a/mysql-test/include/have_semisync.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-if (`select count(*) < 2 from information_schema.plugins where plugin_name like 'rpl_semi_sync_%'`)
-{
- --skip Test requires semisync plugins
-}
diff --git a/mysql-test/include/have_semisync.opt b/mysql-test/include/have_semisync.opt
deleted file mode 100644
index 19e29c7e4de..00000000000
--- a/mysql-test/include/have_semisync.opt
+++ /dev/null
@@ -1,4 +0,0 @@
---plugin-load-add=$SEMISYNC_MASTER_SO
---plugin-load-add=$SEMISYNC_SLAVE_SO
---loose-rpl-semi-sync-master
---loose-rpl-semi-sync-slave
diff --git a/mysql-test/include/have_semisync_plugin.inc b/mysql-test/include/have_semisync_plugin.inc
deleted file mode 100644
index 8a1679de636..00000000000
--- a/mysql-test/include/have_semisync_plugin.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Check if server has support for loading plugins
-#
-if (`SELECT @@have_dynamic_loading != 'YES'`) {
- --skip Requires dynamic loading
-}
-
-#
-# Check if the variable SEMISYNC_MASTER_SO is set
-#
-if (!$SEMISYNC_MASTER_SO)
-{
- skip Need semisync plugins;
-}
-
diff --git a/mysql-test/include/have_xtradb.combinations b/mysql-test/include/have_xtradb.combinations
deleted file mode 100644
index 0419dc91171..00000000000
--- a/mysql-test/include/have_xtradb.combinations
+++ /dev/null
@@ -1,13 +0,0 @@
-[xtradb_plugin]
-ignore-builtin-innodb
-plugin-load-add=$HA_XTRADB_SO
-innodb
-innodb-cmpmem
-innodb-trx
-innodb-sys-indexes
-
-[xtradb]
-innodb
-innodb-cmpmem
-innodb-trx
-innodb-sys-indexes
diff --git a/mysql-test/include/have_xtradb.inc b/mysql-test/include/have_xtradb.inc
deleted file mode 100644
index d12802e057d..00000000000
--- a/mysql-test/include/have_xtradb.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-# suite.pm will make sure that all tests including this file
-# will be skipped unless xtradb is enabled
-#
diff --git a/mysql-test/include/install_semisync.inc b/mysql-test/include/install_semisync.inc
deleted file mode 100644
index 9cc6df2072a..00000000000
--- a/mysql-test/include/install_semisync.inc
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
-#
---let $include_filename= install_semisync.inc
---source include/begin_include_file.inc
-
---source include/not_embedded.inc
---source include/have_semisync_plugin.inc
-
---connection master
-
---disable_query_log
---let $value = query_get_value(show variables like 'rpl_semi_sync_master_enabled', Value, 1)
-if ($value == No such row)
-{
- SET sql_log_bin = 0;
- install plugin rpl_semi_sync_master soname 'semisync_master';
- SET GLOBAL rpl_semi_sync_master_enabled = 1;
- SET sql_log_bin = 1;
-}
---enable_query_log
-
---connection slave
---source include/stop_slave_io.inc
-
---disable_query_log
---let $value= query_get_value(show variables like 'rpl_semi_sync_slave_enabled', Value, 1)
-if ($value == No such row)
-{
- SET sql_log_bin = 0;
- install plugin rpl_semi_sync_slave soname 'semisync_slave';
- SET GLOBAL rpl_semi_sync_slave_enabled = 1;
- SET sql_log_bin = 1;
-}
-START SLAVE IO_THREAD;
---source include/wait_for_slave_io_to_start.inc
---enable_query_log
-
---source include/end_include_file.inc
diff --git a/mysql-test/include/mtr_check.sql b/mysql-test/include/mtr_check.sql
index d47e7d322b5..f2c0b70e192 100644
--- a/mysql-test/include/mtr_check.sql
+++ b/mysql-test/include/mtr_check.sql
@@ -28,7 +28,7 @@ BEGIN
-- Dump all global variables except those
-- that are supposed to change
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
- WHERE variable_name NOT IN ('timestamp', 'innodb_file_format_max')
+ WHERE variable_name NOT IN ('timestamp')
AND variable_name not like "Last_IO_Err*"
AND variable_name != 'INNODB_IBUF_MAX_SIZE'
AND variable_name != 'INNODB_USE_NATIVE_AIO'
@@ -39,12 +39,14 @@ BEGIN
-- Dump all databases, there should be none
-- except those that was created during bootstrap
- SELECT * FROM INFORMATION_SCHEMA.SCHEMATA;
+ SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME;
-- and the mtr_wsrep_notify schema which is populated by the std_data/wsrep_notify.sh script
-- and the suite/galera/t/galera_var_notify_cmd.test
-- and the wsrep_schema schema that may be created by Galera
- SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema');
+ SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
+ WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema')
+ ORDER BY BINARY SCHEMA_NAME;
-- The test database should not contain any tables
SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES
diff --git a/mysql-test/include/mtr_warnings.sql b/mysql-test/include/mtr_warnings.sql
index 71c693961c1..b7b2a316dfb 100644
--- a/mysql-test/include/mtr_warnings.sql
+++ b/mysql-test/include/mtr_warnings.sql
@@ -224,6 +224,12 @@ INSERT INTO global_suppressions VALUES
("Slave I/O: Setting @slave_gtid_ignore_duplicates failed with error.*"),
("Slave I/O: Setting @slave_until_gtid failed with error.*"),
("Slave I/O: Get master GTID position failed with error.*"),
+
+ /*
+ MDEV-12501 -- set --maturity-level by default
+ */
+ ("Plugin .* is of maturity level .* while the server is .*"),
+
("THE_LAST_SUPPRESSION")||
diff --git a/mysql-test/include/rpl_events.inc b/mysql-test/include/rpl_events.inc
deleted file mode 100644
index 0effa8c4e5c..00000000000
--- a/mysql-test/include/rpl_events.inc
+++ /dev/null
@@ -1,159 +0,0 @@
-##################################################################
-# Author: Giuseppe, Chuck Bell #
-# Date: 17-January-2007 #
-# Purpose: To test that event effects are replicated #
-# in both row based and statement based format #
-##################################################################
-
---disable_warnings
-DROP EVENT IF EXISTS test.justonce;
-drop table if exists t1,t2;
---enable_warnings
-
-# first, we need a table to record something from an event
-
-eval CREATE TABLE `t1` (
- `id` INT(10) UNSIGNED NOT NULL,
- `c` VARCHAR(50) NOT NULL,
- `ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`)
-) ENGINE=$engine_type DEFAULT CHARSET=utf8;
-
-INSERT INTO t1 (id, c) VALUES (1, 'manually');
-
-# We create the event so that it inserts exactly 1 row in the table
-# A recuring event is used so that we can be sure the event will
-# fire regardless of timing delays on the server. Otherwise, it is
-# possible for the event to timeout before it has inserted a row.
---echo "Creating event test.justonce on the master"
-CREATE EVENT test.justonce ON SCHEDULE EVERY 2 SECOND DO
- INSERT IGNORE INTO t1 (id, c) VALUES (2, 'from justonce');
-
-# Show the event is alive and present on master
---echo "Checking event is active on master"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce';
-
-# Wait until event has fired. We know this because t1 will contain
-# the row from the event.
-let $wait_condition=
- SELECT COUNT(*) = 1 FROM t1 WHERE c = 'from justonce';
---source include/wait_condition.inc
-
-# check that table t1 contains something
---echo "Checking event data on the master"
-let $events_done=`SELECT count(*) FROM t1 id`;
---disable_query_log
-eval SELECT $events_done > 0 as ONE;
---enable_query_log
-
-sync_slave_with_master;
-
---echo "Checking event data on the slave"
---disable_query_log
-eval SELECT count(*) - $events_done as ZERO FROM t1 id;
---enable_query_log
-
---echo "Checking event is inactive on slave"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce';
-
-# Create an event on the slave and check to see what the originator is.
---echo "Dropping event test.slave_once on the slave"
---disable_warnings
-DROP EVENT IF EXISTS test.slave_once;
---enable_warnings
-
-# Create an event on slave and check its state. An event shouldn't be executed
-# so set start time in 1 hour.
-CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
- INSERT IGNORE INTO t1(id, c) VALUES (3, 'from slave_once');
-
---echo "Checking event status on the slave for originator value = slave's server_id"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_once';
-
---echo "Dropping event test.slave_once on the slave"
---disable_warnings
-DROP EVENT IF EXISTS test.slave_once;
---enable_warnings
-
-connection master;
-
-# BUG#20384 - disable events on slave
---echo "Dropping event test.justonce on the master"
---disable_warnings
-DROP EVENT IF EXISTS test.justonce;
---enable_warnings
-
-# Create an event on master and check its state on slave. An event shouldn't be executed
-# so set start time in 1 hour. Check that changes of event statement replicated to slave
-
---echo "Creating event test.er on the master"
-CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
- INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er');
-
---echo "Checking event status on the master"
-SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
-
-sync_slave_with_master;
-
---echo "Checking event status on the slave"
-SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
-
-connection master;
---echo "Altering event test.er on the master"
-ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
- INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er');
-
---echo "Checking event status on the master"
-SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
-
-sync_slave_with_master;
-
---echo "Checking event status on the slave"
-SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
-
-connection master;
---echo "Dropping event test.er on the master"
-DROP EVENT test.er;
-
---echo "Checking event status on the master"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
-
---disable_info
-
-sync_slave_with_master;
-
---echo "Checking event status on the slave"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
-
-# test the DISABLE ON SLAVE for setting event SLAVESIDE_DISABLED as status
-# on CREATE EVENT
-
-# Create an event on slave and check its status. An event shouldn't be executed
-# so set start time in 1 hour.
-
---echo "Creating event test.slave_terminate on the slave"
-CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
- INSERT IGNORE INTO t1(id, c) VALUES (6, 'from slave_terminate');
-
---echo "Checking event status on the slave"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
-
---echo "Dropping event test.slave_terminate on the slave"
-DROP EVENT test.slave_terminate;
-
---echo "Creating event test.slave_terminate with DISABLE ON SLAVE on the slave"
-CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND DISABLE ON SLAVE DO
- INSERT IGNORE INTO t1(c) VALUES (7, 'from slave_terminate');
-
---echo "Checking event status on the slave"
-SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
-
---echo "Dropping event test.slave_terminate on the slave"
-DROP EVENT test.slave_terminate;
-
---echo "Cleanup"
-connection master;
-DROP TABLE t1;
-sync_slave_with_master;
-connection master;
-
diff --git a/mysql-test/include/uninstall_semisync.inc b/mysql-test/include/uninstall_semisync.inc
deleted file mode 100644
index 0a4c55fa4f2..00000000000
--- a/mysql-test/include/uninstall_semisync.inc
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
-#
---let $include_filename= uninstall_semisync.inc
---source include/begin_include_file.inc
-
---disable_query_log
---connection slave
---source include/stop_slave_io.inc
-
-# Uninstall rpl_semi_sync_slave first
---disable_warnings
-UNINSTALL PLUGIN rpl_semi_sync_slave;
-
---connection master
-# After BUG#17638477 fix, uninstallation of rpl_semi_sync_master
-# is not allowed when there are semi sync slaves. Hence kill
-# all dump threads before uninstalling it.
-SET GLOBAL rpl_semi_sync_master_enabled = OFF;
---source include/stop_dump_threads.inc
-UNINSTALL PLUGIN rpl_semi_sync_master;
---enable_warnings
-
---connection slave
-START SLAVE IO_THREAD;
---source include/wait_for_slave_io_to_start.inc
---enable_query_log
-
---source include/end_include_file.inc
diff --git a/mysql-test/lib/My/SafeProcess/safe_kill_win.cc b/mysql-test/lib/My/SafeProcess/safe_kill_win.cc
index 6ca38ceee81..8cb805b1bbc 100644
--- a/mysql-test/lib/My/SafeProcess/safe_kill_win.cc
+++ b/mysql-test/lib/My/SafeProcess/safe_kill_win.cc
@@ -72,6 +72,7 @@ void dump_single_process(DWORD pid)
char path[MAX_PATH];
char working_dir[MAX_PATH];
char tmpname[MAX_PATH];
+ char *filename= 0;
process= OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
if (!process)
@@ -88,7 +89,7 @@ void dump_single_process(DWORD pid)
goto exit;
}
- char *filename= strrchr(path, '\\');
+ filename= strrchr(path, '\\');
if (filename)
{
filename++;
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index bfb50fe34d3..dede5319739 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -189,7 +189,6 @@ my @DEFAULT_SUITES= qw(
multi_source-
optimizer_unfixed_bugs-
parts-
- percona-
perfschema-
plugins-
roles-
@@ -198,6 +197,7 @@ my @DEFAULT_SUITES= qw(
sql_sequence-
unit-
vcol-
+ versioning-
wsrep-
galera-
);
@@ -221,6 +221,7 @@ our @opt_extra_mysqld_opt;
our @opt_mysqld_envs;
my $opt_stress;
+my $opt_tail_lines= 20;
my $opt_dry_run;
@@ -329,6 +330,8 @@ my %mysqld_logs;
my $opt_debug_sync_timeout= 300; # Default timeout for WAIT_FOR actions.
my $warn_seconds = 60;
+my $rebootstrap_re= '--innodb[-_](?:page[-_]size|checksum[-_]algorithm|undo[-_]tablespaces|log[-_]group[-_]home[-_]dir|data[-_]home[-_]dir)|data[-_]file[-_]path';
+
sub testcase_timeout ($) {
my ($tinfo)= @_;
if (exists $tinfo->{'case-timeout'}) {
@@ -1205,6 +1208,7 @@ sub command_line_setup {
'report-times' => \$opt_report_times,
'result-file' => \$opt_resfile,
'stress=s' => \$opt_stress,
+ 'tail-lines=i' => \$opt_tail_lines,
'dry-run' => \$opt_dry_run,
'help|h' => \$opt_usage,
@@ -1734,18 +1738,6 @@ sub command_line_setup {
$opt_strace=1;
}
- # InnoDB does not bother to do individual de-allocations at exit. Instead it
- # relies on a custom allocator to track every allocation, and frees all at
- # once during exit.
- # In XtraDB, an option use-sys-malloc is introduced (and on by default) to
- # disable this (for performance). But this exposes Valgrind to all the
- # missing de-allocations, so we need to disable it to at least get
- # meaningful leak checking for the rest of the server.
- if ($opt_valgrind_mysqld)
- {
- push(@opt_extra_mysqld_opt, "--loose-skip-innodb-use-sys-malloc");
- }
-
if ($opt_debug_common)
{
$opt_debug= 1;
@@ -2804,10 +2796,12 @@ sub mysql_server_start($) {
{
# Some InnoDB options are incompatible with the default bootstrap.
# If they are used, re-bootstrap
- if ( $extra_opts and
- "@$extra_opts" =~ /--innodb[-_](?:page[-_]size|checksum[-_]algorithm|undo[-_]tablespaces|log[-_]group[-_]home[-_]dir|data[-_]home[-_]dir)|data[-_]file[-_]path/ )
+ my @rebootstrap_opts;
+ @rebootstrap_opts = grep {/$rebootstrap_re/o} @$extra_opts if $extra_opts;
+ if (@rebootstrap_opts)
{
- mysql_install_db($mysqld, undef, $extra_opts);
+ mtr_verbose("Re-bootstrap with @rebootstrap_opts");
+ mysql_install_db($mysqld, undef, \@rebootstrap_opts);
}
else {
# Copy datadir from installed system db
@@ -3768,14 +3762,32 @@ sub run_testcase ($$) {
$ENV{'MTR_TEST_NAME'} = $tinfo->{name};
resfile_report_test($tinfo) if $opt_resfile;
- # Allow only alpanumerics pluss _ - + . in combination names,
- # or anything beginning with -- (the latter comes from --combination)
- my $combination= $tinfo->{combination};
- if ($combination && $combination !~ /^\w[-\w\.\+]*$/
- && $combination !~ /^--/)
+ for my $key (grep { /^MTR_COMBINATION/ } keys %ENV)
+ {
+ delete $ENV{$key};
+ }
+
+ if (ref $tinfo->{combinations} eq 'ARRAY')
{
- mtr_error("Combination '$combination' contains illegal characters");
+ for (my $i = 0; $i < @{$tinfo->{combinations}}; ++$i )
+ {
+ my $combination = $tinfo->{combinations}->[$i];
+ # Allow only alphanumerics plus _ - + . in combination names,
+ # or anything beginning with -- (the latter comes from --combination)
+ if ($combination && $combination !~ /^\w[-\w\.\+]*$/
+ && $combination !~ /^--/)
+ {
+ mtr_error("Combination '$combination' contains illegal characters");
+ }
+ $ENV{"MTR_COMBINATION_". uc(${combination})} = 1;
+ }
+ $ENV{"MTR_COMBINATIONS"} = join(',', @{$tinfo->{combinations}});
}
+ elsif (exists $tinfo->{combinations})
+ {
+ die 'Unexpected type of $tinfo->{combinations}';
+ }
+
# -------------------------------------------------------
# Init variables that can change between each test case
# -------------------------------------------------------
@@ -4431,7 +4443,7 @@ sub extract_warning_lines ($$) {
qr|feedback plugin: failed to retrieve the MAC address|,
qr|Plugin 'FEEDBACK' init function returned error|,
qr|Plugin 'FEEDBACK' registration as a INFORMATION SCHEMA failed|,
- qr|'log-bin-use-v1-row-events' is MySQL 5.6 compatible option|,
+ qr|'log-bin-use-v1-row-events' is MySQL .* compatible option|,
qr|InnoDB: Setting thread \d+ nice to \d+ failed, current nice \d+, errno 13|, # setpriority() fails under valgrind
qr|Failed to setup SSL|,
qr|SSL error: Failed to set ciphers to use|,
@@ -4883,7 +4895,7 @@ sub report_failure_and_restart ($) {
$tinfo->{comment}.=
"The result from queries just before the failure was:".
"\n< snip >\n".
- mtr_lastlinesfromfile($log_file_name, 20)."\n";
+ mtr_lastlinesfromfile($log_file_name, $opt_tail_lines)."\n";
}
}
}
@@ -5243,6 +5255,7 @@ sub server_need_restart {
if (!My::Options::same($started_opts, $extra_opts) ||
exists $server->{'restart_opts'})
{
+ delete $server->{'restart_opts'};
my $use_dynamic_option_switch= 0;
if (!$use_dynamic_option_switch)
{
@@ -5555,7 +5568,7 @@ sub start_mysqltest ($) {
mtr_add_arg($args, "--test-file=%s", $tinfo->{'path'});
# Number of lines of resut to include in failure report
- mtr_add_arg($args, "--tail-lines=20");
+ mtr_add_arg($args, "--tail-lines=%d", $opt_tail_lines);
if ( defined $tinfo->{'result_file'} ) {
mtr_add_arg($args, "--result-file=%s", $tinfo->{'result_file'});
@@ -5972,7 +5985,7 @@ Examples:
alias
main.alias 'main' is the name of the suite for the 't' directory.
-rpl.rpl_invoked_features,mix,xtradb_plugin
+rpl.rpl_invoked_features,mix,innodb
suite/rpl/t/rpl.rpl_invoked_features
Options to control what engine/variation to run:
@@ -6212,6 +6225,8 @@ Misc options
phases of test execution.
stress=ARGS Run stress test, providing options to
mysql-stress-test.pl. Options are separated by comma.
+ tail-lines=N Number of lines of the result to include in a failure
+ report.
Some options that control enabling a feature for normal test runs,
can be turned off by prepending 'no' to the option, e.g. --notimer.
diff --git a/mysql-test/r/1st.result b/mysql-test/r/1st.result
index f9e4b37aa94..cb2da3505f5 100644
--- a/mysql-test/r/1st.result
+++ b/mysql-test/r/1st.result
@@ -36,4 +36,5 @@ time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
+transaction_registry
user
diff --git a/mysql-test/r/alter_table.result b/mysql-test/r/alter_table.result
index dad3f89ecf1..9b394926489 100644
--- a/mysql-test/r/alter_table.result
+++ b/mysql-test/r/alter_table.result
@@ -2275,6 +2275,19 @@ t1 CREATE TABLE `t1` (
`c` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
+create table t1 (i int);
+alter table t1 alter column if exists a set default 1;
+Warnings:
+Note 1054 Unknown column 'a' in 't1'
+alter table t1 alter column if exists a drop default;
+Warnings:
+Note 1054 Unknown column 'a' in 't1'
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `i` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+drop table t1;
#
# MDEV-13508 Check that rename of columns changes defaults, virtual
# columns and constraints
diff --git a/mysql-test/r/alter_user.result b/mysql-test/r/alter_user.result
index ac668bba8fa..76f811f18c7 100644
--- a/mysql-test/r/alter_user.result
+++ b/mysql-test/r/alter_user.result
@@ -1,25 +1,25 @@
select * from mysql.user where user = 'root' and host = 'localhost';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-localhost root Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+localhost root Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y 0 0 0 0 N N 0.000000
# Test syntax
#
# These 2 selects should have no changes from the first one.
alter user CURRENT_USER;
select * from mysql.user where user = 'root' and host = 'localhost';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-localhost root Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+localhost root Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y 0 0 0 0 N N 0.000000
alter user CURRENT_USER();
select * from mysql.user where user = 'root' and host = 'localhost';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-localhost root Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+localhost root Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y 0 0 0 0 N N 0.000000
create user foo;
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N N 0.000000
alter user foo;
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N N 0.000000
# Test super privilege works correctly with a read only database.
SET @start_read_only = @@global.read_only;
SET GLOBAL read_only=1;
@@ -50,44 +50,44 @@ Note 1396 Operation ALTER USER failed for 'boo'
# Test password related altering.
alter user foo identified by 'something';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N N 0 0 0 0 N N 0.000000
alter user foo identified by 'something2';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *9CD58369E930E28C8996A89DB18B63294E6DC10C N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *9CD58369E930E28C8996A89DB18B63294E6DC10C N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N N 0 0 0 0 N N 0.000000
alter user foo identified by password '*88C89BE093D4ECF72D039F62EBB7477EA1FD4D63';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N N 0 0 0 0 N N 0.000000
alter user foo identified with 'somecoolplugin';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N 0 0 0 0 somecoolplugin N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N N 0 0 0 0 somecoolplugin N N 0.000000
alter user foo identified with 'somecoolplugin' using 'somecoolpassphrase';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N 0 0 0 0 somecoolplugin somecoolpassphrase N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N N 0 0 0 0 somecoolplugin somecoolpassphrase N N 0.000000
# Test ssl related altering.
alter user foo identified by 'something' require SSL;
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N ANY 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N N ANY 0 0 0 0 N N 0.000000
alter user foo identified by 'something' require X509;
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N X509 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N N X509 0 0 0 0 N N 0.000000
alter user foo identified by 'something'
require cipher 'text' issuer 'foo_issuer' subject 'foo_subject';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N SPECIFIED text foo_issuer foo_subject 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N N SPECIFIED text foo_issuer foo_subject 0 0 0 0 N N 0.000000
# Test resource limits altering.
alter user foo with MAX_QUERIES_PER_HOUR 10
MAX_UPDATES_PER_HOUR 20
MAX_CONNECTIONS_PER_HOUR 30
MAX_USER_CONNECTIONS 40;
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N SPECIFIED text foo_issuer foo_subject 10 20 30 40 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *88C89BE093D4ECF72D039F62EBB7477EA1FD4D63 N N N N N N N N N N N N N N N Y N N N N N N N N N Y N N N N SPECIFIED text foo_issuer foo_subject 10 20 30 40 N N 0.000000
drop user foo;
diff --git a/mysql-test/r/analyze_stmt_privileges2.result b/mysql-test/r/analyze_stmt_privileges2.result
index 892791dd8f8..cf38810b598 100644
--- a/mysql-test/r/analyze_stmt_privileges2.result
+++ b/mysql-test/r/analyze_stmt_privileges2.result
@@ -1452,7 +1452,7 @@ id select_type table type possible_keys key key_len ref rows r_rows filtered r_f
DELETE FROM t1 USING t1, t2;
EXPLAIN DELETE FROM t1 USING t1, t2;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t2 ALL NULL NULL NULL NULL 3
ANALYZE DELETE FROM t1 USING t1, t2;
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
@@ -1797,7 +1797,7 @@ id select_type table type possible_keys key key_len ref rows r_rows filtered r_f
DELETE FROM t1 USING t1, t2;
EXPLAIN DELETE FROM t1 USING t1, t2;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t2 ALL NULL NULL NULL NULL 3
ANALYZE DELETE FROM t1 USING t1, t2;
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
@@ -1813,7 +1813,7 @@ SELECT * FROM t1;
a b
EXPLAIN SELECT * FROM t1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
ANALYZE SELECT * FROM t1;
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL no matching row in const table
diff --git a/mysql-test/r/column_compression.result b/mysql-test/r/column_compression.result
new file mode 100644
index 00000000000..243a118a706
--- /dev/null
+++ b/mysql-test/r/column_compression.result
@@ -0,0 +1,1362 @@
+SET column_compression_zlib_wrap=true;
+FLUSH STATUS;
+CREATE TABLE t1(a BLOB COMPRESSED, KEY(a(10)));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+CREATE TABLE t1(a BLOB COMPRESSED);
+ALTER TABLE t1 ADD KEY(a(10));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Make sure column was actually compressed
+INSERT INTO t1 VALUES(REPEAT('a', 1000));
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 2
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+28
+# Make sure ALTER TABLE rebuilds table
+ALTER TABLE t1 MODIFY COLUMN a BLOB;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` blob DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 3
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+1008
+# Rebuild back
+ALTER TABLE t1 MODIFY COLUMN a BLOB COMPRESSED;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 5
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+28
+# Make sure CREATE TABLE ... LIKE inherits compression
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+# Make sure implicit CREATE TABLE ... SELECT inherits compression
+CREATE TABLE t2 SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 7
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+28
+DROP TABLE t2;
+# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
+CREATE TABLE t2(a BLOB) SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` blob DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 8
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+1008
+DROP TABLE t2;
+# Make sure engine change works
+ALTER TABLE t1 ENGINE=InnoDB;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 10
+# Make sure online add column works (requires InnoDB)
+ALTER TABLE t1 ADD COLUMN b BLOB COMPRESSED DEFAULT "must be visible";
+SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
+LEFT(a, 10) LENGTH(a) b
+aaaaaaaaaa 1000 must be visible
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 12
+ALTER TABLE t1 DROP COLUMN b;
+ALTER TABLE t1 ENGINE=MyISAM;
+TRUNCATE TABLE t1;
+# Make sure column_compression_zlib_level works
+SET column_compression_zlib_level= 1;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 3
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+40
+TRUNCATE TABLE t1;
+SET column_compression_zlib_level= 9;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+36
+SET column_compression_zlib_level= DEFAULT;
+TRUNCATE TABLE t1;
+# No compression, original data shorter than compressed
+INSERT INTO t1 VALUES('a');
+SELECT a, LENGTH(a) FROM t1;
+a LENGTH(a)
+a 1
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+20
+# Coverage for store(double) and store(longlong)
+INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
+# and for sort_string()
+SELECT * FROM t1 ORDER BY a;
+a
+NULL
+
+1
+3.14
+9.8
+a
+# Coverage for val_real() and val_int()
+SELECT a+1 FROM t1 ORDER BY 1;
+a+1
+NULL
+1
+1
+2
+4.140000000000001
+10.8
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+DROP TABLE t1;
+#
+# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
+# Field* Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c1 BLOB COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
+CREATE TABLE t2 (c2 BLOB COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
+SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
+c1
+foo
+bar
+DROP TABLE t1, t2;
+#
+# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
+# failed in Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c BLOB COMPRESSED) ENGINE=InnoDB;
+INSERT INTO t1 VALUES ('foo'),('bar');
+SELECT DISTINCT c FROM t1;
+c
+foo
+bar
+DROP TABLE t1;
+FLUSH STATUS;
+CREATE TABLE t1(a TEXT COMPRESSED, KEY(a(10)));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+CREATE TABLE t1(a TEXT COMPRESSED);
+ALTER TABLE t1 ADD KEY(a(10));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Make sure column was actually compressed
+INSERT INTO t1 VALUES(REPEAT('a', 1000));
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 2
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+28
+# Make sure ALTER TABLE rebuilds table
+ALTER TABLE t1 MODIFY COLUMN a TEXT;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` text DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 3
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+1008
+# Rebuild back
+ALTER TABLE t1 MODIFY COLUMN a TEXT COMPRESSED;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 5
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+28
+# Make sure CREATE TABLE ... LIKE inherits compression
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+# Make sure implicit CREATE TABLE ... SELECT inherits compression
+CREATE TABLE t2 SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 7
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+28
+DROP TABLE t2;
+# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
+CREATE TABLE t2(a TEXT) SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` text DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 8
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+1008
+DROP TABLE t2;
+# Make sure engine change works
+ALTER TABLE t1 ENGINE=InnoDB;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 10
+# Make sure online add column works (requires InnoDB)
+ALTER TABLE t1 ADD COLUMN b TEXT COMPRESSED DEFAULT "must be visible";
+SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
+LEFT(a, 10) LENGTH(a) b
+aaaaaaaaaa 1000 must be visible
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 12
+ALTER TABLE t1 DROP COLUMN b;
+ALTER TABLE t1 ENGINE=MyISAM;
+TRUNCATE TABLE t1;
+# Make sure column_compression_zlib_level works
+SET column_compression_zlib_level= 1;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 3
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+40
+TRUNCATE TABLE t1;
+SET column_compression_zlib_level= 9;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+36
+SET column_compression_zlib_level= DEFAULT;
+TRUNCATE TABLE t1;
+# No compression, original data shorter than compressed
+INSERT INTO t1 VALUES('a');
+SELECT a, LENGTH(a) FROM t1;
+a LENGTH(a)
+a 1
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+20
+# Coverage for store(double) and store(longlong)
+INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
+# and for sort_string()
+SELECT * FROM t1 ORDER BY a;
+a
+NULL
+
+1
+3.14
+9.8
+a
+# Coverage for val_real() and val_int()
+SELECT a+1 FROM t1 ORDER BY 1;
+a+1
+NULL
+1
+1
+2
+4.140000000000001
+10.8
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+DROP TABLE t1;
+#
+# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
+# Field* Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c1 TEXT COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
+CREATE TABLE t2 (c2 TEXT COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
+SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
+c1
+foo
+bar
+DROP TABLE t1, t2;
+#
+# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
+# failed in Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c TEXT COMPRESSED) ENGINE=InnoDB;
+INSERT INTO t1 VALUES ('foo'),('bar');
+SELECT DISTINCT c FROM t1;
+c
+foo
+bar
+DROP TABLE t1;
+FLUSH STATUS;
+CREATE TABLE t1(a VARBINARY(10000) COMPRESSED, KEY(a(10)));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+CREATE TABLE t1(a VARBINARY(10000) COMPRESSED);
+ALTER TABLE t1 ADD KEY(a(10));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Make sure column was actually compressed
+INSERT INTO t1 VALUES(REPEAT('a', 1000));
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 2
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+28
+# Make sure ALTER TABLE rebuilds table
+ALTER TABLE t1 MODIFY COLUMN a VARBINARY(10000);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varbinary(10000) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 3
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+1008
+# Rebuild back
+ALTER TABLE t1 MODIFY COLUMN a VARBINARY(10000) COMPRESSED;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 5
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+28
+# Make sure CREATE TABLE ... LIKE inherits compression
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+# Make sure implicit CREATE TABLE ... SELECT inherits compression
+CREATE TABLE t2 SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 7
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+28
+DROP TABLE t2;
+# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
+CREATE TABLE t2(a VARBINARY(10000)) SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` varbinary(10000) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 8
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+1008
+DROP TABLE t2;
+# Make sure engine change works
+ALTER TABLE t1 ENGINE=InnoDB;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 10
+# Make sure online add column works (requires InnoDB)
+ALTER TABLE t1 ADD COLUMN b VARBINARY(10000) COMPRESSED DEFAULT "must be visible";
+SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
+LEFT(a, 10) LENGTH(a) b
+aaaaaaaaaa 1000 must be visible
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 12
+ALTER TABLE t1 DROP COLUMN b;
+ALTER TABLE t1 ENGINE=MyISAM;
+TRUNCATE TABLE t1;
+# Make sure column_compression_zlib_level works
+SET column_compression_zlib_level= 1;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 3
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+40
+TRUNCATE TABLE t1;
+SET column_compression_zlib_level= 9;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+32
+SET column_compression_zlib_level= DEFAULT;
+TRUNCATE TABLE t1;
+# No compression, original data shorter than compressed
+INSERT INTO t1 VALUES('a');
+SELECT a, LENGTH(a) FROM t1;
+a LENGTH(a)
+a 1
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+20
+# Coverage for store(double) and store(longlong)
+INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
+# and for sort_string()
+SELECT * FROM t1 ORDER BY a;
+a
+NULL
+
+1
+3.14
+9.8
+a
+# Coverage for val_real() and val_int()
+SELECT a+1 FROM t1 ORDER BY 1;
+a+1
+NULL
+1
+1
+2
+4.140000000000001
+10.8
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+DROP TABLE t1;
+#
+# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
+# Field* Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c1 VARBINARY(10000) COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
+CREATE TABLE t2 (c2 VARBINARY(10000) COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
+SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
+c1
+foo
+bar
+DROP TABLE t1, t2;
+#
+# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
+# failed in Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c VARBINARY(10000) COMPRESSED) ENGINE=InnoDB;
+INSERT INTO t1 VALUES ('foo'),('bar');
+SELECT DISTINCT c FROM t1;
+c
+foo
+bar
+DROP TABLE t1;
+FLUSH STATUS;
+CREATE TABLE t1(a VARCHAR(10000) COMPRESSED, KEY(a(10)));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+CREATE TABLE t1(a VARCHAR(10000) COMPRESSED);
+ALTER TABLE t1 ADD KEY(a(10));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Make sure column was actually compressed
+INSERT INTO t1 VALUES(REPEAT('a', 1000));
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 2
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+28
+# Make sure ALTER TABLE rebuilds table
+ALTER TABLE t1 MODIFY COLUMN a VARCHAR(10000);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10000) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 3
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+1008
+# Rebuild back
+ALTER TABLE t1 MODIFY COLUMN a VARCHAR(10000) COMPRESSED;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 5
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+28
+# Make sure CREATE TABLE ... LIKE inherits compression
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+# Make sure implicit CREATE TABLE ... SELECT inherits compression
+CREATE TABLE t2 SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 7
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+28
+DROP TABLE t2;
+# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
+CREATE TABLE t2(a VARCHAR(10000)) SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` varchar(10000) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 8
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+1008
+DROP TABLE t2;
+# Make sure engine change works
+ALTER TABLE t1 ENGINE=InnoDB;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 10
+# Make sure online add column works (requires InnoDB)
+ALTER TABLE t1 ADD COLUMN b VARCHAR(10000) COMPRESSED DEFAULT "must be visible";
+SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
+LEFT(a, 10) LENGTH(a) b
+aaaaaaaaaa 1000 must be visible
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 12
+ALTER TABLE t1 DROP COLUMN b;
+ALTER TABLE t1 ENGINE=MyISAM;
+TRUNCATE TABLE t1;
+# Make sure column_compression_zlib_level works
+SET column_compression_zlib_level= 1;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 3
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+40
+TRUNCATE TABLE t1;
+SET column_compression_zlib_level= 9;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+32
+SET column_compression_zlib_level= DEFAULT;
+TRUNCATE TABLE t1;
+# No compression, original data shorter than compressed
+INSERT INTO t1 VALUES('a');
+SELECT a, LENGTH(a) FROM t1;
+a LENGTH(a)
+a 1
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+20
+# Coverage for store(double) and store(longlong)
+INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
+# and for sort_string()
+SELECT * FROM t1 ORDER BY a;
+a
+NULL
+
+1
+3.14
+9.8
+a
+# Coverage for val_real() and val_int()
+SELECT a+1 FROM t1 ORDER BY 1;
+a+1
+NULL
+1
+1
+2
+4.140000000000001
+10.8
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+DROP TABLE t1;
+#
+# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
+# Field* Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c1 VARCHAR(10000) COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
+CREATE TABLE t2 (c2 VARCHAR(10000) COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
+SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
+c1
+foo
+bar
+DROP TABLE t1, t2;
+#
+# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
+# failed in Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c VARCHAR(10000) COMPRESSED) ENGINE=InnoDB;
+INSERT INTO t1 VALUES ('foo'),('bar');
+SELECT DISTINCT c FROM t1;
+c
+foo
+bar
+DROP TABLE t1;
+FLUSH STATUS;
+CREATE TABLE t1(a TEXT CHARSET ucs2 COMPRESSED, KEY(a(10)));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+CREATE TABLE t1(a TEXT CHARSET ucs2 COMPRESSED);
+ALTER TABLE t1 ADD KEY(a(10));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Make sure column was actually compressed
+INSERT INTO t1 VALUES(REPEAT('a', 1000));
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 2000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 2
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+36
+# Make sure ALTER TABLE rebuilds table
+ALTER TABLE t1 MODIFY COLUMN a TEXT;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` text DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 3
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+1008
+# Rebuild back
+ALTER TABLE t1 MODIFY COLUMN a TEXT CHARSET ucs2 COMPRESSED;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 2000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 5
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+36
+# Make sure CREATE TABLE ... LIKE inherits compression
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+# Make sure implicit CREATE TABLE ... SELECT inherits compression
+CREATE TABLE t2 SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 2000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 7
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+36
+DROP TABLE t2;
+# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
+CREATE TABLE t2(a TEXT) SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` text DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 8
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+1008
+DROP TABLE t2;
+# Make sure engine change works
+ALTER TABLE t1 ENGINE=InnoDB;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 2000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 10
+# Make sure online add column works (requires InnoDB)
+ALTER TABLE t1 ADD COLUMN b TEXT CHARSET ucs2 COMPRESSED DEFAULT "must be visible";
+SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
+LEFT(a, 10) LENGTH(a) b
+aaaaaaaaaa 2000 must be visible
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 12
+ALTER TABLE t1 DROP COLUMN b;
+ALTER TABLE t1 ENGINE=MyISAM;
+TRUNCATE TABLE t1;
+# Make sure column_compression_zlib_level works
+SET column_compression_zlib_level= 1;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 3
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+60
+TRUNCATE TABLE t1;
+SET column_compression_zlib_level= 9;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+44
+SET column_compression_zlib_level= DEFAULT;
+TRUNCATE TABLE t1;
+# No compression, original data shorter than compressed
+INSERT INTO t1 VALUES('a');
+SELECT a, LENGTH(a) FROM t1;
+a LENGTH(a)
+a 2
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+20
+# Coverage for store(double) and store(longlong)
+INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
+# and for sort_string()
+SELECT * FROM t1 ORDER BY a;
+a
+NULL
+
+1
+3.14
+9.8
+a
+# Coverage for val_real() and val_int()
+SELECT a+1 FROM t1 ORDER BY 1;
+a+1
+NULL
+1
+1
+2
+4.140000000000001
+10.8
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+DROP TABLE t1;
+#
+# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
+# Field* Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c1 TEXT CHARSET ucs2 COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
+CREATE TABLE t2 (c2 TEXT CHARSET ucs2 COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
+SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
+c1
+foo
+bar
+DROP TABLE t1, t2;
+#
+# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
+# failed in Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c TEXT CHARSET ucs2 COMPRESSED) ENGINE=InnoDB;
+INSERT INTO t1 VALUES ('foo'),('bar');
+SELECT DISTINCT c FROM t1;
+c
+foo
+bar
+DROP TABLE t1;
+SET column_compression_zlib_wrap=DEFAULT;
+FLUSH STATUS;
+CREATE TABLE t1(a BLOB COMPRESSED, KEY(a(10)));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+CREATE TABLE t1(a BLOB COMPRESSED);
+ALTER TABLE t1 ADD KEY(a(10));
+ERROR HY000: Compressed column 'a' can't be used in key specification
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Make sure column was actually compressed
+INSERT INTO t1 VALUES(REPEAT('a', 1000));
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 2
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+24
+# Make sure ALTER TABLE rebuilds table
+ALTER TABLE t1 MODIFY COLUMN a BLOB;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` blob DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 1
+COLUMN_DECOMPRESSIONS 3
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+1008
+# Rebuild back
+ALTER TABLE t1 MODIFY COLUMN a BLOB COMPRESSED;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 5
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+24
+# Make sure CREATE TABLE ... LIKE inherits compression
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+# Make sure implicit CREATE TABLE ... SELECT inherits compression
+CREATE TABLE t2 SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 7
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+24
+DROP TABLE t2;
+# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
+CREATE TABLE t2(a BLOB) SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` blob DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 8
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+1008
+DROP TABLE t2;
+# Make sure engine change works
+ALTER TABLE t1 ENGINE=InnoDB;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+LEFT(a, 10) LENGTH(a)
+aaaaaaaaaa 1000
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 10
+# Make sure online add column works (requires InnoDB)
+ALTER TABLE t1 ADD COLUMN b BLOB COMPRESSED DEFAULT "must be visible";
+SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
+LEFT(a, 10) LENGTH(a) b
+aaaaaaaaaa 1000 must be visible
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 2
+COLUMN_DECOMPRESSIONS 12
+ALTER TABLE t1 DROP COLUMN b;
+ALTER TABLE t1 ENGINE=MyISAM;
+TRUNCATE TABLE t1;
+# Make sure column_compression_zlib_level works
+SET column_compression_zlib_level= 1;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 3
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+36
+TRUNCATE TABLE t1;
+SET column_compression_zlib_level= 9;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+28
+SET column_compression_zlib_level= DEFAULT;
+TRUNCATE TABLE t1;
+# No compression, original data shorter than compressed
+INSERT INTO t1 VALUES('a');
+SELECT a, LENGTH(a) FROM t1;
+a LENGTH(a)
+a 1
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+20
+# Coverage for store(double) and store(longlong)
+INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
+# and for sort_string()
+SELECT * FROM t1 ORDER BY a;
+a
+NULL
+
+1
+3.14
+9.8
+a
+# Coverage for val_real() and val_int()
+SELECT a+1 FROM t1 ORDER BY 1;
+a+1
+NULL
+1
+1
+2
+4.140000000000001
+10.8
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+Warning 1292 Truncated incorrect DOUBLE value: 'a'
+Warning 1292 Truncated incorrect DOUBLE value: ''
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 4
+COLUMN_DECOMPRESSIONS 12
+DROP TABLE t1;
+#
+# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
+# Field* Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c1 BLOB COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
+CREATE TABLE t2 (c2 BLOB COMPRESSED) ENGINE=MyISAM;
+INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
+SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
+c1
+foo
+bar
+DROP TABLE t1, t2;
+#
+# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
+# failed in Field_varstring_compressed::new_key_field
+#
+CREATE TABLE t1 (c BLOB COMPRESSED) ENGINE=InnoDB;
+INSERT INTO t1 VALUES ('foo'),('bar');
+SELECT DISTINCT c FROM t1;
+c
+foo
+bar
+DROP TABLE t1;
+CREATE TABLE t1(a CHAR(100) COMPRESSED);
+ERROR 42000: Incorrect column specifier for column 'a'
+CREATE TABLE t1(a INT COMPRESSED);
+ERROR 42000: Incorrect column specifier for column 'a'
+CREATE TABLE t1(a BLOB COMPRESSED=unknown);
+ERROR HY000: Unknown compression method: unknown
+CREATE TABLE t1(a BLOB COMPRESSED COMPRESSED);
+DROP TABLE t1;
+CREATE TABLE t1(a INT);
+ALTER TABLE t1 MODIFY a INT COMPRESSED;
+ERROR 42000: Incorrect column specifier for column 'a'
+DROP TABLE t1;
+# Test CSV
+CREATE TABLE t1(a BLOB NOT NULL COMPRESSED) ENGINE=CSV;
+INSERT INTO t1 VALUES(REPEAT('a', 110));
+SELECT LENGTH(a) FROM t1;
+LENGTH(a)
+110
+ALTER TABLE t1 ENGINE=MyISAM;
+SELECT LENGTH(a) FROM t1;
+LENGTH(a)
+110
+ALTER TABLE t1 ENGINE=CSV;
+SELECT LENGTH(a) FROM t1;
+LENGTH(a)
+110
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` blob /*!100301 COMPRESSED*/ NOT NULL DEFAULT ''
+) ENGINE=CSV DEFAULT CHARSET=latin1
+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+DROP TABLE t1;
+# Test fields that don't fit data
+CREATE TABLE t1(a VARCHAR(9) COMPRESSED);
+INSERT INTO t1 VALUES(REPEAT('a', 10));
+ERROR 22001: Data too long for column 'a' at row 1
+INSERT INTO t1 VALUES(REPEAT(' ', 10));
+Warnings:
+Note 1265 Data truncated for column 'a' at row 1
+SELECT a, LENGTH(a) FROM t1;
+a LENGTH(a)
+ 9
+DROP TABLE t1;
+CREATE TABLE t1(a TINYTEXT COMPRESSED);
+SET column_compression_threshold=300;
+INSERT INTO t1 VALUES(REPEAT('a', 255));
+ERROR 22001: Data too long for column 'a' at row 1
+INSERT INTO t1 VALUES(REPEAT(' ', 255));
+Warnings:
+Note 1265 Data truncated for column 'a' at row 1
+SET column_compression_threshold=DEFAULT;
+SELECT a, LENGTH(a) FROM t1;
+a LENGTH(a)
+ 254
+DROP TABLE t1;
+# Corner case: VARCHAR(255) COMPRESSED must have 2 bytes pack length
+CREATE TABLE t1(a VARCHAR(255) COMPRESSED);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(255) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SET column_compression_threshold=300;
+INSERT INTO t1 VALUES(REPEAT('a', 255));
+SET column_compression_threshold=DEFAULT;
+SELECT a, LENGTH(a) FROM t1;
+a LENGTH(a)
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 255
+DROP TABLE t1;
diff --git a/mysql-test/r/column_compression_parts.result b/mysql-test/r/column_compression_parts.result
new file mode 100644
index 00000000000..e0b54aec20c
--- /dev/null
+++ b/mysql-test/r/column_compression_parts.result
@@ -0,0 +1,293 @@
+DROP TABLE IF EXISTS t1,t2,t3,t4;
+FLUSH STATUS;
+---------------------------------------by range------------------------------------------
+CREATE TABLE t1 (i int, a VARCHAR(1000) COMPRESSED DEFAULT "AAA")
+PARTITION BY RANGE COLUMNS (a)(
+PARTITION p0 VALUES LESS THAN ('g') COMMENT "p0",
+PARTITION p1 VALUES LESS THAN ('m'),
+PARTITION p2 VALUES LESS THAN ('t'),
+PARTITION p3 VALUES LESS THAN ('w'));
+ALTER TABLE t1 ADD PARTITION (PARTITION p4 VALUES LESS THAN (MAXVALUE));
+INSERT INTO t1 VALUES (1,REPEAT('a',100)),(2,REPEAT('v',200)),(3,REPEAT('r',300)),(4,NULL);
+INSERT INTO t1 VALUES (5,REPEAT('k',500)),(6,'April'),(7,7),(8,""),(9,"M"),(10,DEFAULT);
+ALTER TABLE t1 ANALYZE PARTITION p1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+ALTER TABLE t1 CHECK PARTITION p2;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+SELECT i,SUBSTRING(a,1,10) FROM t1 PARTITION (p2) ORDER BY i;
+i SUBSTRING(a,1,10)
+3 rrrrrrrrrr
+9 M
+SELECT i,SUBSTRING(a,1,10) FROM t1 where length(a)>=300 ORDER BY i;
+i SUBSTRING(a,1,10)
+3 rrrrrrrrrr
+5 kkkkkkkkkk
+SELECT i,SUBSTRING(a,1,10) FROM t1 where a like "%k" ORDER BY i;
+i SUBSTRING(a,1,10)
+5 kkkkkkkkkk
+DELETE FROM t1 where a="";
+DELETE FROM t1 where a=(REPEAT('a',100));
+DELETE FROM t1 where a like "%v";
+SELECT i,SUBSTRING(a,1,10) FROM t1 ORDER BY i;
+i SUBSTRING(a,1,10)
+3 rrrrrrrrrr
+4 NULL
+5 kkkkkkkkkk
+6 April
+7 7
+9 M
+10 AAA
+SELECT i,SUBSTRING(a,1,10) FROM t1 where a not like "%k" ORDER BY i;
+i SUBSTRING(a,1,10)
+3 rrrrrrrrrr
+6 April
+7 7
+9 M
+10 AAA
+SELECT i,SUBSTRING(a,1,10) FROM t1 where (a>'m') ORDER BY i;
+i SUBSTRING(a,1,10)
+3 rrrrrrrrrr
+SELECT i,SUBSTRING(a,1,10) FROM t1 where (a between 'h' and 'z') and (i=9) ORDER BY i;
+i SUBSTRING(a,1,10)
+9 M
+EXPLAIN PARTITIONS SELECT i,SUBSTRING(a,1,10) FROM t1 where (a>'m');
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p2,p3,p4 ALL NULL NULL NULL NULL 2 Using where
+EXPLAIN PARTITIONS SELECT i,SUBSTRING(a,1,10) FROM t1 where (a<'w');
+id select_type table partitions type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 p0,p1,p2,p3 ALL NULL NULL NULL NULL 7 Using where
+ALTER TABLE t1 TRUNCATE PARTITION p2;
+ALTER TABLE t1 DROP PARTITION p0;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `i` int(11) DEFAULT NULL,
+ `a` varchar(1000) /*!100301 COMPRESSED*/ DEFAULT 'AAA'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ PARTITION BY RANGE COLUMNS(`a`)
+(PARTITION `p1` VALUES LESS THAN ('m') ENGINE = MyISAM,
+ PARTITION `p2` VALUES LESS THAN ('t') ENGINE = MyISAM,
+ PARTITION `p3` VALUES LESS THAN ('w') ENGINE = MyISAM,
+ PARTITION `p4` VALUES LESS THAN (MAXVALUE) ENGINE = MyISAM)
+ALTER TABLE t1 MODIFY COLUMN a VARCHAR(1000);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `i` int(11) DEFAULT NULL,
+ `a` varchar(1000) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ PARTITION BY RANGE COLUMNS(`a`)
+(PARTITION `p1` VALUES LESS THAN ('m') ENGINE = MyISAM,
+ PARTITION `p2` VALUES LESS THAN ('t') ENGINE = MyISAM,
+ PARTITION `p3` VALUES LESS THAN ('w') ENGINE = MyISAM,
+ PARTITION `p4` VALUES LESS THAN (MAXVALUE) ENGINE = MyISAM)
+DROP TABLE t1;
+---------------------------------------------------------------------------------------------
+CREATE TABLE t1 (a VARCHAR(1000) COMPRESSED NOT NULL, id INT)
+PARTITION BY RANGE COLUMNS(id,a)(
+PARTITION p0 VALUES LESS THAN (100,'sss'),
+PARTITION p1 VALUES LESS THAN (MAXVALUE,MAXVALUE));
+INSERT INTO t1 VALUES (REPEAT('a',100), 23),(REPEAT('v',100),123),(REPEAT('z',100),24),(REPEAT('k',100),124);
+SELECT id,SUBSTRING(a,1,10) FROM t1 order by id;
+id SUBSTRING(a,1,10)
+23 aaaaaaaaaa
+24 zzzzzzzzzz
+123 vvvvvvvvvv
+124 kkkkkkkkkk
+SELECT * from t1 partition (p0);
+a id
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 23
+zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 24
+SELECT * from t1 partition (p1);
+a id
+vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 123
+kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk 124
+INSERT INTO t1 VALUES (REPEAT('a',100),101);
+SELECT * from t1 partition (p0);
+a id
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 23
+zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 24
+SELECT * from t1 partition (p1);
+a id
+vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 123
+kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk 124
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 101
+ALTER TABLE t1 DROP PARTITION p1;
+SELECT id,SUBSTRING(a,1,10) FROM t1 WHERE id<50 order by id;
+id SUBSTRING(a,1,10)
+23 aaaaaaaaaa
+24 zzzzzzzzzz
+INSERT INTO t1 VALUES (REPEAT('a',100),101);
+ERROR HY000: Table has no partition for value from column_list
+ALTER TABLE t1 ALTER COLUMN a SET DEFAULT 'qwerty';
+ALTER TABLE t1 ALTER COLUMN a DROP DEFAULT;
+ALTER TABLE t1 MODIFY COLUMN a VARCHAR(1000);
+ALTER TABLE t1 ALTER COLUMN a DROP DEFAULT;
+INSERT INTO t1 VALUES (REPEAT('b',100),11);
+INSERT INTO t1 VALUES (default,10);
+ERROR HY000: Field 'a' doesn't have a default value
+ALTER TABLE t1 MODIFY COLUMN a VARCHAR(1000) COMPRESSED;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(1000) /*!100301 COMPRESSED*/ DEFAULT NULL,
+ `id` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ PARTITION BY RANGE COLUMNS(`id`,`a`)
+(PARTITION `p0` VALUES LESS THAN (100,'sss') ENGINE = MyISAM)
+SELECT * from t1 ORDER BY id;
+a id
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 11
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 23
+zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 24
+DROP TABLE t1;
+----------------------------1 partition--------------------------------------------------
+CREATE TABLE t1 (a VARCHAR(1000) COMPRESSED DEFAULT "10-12-2010")
+PARTITION BY RANGE COLUMNS (a) (partition p0 VALUES LESS THAN (MAXVALUE));
+INSERT INTO t1 VALUES (REPEAT('a',100)), (REPEAT('v',200)), (REPEAT('Z',300)),(NULL),(DEFAULT);
+INSERT INTO t1 VALUES (DEFAULT),(REPEAT('b',200)),(REPEAT('q',300)),(DEFAULT),("MAY");
+SELECT SUBSTRING(a,1,10) FROM t1;
+SUBSTRING(a,1,10)
+10-12-2010
+10-12-2010
+10-12-2010
+MAY
+NULL
+ZZZZZZZZZZ
+aaaaaaaaaa
+bbbbbbbbbb
+qqqqqqqqqq
+vvvvvvvvvv
+-----------------------------------------by key------------------------------------------
+ALTER TABLE t1 PARTITION BY KEY(a) PARTITIONS 6;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(1000) /*!100301 COMPRESSED*/ DEFAULT '10-12-2010'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ PARTITION BY KEY (`a`)
+PARTITIONS 6
+UPDATE t1 SET a="NEW" where length(a)<20;
+SELECT SUBSTRING(a,1,10) FROM t1;
+SUBSTRING(a,1,10)
+NEW
+NEW
+NEW
+NEW
+NULL
+ZZZZZZZZZZ
+aaaaaaaaaa
+bbbbbbbbbb
+qqqqqqqqqq
+vvvvvvvvvv
+CREATE TABLE t2 (a VARBINARY(1000) COMPRESSED)
+PARTITION BY KEY(a) PARTITIONS 3;
+ALTER TABLE t2 PARTITION BY LINEAR KEY ALGORITHM=2 (a) PARTITIONS 32;
+INSERT INTO t2 VALUES (REPEAT('a',100)),(REPEAT('v',6)),(REPEAT('z',13)),(REPEAT('k',900));
+SELECT SUBSTRING(a,1,10) FROM t2;
+SUBSTRING(a,1,10)
+aaaaaaaaaa
+kkkkkkkkkk
+vvvvvv
+zzzzzzzzzz
+CREATE TABLE t3 ( a VARCHAR(1000) COMPRESSED DEFAULT NULL)
+PARTITION BY LINEAR KEY(a) PARTITIONS 3;
+INSERT INTO t3 VALUES (REPEAT('a',100)),(REPEAT('v',100)),(NULL),(REPEAT('k',100)),(DEFAULT);
+SELECT SUBSTRING(a,1,10) FROM t3 where a<>NULL;
+SUBSTRING(a,1,10)
+CREATE TABLE t4 (a VARBINARY(1000) COMPRESSED NOT NULL DEFAULT 0 COMMENT "QQ")
+PARTITION BY LINEAR KEY(a)
+PARTITIONS 3;
+INSERT INTO t4 VALUES (REPEAT('a',100)),('0'),(DEFAULT),(DEFAULT),(REPEAT('v',100)),(REPEAT('k',100));
+SELECT SUBSTRING(a,1,10) FROM t4 where length(a)>3;
+SUBSTRING(a,1,10)
+aaaaaaaaaa
+kkkkkkkkkk
+vvvvvvvvvv
+DROP TABLE t1,t2,t3,t4;
+-----------------------------------subpartitions------------------------------------------
+CREATE TABLE t1 (a VARCHAR(1000) COMPRESSED, id INT NOT NULL)
+PARTITION BY RANGE(id)
+SUBPARTITION BY KEY(a) SUBPARTITIONS 4
+(PARTITION p0 VALUES LESS THAN (5),
+PARTITION p1 VALUES LESS THAN (MAXVALUE));
+INSERT INTO t1 VALUES (REPEAT('a',100),23),(REPEAT('v',100),123),(REPEAT('z',100),24),(REPEAT('k',100),124);
+SELECT id,SUBSTRING(a,1,10) FROM t1 where a=(REPEAT('k',100)) order by id;
+id SUBSTRING(a,1,10)
+124 kkkkkkkkkk
+DROP TABLE t1;
+-------------------------------------------------------------------------------------------
+CREATE TABLE t1 (a BLOB COMPRESSED)
+PARTITION BY KEY(a) partitions 30;
+ERROR HY000: A BLOB field is not allowed in partition function
+CREATE TABLE t1 (a VARCHAR(200) COMPRESSED) PARTITION BY KEY(a) partitions 30;
+ALTER TABLE t1 COALESCE PARTITION 20;
+ALTER TABLE t1 ADD PARTITION (PARTITION pm);
+CREATE TABLE t2 like t1;
+ALTER TABLE t2 REMOVE PARTITIONING;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(200) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ PARTITION BY KEY (`a`)
+(PARTITION `p0` ENGINE = MyISAM,
+ PARTITION `p1` ENGINE = MyISAM,
+ PARTITION `p2` ENGINE = MyISAM,
+ PARTITION `p3` ENGINE = MyISAM,
+ PARTITION `p4` ENGINE = MyISAM,
+ PARTITION `p5` ENGINE = MyISAM,
+ PARTITION `p6` ENGINE = MyISAM,
+ PARTITION `p7` ENGINE = MyISAM,
+ PARTITION `p8` ENGINE = MyISAM,
+ PARTITION `p9` ENGINE = MyISAM,
+ PARTITION `pm` ENGINE = MyISAM)
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` varchar(200) /*!100301 COMPRESSED*/ DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ALTER TABLE t1 EXCHANGE PARTITION pm WITH TABLE t2;
+DROP TABLE t1,t2;
+-------------------------------------------------------------------------------------------
+CREATE TABLE t1 (a BLOB COMPRESSED default 5,i int);
+INSERT INTO t1 VALUES (REPEAT('a',100),1),(REPEAT('v',100),2),(REPEAT('z',100),3),(REPEAT('k',100),2),(2,2);
+ALTER TABLE t1 PARTITION BY KEY(a) partitions 3;
+ERROR HY000: A BLOB field is not allowed in partition function
+ALTER TABLE t1 PARTITION BY HASH(i) PARTITIONS 8;
+ALTER TABLE t1 REORGANIZE PARTITION p0 INTO (
+PARTITION s0 VALUES LESS THAN (1960),
+PARTITION s1 VALUES LESS THAN (1970)
+);
+ERROR HY000: Only RANGE PARTITIONING can use VALUES LESS THAN in partition definition
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` blob /*!100301 COMPRESSED*/ DEFAULT 5,
+ `i` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ PARTITION BY HASH (`i`)
+PARTITIONS 8
+ALTER TABLE t1 REMOVE PARTITIONING;
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(500) COMPRESSED default 5,i int)
+PARTITION BY RANGE COLUMNS(i)(
+PARTITION p0 VALUES LESS THAN (10),
+PARTITION p1 VALUES LESS THAN (100),
+PARTITION p2 VALUES LESS THAN (1000));
+INSERT INTO t1 VALUES (REPEAT('a',100),1),("one",21),(REPEAT('3',100),34),(REPEAT('k',100),267),(2,278);
+ALTER TABLE t1 REORGANIZE PARTITION p2 INTO (PARTITION p22 VALUES LESS THAN (MAXVALUE));
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(500) /*!100301 COMPRESSED*/ DEFAULT '5',
+ `i` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ PARTITION BY RANGE COLUMNS(`i`)
+(PARTITION `p0` VALUES LESS THAN (10) ENGINE = MyISAM,
+ PARTITION `p1` VALUES LESS THAN (100) ENGINE = MyISAM,
+ PARTITION `p22` VALUES LESS THAN (MAXVALUE) ENGINE = MyISAM)
+ALTER TABLE t1 REBUILD PARTITION p22;
+DROP TABLE t1;
diff --git a/mysql-test/r/column_compression_rpl.result b/mysql-test/r/column_compression_rpl.result
new file mode 100644
index 00000000000..3cbc1802939
--- /dev/null
+++ b/mysql-test/r/column_compression_rpl.result
@@ -0,0 +1,2250 @@
+include/master-slave.inc
+[connection master]
+connection slave;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
+connection master;
+DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+--------------------------------------------------------------------------------------------------------------
+--------------------------------------------COMPRESSED TO COMPRESSED------------------------------------------
+--------------------------------------------------------------------------------------------------------------
+connection slave;
+CREATE TABLE t1 (a BLOB COMPRESSED default "1111111111") ENGINE=innodb;
+CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED default "0") ENGINE=innodb;
+CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=innodb;
+connection master;
+CREATE TABLE t1 (a BLOB COMPRESSED default "1111111111") ENGINE=myisam;
+CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED default "0") ENGINE=myisam;
+CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=myisam;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),(default);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009"),(default);
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+--------------------------------------------------data on master------------------------------------------------
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+0 M,compressed
+1000 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+108
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1 0 M,compressed
+10 12-12-2009 M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+6 qwerty M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+3000 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+92
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+80
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+84
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+8 00-00-00 M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+5 April M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+88
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+80
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10 1111111111 M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+104
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 29
+COLUMN_DECOMPRESSIONS 58
+--------------------------------------------------data on slave-------------------------------------------------
+connection slave;
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+0 S,compressed
+1000 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+108
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1 0 S,compressed
+10 12-12-2009 S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+6 qwerty S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+3000 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+92
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+80
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+84
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+8 00-00-00 S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+5 April S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+88
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+80
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10 1111111111 S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+104
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 58
+connection master;
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+FLUSH STATUS;
+-----------------------------------------------------------------------------------------------------------------
+---------------------------------------COMPRESSED TO NOT COMPRESSED----------------------------------------------
+-----------------------------------------------------------------------------------------------------------------
+connection slave;
+FLUSH STATUS;
+CREATE TABLE t1 (a BLOB) ENGINE=innodb;
+CREATE TABLE t2 (a TINYBLOB) ENGINE=innodb;
+CREATE TABLE t3 (a MEDIUMBLOB) ENGINE=innodb;
+CREATE TABLE t4 (a LONGBLOB) ENGINE=innodb;
+CREATE TABLE t5 (a TEXT) ENGINE=innodb;
+CREATE TABLE t6 (a TINYTEXT) ENGINE=innodb;
+CREATE TABLE t7 (a MEDIUMTEXT) ENGINE=innodb;
+CREATE TABLE t8 (a LONGTEXT) ENGINE=innodb;
+CREATE TABLE t9 (a VARCHAR(10000)) ENGINE=innodb;
+CREATE TABLE t10 (a VARBINARY(10000)) ENGINE=innodb;
+connection master;
+CREATE TABLE IF NOT EXISTS t1 (a BLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t2 (a TINYBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t3 (a MEDIUMBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t4 (a LONGBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t5 (a TEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t6 (a TINYTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t7 (a MEDIUMTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t8 (a LONGTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t9 (a VARCHAR(10000) COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t10 (a VARBINARY(10000) COMPRESSED) ENGINE=myisam;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009");
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+---------------------------------------data on master-----------------------------------------------------------
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+0 M,compressed
+1000 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+108
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10 12-12-2009 M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+100
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+6 qwerty M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+120
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+3000 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+92
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+80
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+84
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+8 00-00-00 M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+120
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+5 April M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+88
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+80
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+84
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 29
+COLUMN_DECOMPRESSIONS 58
+---------------------------------------data on slave-------------------------------------------------------------
+connection slave;
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+0 S,not compressed
+1000 aaaaaaaaaa S,not compressed
+2000 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+10 12-12-2009 S,not compressed
+1000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+10000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+6 qwerty S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+3000 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+254 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+1000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+10000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+8 00-00-00 S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+2000 vvvvvvvvvv S,not compressed
+5 April S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+254 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+1000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+16384
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 0
+connection master;
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+FLUSH STATUS;
+-----------------------------------------------------------------------------------------------------------------
+-----------------------------------NOT COMPRESSED to COMPRESSED--------------------------------------------------
+-----------------------------------------------------------------------------------------------------------------
+connection slave;
+FLUSH STATUS;
+CREATE TABLE t1 (a BLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED) ENGINE=innodb;
+CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=innodb;
+connection master;
+CREATE TABLE IF NOT EXISTS t1 (a BLOB) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t2 (a TINYBLOB) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t3 (a MEDIUMBLOB) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t4 (a LONGBLOB) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t5 (a TEXT) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t6 (a TINYTEXT) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t7 (a MEDIUMTEXT) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t8 (a LONGTEXT) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t9 (a VARCHAR(10000)) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t10 (a VARBINARY(10000)) ENGINE=myisam;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009");
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+-----------------------------------data on master---------------------------------------------------------------
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+0 M,not compressed
+1000 aaaaaaaaaa M,not compressed
+2000 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+3364
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+10 12-12-2009 M,not compressed
+1000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+1564
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+10000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+6 qwerty M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+10576
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+3000 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+3344
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+254 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+596
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+1000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+1544
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+10000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+8 00-00-00 M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+10576
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+2000 vvvvvvvvvv M,not compressed
+5 April M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+2156
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+254 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+596
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+1000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+1544
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 0
+-----------------------------------data on slave-----------------------------------------------------------------
+connection slave;
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+0 S,compressed
+1000 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10 12-12-2009 S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+6 qwerty S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+3000 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+8 00-00-00 S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+5 April S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+16384
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 58
+connection master;
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+-----------------------------------------------------------------------------------------------------------------
+------varchar(1000)->varchar(999) compressed, varchar(1000) compressed->varchar(999) ----------------------------
+-----------------------------------------------------------------------------------------------------------------
+connection slave;
+CREATE TABLE t1 (a VARCHAR(999) COMPRESSED) ENGINE=innodb;
+CREATE TABLE t2 (a VARCHAR(999)) ENGINE=innodb;
+show warnings;
+Level Code Message
+call mtr.add_suppression("Slave: Data too long for column 'a' at row 1 Error_code: 1406");
+call mtr.add_suppression("Slave: Table 't2' already exists Error_code: 1050");
+connection master;
+CREATE TABLE IF NOT EXISTS t1 (a VARCHAR(1000))ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t2 (a VARCHAR(1000) COMPRESSED)ENGINE=myisam;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000));
+connection slave;
+include/wait_for_slave_sql_error_and_skip.inc [errno=1406,1677]
+show warnings;
+Level Code Message
+connection master;
+INSERT INTO t2(a) VALUES(REPEAT('a',1000));
+connection slave;
+include/wait_for_slave_sql_error_and_skip.inc [errno=1406,1677]
+show warnings;
+Level Code Message
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+connection master;
+DROP TABLE t1,t2;
+connection slave;
+connection slave;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
+connection master;
+DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+--------------------------------------------------------------------------------------------------------------
+--------------------------------------------COMPRESSED TO COMPRESSED------------------------------------------
+--------------------------------------------------------------------------------------------------------------
+connection slave;
+CREATE TABLE t1 (a BLOB COMPRESSED default "1111111111") ENGINE=innodb;
+CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED default "0") ENGINE=innodb;
+CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=innodb;
+connection master;
+CREATE TABLE t1 (a BLOB COMPRESSED default "1111111111") ENGINE=innodb;
+CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED default "0") ENGINE=innodb;
+CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=innodb;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),(default);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009"),(default);
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+--------------------------------------------------data on master------------------------------------------------
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+0 M,compressed
+1000 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1 0 M,compressed
+10 12-12-2009 M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+6 qwerty M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+3000 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+8 00-00-00 M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+5 April M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10 1111111111 M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+16384
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 30
+COLUMN_DECOMPRESSIONS 58
+--------------------------------------------------data on slave-------------------------------------------------
+connection slave;
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+0 S,compressed
+1000 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1 0 S,compressed
+10 12-12-2009 S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+6 qwerty S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+3000 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+8 00-00-00 S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+5 April S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10 1111111111 S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+16384
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 116
+connection master;
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+FLUSH STATUS;
+-----------------------------------------------------------------------------------------------------------------
+---------------------------------------COMPRESSED TO NOT COMPRESSED----------------------------------------------
+-----------------------------------------------------------------------------------------------------------------
+connection slave;
+FLUSH STATUS;
+CREATE TABLE t1 (a BLOB) ENGINE=innodb;
+CREATE TABLE t2 (a TINYBLOB) ENGINE=innodb;
+CREATE TABLE t3 (a MEDIUMBLOB) ENGINE=innodb;
+CREATE TABLE t4 (a LONGBLOB) ENGINE=innodb;
+CREATE TABLE t5 (a TEXT) ENGINE=innodb;
+CREATE TABLE t6 (a TINYTEXT) ENGINE=innodb;
+CREATE TABLE t7 (a MEDIUMTEXT) ENGINE=innodb;
+CREATE TABLE t8 (a LONGTEXT) ENGINE=innodb;
+CREATE TABLE t9 (a VARCHAR(10000)) ENGINE=innodb;
+CREATE TABLE t10 (a VARBINARY(10000)) ENGINE=innodb;
+connection master;
+CREATE TABLE IF NOT EXISTS t1 (a BLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t2 (a TINYBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t3 (a MEDIUMBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t4 (a LONGBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t5 (a TEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t6 (a TINYTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t7 (a MEDIUMTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t8 (a LONGTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t9 (a VARCHAR(10000) COMPRESSED) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t10 (a VARBINARY(10000) COMPRESSED) ENGINE=innodb;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009");
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+---------------------------------------data on master-----------------------------------------------------------
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+0 M,compressed
+1000 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10 12-12-2009 M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+6 qwerty M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+3000 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+8 00-00-00 M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+5 April M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+16384
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 29
+COLUMN_DECOMPRESSIONS 58
+---------------------------------------data on slave-------------------------------------------------------------
+connection slave;
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+0 S,not compressed
+1000 aaaaaaaaaa S,not compressed
+2000 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+10 12-12-2009 S,not compressed
+1000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+10000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+6 qwerty S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+3000 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+254 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+1000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+10000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+8 00-00-00 S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+2000 vvvvvvvvvv S,not compressed
+5 April S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+254 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+1000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+16384
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 0
+connection master;
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+FLUSH STATUS;
+-----------------------------------------------------------------------------------------------------------------
+-----------------------------------NOT COMPRESSED to COMPRESSED--------------------------------------------------
+-----------------------------------------------------------------------------------------------------------------
+connection slave;
+FLUSH STATUS;
+CREATE TABLE t1 (a BLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=innodb;
+CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=innodb;
+CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED) ENGINE=innodb;
+CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=innodb;
+connection master;
+CREATE TABLE IF NOT EXISTS t1 (a BLOB) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t2 (a TINYBLOB) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t3 (a MEDIUMBLOB) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t4 (a LONGBLOB) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t5 (a TEXT) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t6 (a TINYTEXT) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t7 (a MEDIUMTEXT) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t8 (a LONGTEXT) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t9 (a VARCHAR(10000)) ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t10 (a VARBINARY(10000)) ENGINE=innodb;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009");
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+-----------------------------------data on master---------------------------------------------------------------
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+0 M,not compressed
+1000 aaaaaaaaaa M,not compressed
+2000 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+10 12-12-2009 M,not compressed
+1000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+10000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+6 qwerty M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+3000 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+254 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+1000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+10000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+8 00-00-00 M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+2000 vvvvvvvvvv M,not compressed
+5 April M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+254 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+16384
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+1000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+16384
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 0
+-----------------------------------data on slave-----------------------------------------------------------------
+connection slave;
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+0 S,compressed
+1000 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10 12-12-2009 S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+6 qwerty S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+3000 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+8 00-00-00 S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+5 April S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+16384
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+16384
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 58
+connection master;
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+-----------------------------------------------------------------------------------------------------------------
+------varchar(1000)->varchar(999) compressed, varchar(1000) compressed->varchar(999) ----------------------------
+-----------------------------------------------------------------------------------------------------------------
+connection slave;
+CREATE TABLE t1 (a VARCHAR(999) COMPRESSED) ENGINE=innodb;
+CREATE TABLE t2 (a VARCHAR(999)) ENGINE=innodb;
+show warnings;
+Level Code Message
+call mtr.add_suppression("Slave: Data too long for column 'a' at row 1 Error_code: 1406");
+call mtr.add_suppression("Slave: Table 't2' already exists Error_code: 1050");
+connection master;
+CREATE TABLE IF NOT EXISTS t1 (a VARCHAR(1000))ENGINE=innodb;
+CREATE TABLE IF NOT EXISTS t2 (a VARCHAR(1000) COMPRESSED)ENGINE=innodb;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000));
+connection slave;
+include/wait_for_slave_sql_error_and_skip.inc [errno=1406,1677]
+show warnings;
+Level Code Message
+connection master;
+INSERT INTO t2(a) VALUES(REPEAT('a',1000));
+connection slave;
+include/wait_for_slave_sql_error_and_skip.inc [errno=1406,1677]
+show warnings;
+Level Code Message
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+connection master;
+DROP TABLE t1,t2;
+connection slave;
+connection slave;
+SET @saved_slave_type_conversions = @@slave_type_conversions;
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
+connection master;
+DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+--------------------------------------------------------------------------------------------------------------
+--------------------------------------------COMPRESSED TO COMPRESSED------------------------------------------
+--------------------------------------------------------------------------------------------------------------
+connection slave;
+CREATE TABLE t1 (a BLOB COMPRESSED default "1111111111") ENGINE=myisam;
+CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED default "0") ENGINE=myisam;
+CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=myisam;
+connection master;
+CREATE TABLE t1 (a BLOB COMPRESSED default "1111111111") ENGINE=myisam;
+CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED default "0") ENGINE=myisam;
+CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=myisam;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),(default);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009"),(default);
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+--------------------------------------------------data on master------------------------------------------------
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+0 M,compressed
+1000 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+108
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1 0 M,compressed
+10 12-12-2009 M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+6 qwerty M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+3000 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+92
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+80
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+84
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+8 00-00-00 M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+5 April M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+88
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+80
+SELECT LENGTH(a), SUBSTRING(a,1,10), "M,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10 1111111111 M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+104
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 30
+COLUMN_DECOMPRESSIONS 58
+--------------------------------------------------data on slave-------------------------------------------------
+connection slave;
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+0 S,compressed
+1000 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+108
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1 0 S,compressed
+10 12-12-2009 S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+6 qwerty S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+3000 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+92
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+80
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+84
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+8 00-00-00 S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+5 April S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+88
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+80
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10 1111111111 S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+104
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 116
+connection master;
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+FLUSH STATUS;
+-----------------------------------------------------------------------------------------------------------------
+---------------------------------------COMPRESSED TO NOT COMPRESSED----------------------------------------------
+-----------------------------------------------------------------------------------------------------------------
+connection slave;
+FLUSH STATUS;
+CREATE TABLE t1 (a BLOB) ENGINE=myisam;
+CREATE TABLE t2 (a TINYBLOB) ENGINE=myisam;
+CREATE TABLE t3 (a MEDIUMBLOB) ENGINE=myisam;
+CREATE TABLE t4 (a LONGBLOB) ENGINE=myisam;
+CREATE TABLE t5 (a TEXT) ENGINE=myisam;
+CREATE TABLE t6 (a TINYTEXT) ENGINE=myisam;
+CREATE TABLE t7 (a MEDIUMTEXT) ENGINE=myisam;
+CREATE TABLE t8 (a LONGTEXT) ENGINE=myisam;
+CREATE TABLE t9 (a VARCHAR(10000)) ENGINE=myisam;
+CREATE TABLE t10 (a VARBINARY(10000)) ENGINE=myisam;
+connection master;
+CREATE TABLE IF NOT EXISTS t1 (a BLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t2 (a TINYBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t3 (a MEDIUMBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t4 (a LONGBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t5 (a TEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t6 (a TINYTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t7 (a MEDIUMTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t8 (a LONGTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t9 (a VARCHAR(10000) COMPRESSED) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t10 (a VARBINARY(10000) COMPRESSED) ENGINE=myisam;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009");
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+---------------------------------------data on master-----------------------------------------------------------
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+0 M,compressed
+1000 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+108
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10 12-12-2009 M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+100
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+6 qwerty M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+120
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+3000 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+92
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+80
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+84
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+10000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+8 00-00-00 M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+120
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+2000 vvvvvvvvvv M,compressed
+5 April M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+88
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+100 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+254 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+80
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) M,compressed
+1000 aaaaaaaaaa M,compressed
+200 vvvvvvvvvv M,compressed
+300 rrrrrrrrrr M,compressed
+NULL NULL M,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+84
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 29
+COLUMN_DECOMPRESSIONS 58
+---------------------------------------data on slave-------------------------------------------------------------
+connection slave;
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+0 S,not compressed
+1000 aaaaaaaaaa S,not compressed
+2000 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+3364
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+10 12-12-2009 S,not compressed
+1000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+1564
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+10000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+6 qwerty S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+10576
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+3000 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+3344
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+254 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+596
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+1000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+1544
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+10000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+8 00-00-00 S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+10576
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+2000 vvvvvvvvvv S,not compressed
+5 April S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+2156
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+100 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+254 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+596
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,not compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) S,not compressed
+1000 aaaaaaaaaa S,not compressed
+200 vvvvvvvvvv S,not compressed
+300 rrrrrrrrrr S,not compressed
+NULL NULL S,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+1544
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 0
+connection master;
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+FLUSH STATUS;
+-----------------------------------------------------------------------------------------------------------------
+-----------------------------------NOT COMPRESSED to COMPRESSED--------------------------------------------------
+-----------------------------------------------------------------------------------------------------------------
+connection slave;
+FLUSH STATUS;
+CREATE TABLE t1 (a BLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t2 (a TINYBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t3 (a MEDIUMBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t4 (a LONGBLOB COMPRESSED) ENGINE=myisam;
+CREATE TABLE t5 (a TEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t6 (a TINYTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t7 (a MEDIUMTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t8 (a LONGTEXT COMPRESSED) ENGINE=myisam;
+CREATE TABLE t9 (a VARCHAR(10000) COMPRESSED) ENGINE=myisam;
+CREATE TABLE t10 (a VARBINARY(10000) COMPRESSED) ENGINE=myisam;
+connection master;
+CREATE TABLE IF NOT EXISTS t1 (a BLOB) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t2 (a TINYBLOB) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t3 (a MEDIUMBLOB) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t4 (a LONGBLOB) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t5 (a TEXT) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t6 (a TINYTEXT) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t7 (a MEDIUMTEXT) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t8 (a LONGTEXT) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t9 (a VARCHAR(10000)) ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t10 (a VARBINARY(10000)) ENGINE=myisam;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t2(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t3(a) VALUES(REPEAT('a',100)),(REPEAT('v',2000)),("April"),(NULL);
+INSERT INTO t4(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("00-00-00");
+INSERT INTO t5(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL);
+INSERT INTO t6(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',254)),(NULL);
+INSERT INTO t7(a) VALUES(REPEAT('a',100)),(REPEAT('v',200)),(REPEAT('r',3000)),(NULL);
+INSERT INTO t8(a) VALUES(REPEAT('a',10000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("qwerty");
+INSERT INTO t9(a) VALUES(REPEAT('a',1000)),(REPEAT('v',200)),(REPEAT('r',300)),(NULL),("12-12-2009");
+INSERT INTO t10(a) VALUES(REPEAT('a',1000)),(REPEAT('v',2000)),(REPEAT('r',300)),(NULL), ("");
+-----------------------------------data on master---------------------------------------------------------------
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+0 M,not compressed
+1000 aaaaaaaaaa M,not compressed
+2000 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+3364
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+10 12-12-2009 M,not compressed
+1000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+1564
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+10000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+6 qwerty M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+10576
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+3000 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+3344
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+254 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+596
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+1000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+1544
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+10000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+8 00-00-00 M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+10576
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+2000 vvvvvvvvvv M,not compressed
+5 April M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+2156
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+100 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+254 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+596
+SELECT LENGTH(a),SUBSTRING(a,1,10), "M,not compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) M,not compressed
+1000 aaaaaaaaaa M,not compressed
+200 vvvvvvvvvv M,not compressed
+300 rrrrrrrrrr M,not compressed
+NULL NULL M,not compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+1544
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 0
+-----------------------------------data on slave-----------------------------------------------------------------
+connection slave;
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t10;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+0 S,compressed
+1000 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t10';
+DATA_LENGTH
+108
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t9;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10 12-12-2009 S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t9';
+DATA_LENGTH
+100
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t8;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+6 qwerty S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t8';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t7;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+3000 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t7';
+DATA_LENGTH
+92
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t6;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t6';
+DATA_LENGTH
+80
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t5;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t5';
+DATA_LENGTH
+84
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t4;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+10000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+8 00-00-00 S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t4';
+DATA_LENGTH
+120
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t3;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+2000 vvvvvvvvvv S,compressed
+5 April S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t3';
+DATA_LENGTH
+88
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t2;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+100 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+254 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DATA_LENGTH
+80
+SELECT LENGTH(a), SUBSTRING(a,1,10), "S,compressed" from t1;
+LENGTH(a) SUBSTRING(a,1,10) S,compressed
+1000 aaaaaaaaaa S,compressed
+200 vvvvvvvvvv S,compressed
+300 rrrrrrrrrr S,compressed
+NULL NULL S,compressed
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+DATA_LENGTH
+84
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+VARIABLE_NAME VARIABLE_VALUE
+COLUMN_COMPRESSIONS 0
+COLUMN_DECOMPRESSIONS 58
+connection master;
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+-----------------------------------------------------------------------------------------------------------------
+------varchar(1000)->varchar(999) compressed, varchar(1000) compressed->varchar(999) ----------------------------
+-----------------------------------------------------------------------------------------------------------------
+connection slave;
+CREATE TABLE t1 (a VARCHAR(999) COMPRESSED) ENGINE=myisam;
+CREATE TABLE t2 (a VARCHAR(999)) ENGINE=myisam;
+show warnings;
+Level Code Message
+call mtr.add_suppression("Slave: Data too long for column 'a' at row 1 Error_code: 1406");
+call mtr.add_suppression("Slave: Table 't2' already exists Error_code: 1050");
+connection master;
+CREATE TABLE IF NOT EXISTS t1 (a VARCHAR(1000))ENGINE=myisam;
+CREATE TABLE IF NOT EXISTS t2 (a VARCHAR(1000) COMPRESSED)ENGINE=myisam;
+INSERT INTO t1(a) VALUES(REPEAT('a',1000));
+connection slave;
+include/wait_for_slave_sql_error_and_skip.inc [errno=1406,1677]
+show warnings;
+Level Code Message
+connection master;
+INSERT INTO t2(a) VALUES(REPEAT('a',1000));
+connection slave;
+include/wait_for_slave_sql_error_and_skip.inc [errno=1406,1677]
+show warnings;
+Level Code Message
+SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+connection master;
+DROP TABLE t1,t2;
+connection slave;
+include/rpl_end.inc
diff --git a/mysql-test/r/compound.result b/mysql-test/r/compound.result
index 49ad567a055..a54faff4562 100644
--- a/mysql-test/r/compound.result
+++ b/mysql-test/r/compound.result
@@ -112,7 +112,8 @@ select @a|
/**/ while (select count(*) from information_schema.tables where table_schema='test')
do
select concat('drop table ', table_name) into @a
-from information_schema.tables where table_schema='test' limit 1;
+from information_schema.tables where table_schema='test'
+ order by table_name limit 1;
select @a as 'executing:';
prepare dt from @a;
execute dt;
diff --git a/mysql-test/r/connect.result b/mysql-test/r/connect.result
index dfe4406605e..f36483e6d8d 100644
--- a/mysql-test/r/connect.result
+++ b/mysql-test/r/connect.result
@@ -32,6 +32,7 @@ time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
+transaction_registry
user
connect con2,localhost,root,,test;
show tables;
@@ -79,6 +80,7 @@ time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
+transaction_registry
user
connect con4,localhost,test,gambling,test;
show tables;
@@ -138,6 +140,7 @@ time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
+transaction_registry
user
connect con6,localhost,test,gambling3,test;
show tables;
diff --git a/mysql-test/r/create_drop_function.result b/mysql-test/r/create_drop_function.result
index 8e529a587fa..3ba6581d61b 100644
--- a/mysql-test/r/create_drop_function.result
+++ b/mysql-test/r/create_drop_function.result
@@ -3,8 +3,8 @@ CREATE FUNCTION f1(str char(20))
RETURNS CHAR(100)
RETURN CONCAT('Hello, ', str, '!');
SELECT * FROM mysql.proc WHERE name like 'f1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
-test f1 FUNCTION f1 SQL CONTAINS_SQL NO DEFINER str char(20) char(100) CHARSET latin1 RETURN CONCAT('Hello, ', str, '!') root@localhost 2014-09-30 08:00:00 2014-09-30 08:00:00 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION latin1 latin1_swedish_ci latin1_swedish_ci RETURN CONCAT('Hello, ', str, '!')
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
+test f1 FUNCTION f1 SQL CONTAINS_SQL NO DEFINER str char(20) char(100) CHARSET latin1 RETURN CONCAT('Hello, ', str, '!') root@localhost 2014-09-30 08:00:00 2014-09-30 08:00:00 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION latin1 latin1_swedish_ci latin1_swedish_ci RETURN CONCAT('Hello, ', str, '!') NONE
SELECT f1('world');
f1('world')
Hello, world!
diff --git a/mysql-test/r/create_user.result b/mysql-test/r/create_user.result
index 1411f2e8792..8001b43221b 100644
--- a/mysql-test/r/create_user.result
+++ b/mysql-test/r/create_user.result
@@ -1,57 +1,57 @@
create user foo;
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N N 0.000000
drop user foo;
create user foo identified by 'password';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N N 0.000000
drop user foo;
create user foo identified by 'password' require SSL;
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N ANY 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N ANY 0 0 0 0 N N 0.000000
drop user foo;
create user foo identified by 'password' require X509;
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N X509 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N X509 0 0 0 0 N N 0.000000
drop user foo;
create user foo identified by 'password' require CIPHER 'cipher';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED cipher 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED cipher 0 0 0 0 N N 0.000000
drop user foo;
create user foo identified by 'password' require ISSUER 'issuer';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED issuer 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED issuer 0 0 0 0 N N 0.000000
drop user foo;
create user foo identified by 'password' require SUBJECT 'subject';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED subject 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED subject 0 0 0 0 N N 0.000000
drop user foo;
create user foo identified by 'password' require CIPHER 'cipher'
SUBJECT 'subject';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED cipher subject 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED cipher subject 0 0 0 0 N N 0.000000
drop user foo;
create user foo identified by 'password' require CIPHER 'cipher'
AND SUBJECT 'subject'
AND ISSUER 'issuer';
select * from mysql.user where user = 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED cipher issuer subject 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED cipher issuer subject 0 0 0 0 N N 0.000000
drop user foo;
create user foo, foo2 identified by 'password' require CIPHER 'cipher'
AND SUBJECT 'subject'
AND ISSUER 'issuer';
select * from mysql.user where user like 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED cipher issuer subject 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED cipher issuer subject 0 0 0 0 N N 0.000000
#--warning ER_USER_CREATE_EXISTS
create user if not exists foo, foo2 identified by 'password2'
require CIPHER 'cipher2' AND SUBJECT 'subject2' AND ISSUER 'issuer2';
@@ -59,14 +59,14 @@ Warnings:
Note 1973 Can't create user 'foo'@'%'; it already exists
Note 1973 Can't create user 'foo2'@'%'; it already exists
select * from mysql.user where user like 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED cipher issuer subject 0 0 0 0 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED cipher issuer subject 0 0 0 0 N N 0.000000
drop user foo, foo2;
create user foo with MAX_QUERIES_PER_HOUR 10
MAX_UPDATES_PER_HOUR 20
MAX_CONNECTIONS_PER_HOUR 30
MAX_USER_CONNECTIONS 40;
select * from mysql.user where user like 'foo';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
-% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 20 30 40 N N 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+% foo N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 20 30 40 N N 0.000000
drop user foo;
diff --git a/mysql-test/r/cte_recursive.result b/mysql-test/r/cte_recursive.result
index 1288f588a09..dd0f1e91cb7 100644
--- a/mysql-test/r/cte_recursive.result
+++ b/mysql-test/r/cte_recursive.result
@@ -3092,3 +3092,16 @@ ERROR 21000: The used SELECT statements have a different number of columns
DROP TABLE a_tbl;
WITH RECURSIVE x AS (SELECT 1,2 UNION ALL SELECT 1 FROM x) SELECT * FROM x;
ERROR 21000: The used SELECT statements have a different number of columns
+#
+# MDEV-15162: Setting user variable in recursive CTE
+#
+SET @c=1;
+WITH RECURSIVE cte AS
+(SELECT 5
+UNION
+SELECT @c:=@c+1 FROM cte WHERE @c<3)
+SELECT * FROM cte;
+5
+5
+2
+3
diff --git a/mysql-test/r/ctype_upgrade.result b/mysql-test/r/ctype_upgrade.result
index 53cb858035b..5f0be66f8fb 100644
--- a/mysql-test/r/ctype_upgrade.result
+++ b/mysql-test/r/ctype_upgrade.result
@@ -8,7 +8,7 @@ CHECK TABLE maria050313_utf8_croatian_ci FOR UPGRADE;
Table Op Msg_type Msg_text
test.maria050313_utf8_croatian_ci check error Upgrade required. Please do "REPAIR TABLE `maria050313_utf8_croatian_ci`" or dump/reload to fix it!
SHOW CREATE TABLE maria050313_utf8_croatian_ci;
-ERROR HY000: Table rebuild required. Please do "ALTER TABLE `test.maria050313_utf8_croatian_c` FORCE" or dump/reload to fix it!
+ERROR HY000: Table rebuild required. Please do "ALTER TABLE `test.maria050313_utf8_croatian_ci` FORCE" or dump/reload to fix it!
REPAIR TABLE maria050313_utf8_croatian_ci;
Table Op Msg_type Msg_text
test.maria050313_utf8_croatian_ci repair status OK
@@ -45,7 +45,7 @@ CHECK TABLE maria050313_ucs2_croatian_ci_def FOR UPGRADE;
Table Op Msg_type Msg_text
test.maria050313_ucs2_croatian_ci_def check error Upgrade required. Please do "REPAIR TABLE `maria050313_ucs2_croatian_ci_def`" or dump/reload to fix it!
SELECT count(*) FROM maria050313_ucs2_croatian_ci_def;
-ERROR HY000: Table rebuild required. Please do "ALTER TABLE `test.maria050313_ucs2_croatian_c` FORCE" or dump/reload to fix it!
+ERROR HY000: Table rebuild required. Please do "ALTER TABLE `test.maria050313_ucs2_croatian_ci_def` FORCE" or dump/reload to fix it!
REPAIR TABLE maria050313_ucs2_croatian_ci_def;
Table Op Msg_type Msg_text
test.maria050313_ucs2_croatian_ci_def repair status OK
@@ -257,6 +257,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -315,6 +316,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
diff --git a/mysql-test/r/ctype_utf8mb4_innodb.result b/mysql-test/r/ctype_utf8mb4_innodb.result
index c444e872f98..956b2f83d9e 100644
--- a/mysql-test/r/ctype_utf8mb4_innodb.result
+++ b/mysql-test/r/ctype_utf8mb4_innodb.result
@@ -244,7 +244,9 @@ hex(s1)
413F
drop table t1;
create table t1 (a text character set utf8mb4, primary key(a(371))) engine InnoDB;
-ERROR 42000: Specified key was too long; max key length is 767 bytes
+show warnings;
+Level Code Message
+drop table if exists t1;
CREATE TABLE t1 ( a varchar(10) ) CHARACTER SET utf8mb4 ENGINE InnoDB;
INSERT INTO t1 VALUES ( 'test' );
SELECT a.a, b.a FROM t1 a, t1 b WHERE a.a = b.a;
@@ -1425,8 +1427,6 @@ CREATE TABLE t1 (
a varchar(255) NOT NULL default '',
KEY a (a)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
-Warnings:
-Warning 1071 Specified key was too long; max key length is 767 bytes
insert into t1 values (_utf8mb4 0xe880bd);
insert into t1 values (_utf8mb4 0x5b);
select hex(a) from t1;
@@ -1473,8 +1473,6 @@ DROP TABLE IF EXISTS t1;
Warnings:
Note 1051 Unknown table 'test.t1'
CREATE TABLE t1(a VARCHAR(255), KEY(a)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-Warnings:
-Warning 1071 Specified key was too long; max key length is 767 bytes
INSERT INTO t1 VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
INSERT INTO t1 VALUES('uu');
check table t1;
@@ -2346,8 +2344,6 @@ Tape TINYTEXT,
PRIMARY KEY (clipid),
KEY tape(Tape(255))
) CHARACTER SET=utf8mb4 ENGINE InnoDB;
-Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
ALTER TABLE t1 ADD mos TINYINT DEFAULT 0 AFTER clipid;
SHOW CREATE TABLE t1;
Table Create Table
@@ -2356,7 +2352,7 @@ t1 CREATE TABLE `t1` (
`mos` tinyint(4) DEFAULT 0,
`Tape` tinytext DEFAULT NULL,
PRIMARY KEY (`clipid`),
- KEY `tape` (`Tape`(191))
+ KEY `tape` (`Tape`(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
DROP TABLE t1;
#
diff --git a/mysql-test/r/ctype_utf8mb4_myisam.result b/mysql-test/r/ctype_utf8mb4_myisam.result
index 5176f92dc0f..fd58e12542c 100644
--- a/mysql-test/r/ctype_utf8mb4_myisam.result
+++ b/mysql-test/r/ctype_utf8mb4_myisam.result
@@ -244,7 +244,12 @@ hex(s1)
413F
drop table t1;
create table t1 (a text character set utf8mb4, primary key(a(371))) engine MyISAM;
-ERROR 42000: Specified key was too long; max key length is 1000 bytes
+show warnings;
+Level Code Message
+Error 1071 Specified key was too long; max key length is 1000 bytes
+drop table if exists t1;
+Warnings:
+Note 1051 Unknown table 'test.t1'
CREATE TABLE t1 ( a varchar(10) ) CHARACTER SET utf8mb4 ENGINE MyISAM;
INSERT INTO t1 VALUES ( 'test' );
SELECT a.a, b.a FROM t1 a, t1 b WHERE a.a = b.a;
diff --git a/mysql-test/r/custom_aggregate_functions.result b/mysql-test/r/custom_aggregate_functions.result
new file mode 100644
index 00000000000..67be44c43f7
--- /dev/null
+++ b/mysql-test/r/custom_aggregate_functions.result
@@ -0,0 +1,949 @@
+create table t2 (sal int(10));
+create aggregate function f1(x INT) returns int
+begin
+declare continue handler for not found return 0;
+loop
+fetch group next row;
+insert into t2 (sal) values (x);
+end loop;
+end|
+create table t1 (sal int(10),id int(10));
+INSERT INTO t1 (sal,id) VALUES (5000,1);
+INSERT INTO t1 (sal,id) VALUES (2000,1);
+INSERT INTO t1 (sal,id) VALUES (1000,1);
+select f1(sal) from t1 where id>= 1;
+f1(sal)
+0
+Warnings:
+Note 4094 At line 5 in test.f1
+Note 4094 At line 5 in test.f1
+Note 4094 At line 5 in test.f1
+select * from t2;
+sal
+5000
+2000
+1000
+drop table t2;
+drop function f1;
+create aggregate function f1(x INT) returns INT
+begin
+insert into t1(sal) values (x);
+return x;
+end|
+ERROR HY000: Aggregate specific instruction(FETCH GROUP NEXT ROW) missing from the aggregate function
+create function f1(x INT) returns INT
+begin
+set x=5;
+fetch group next row;
+return x+1;
+end |
+ERROR HY000: Non-aggregate function contains aggregate specific instructions: (FETCH GROUP NEXT ROW)
+create aggregate function f1(x INT) returns INT
+begin
+declare continue handler for not found return x;
+loop
+fetch group next row;
+end loop;
+end |
+select f1(1);
+f1(1)
+1
+show create function f1;
+Function sql_mode Create Function character_set_client collation_connection Database Collation
+f1 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` AGGREGATE FUNCTION `f1`(x INT) RETURNS int(11)
+begin
+declare continue handler for not found return x;
+loop
+fetch group next row;
+end loop;
+end latin1 latin1_swedish_ci latin1_swedish_ci
+alter function f1 aggregate none;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'aggregate none' at line 1
+show create function f1;
+Function sql_mode Create Function character_set_client collation_connection Database Collation
+f1 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` AGGREGATE FUNCTION `f1`(x INT) RETURNS int(11)
+begin
+declare continue handler for not found return x;
+loop
+fetch group next row;
+end loop;
+end latin1 latin1_swedish_ci latin1_swedish_ci
+select f1(1);
+f1(1)
+1
+drop function f1;
+create aggregate function f2(i int) returns int
+begin
+FEtCH GROUP NEXT ROW;
+if i <= 0 then
+return 0;
+elseif i = 1 then
+return (select count(*) from t1 where id = i);
+else
+return (select count(*) + f2( i - 1) from t1 where id = i);
+end if;
+end|
+select f2(1)|
+f2(1)
+3
+select f2(2)|
+ERROR HY000: Recursive stored functions and triggers are not allowed
+select f2(3)|
+ERROR HY000: Recursive stored functions and triggers are not allowed
+drop function f2|
+create aggregate function f1(x int) returns int
+begin
+declare mini int default 0;
+declare continue handler for not found return mini;
+loop
+fetch group next row;
+set mini= mini+x;
+fetch group next row;
+end loop;
+end|
+select f1(10);
+f1(10)
+10
+select f1(sal) from t1;
+f1(sal)
+6000
+select f1(sal) from t1 where 1=0;
+f1(sal)
+NULL
+drop function f1;
+create aggregate function f1(x int) returns int
+begin
+declare mini int default 0;
+LOOP
+FETCH GROUP NEXT ROW;
+set mini = mini + x;
+END LOOP;
+end|
+ERROR 42000: No RETURN found in FUNCTION test.f1
+create aggregate function f1(x int) returns int
+begin
+declare mini int default 0;
+LOOP
+FETCH GROUP NEXT ROW;
+set mini = mini + x;
+END LOOP;
+return -1;
+end|
+select f1(sal) from t1|
+ERROR 02000: No data - zero rows fetched, selected, or processed
+drop function f1|
+create aggregate function f1(x int) returns int
+begin
+declare mini int default 0;
+declare continue handler for not found return mini;
+FETCH GROUP NEXT ROW;
+set mini = mini + x;
+end|
+select f1(sal) from t1|
+ERROR 2F005: FUNCTION f1 ended without RETURN
+drop function f1|
+create aggregate function f1(x int) returns int
+begin
+declare mini int default 0;
+declare continue handler for not found set mini=-1;
+LOOP
+FETCH GROUP NEXT ROW;
+set mini = mini + x;
+END LOOP;
+return 0;
+end|
+select f1(sal) from t1|
+ERROR 2F005: FUNCTION f1 ended without RETURN
+drop function f1|
+drop table t1|
+create table t1 (sal int, id int, val int, counter int, primary key(id));
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 1, 10, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (2000, 2, 16, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 3, 18, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 4, 15, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (3000, 5, 11, 5);
+create aggregate function f1(x INT) returns double
+begin
+declare z double default 0;
+declare continue handler for not found return z;
+loop
+fetch group next row;
+set z= z+x;
+end loop;
+end|
+select id, f1(sal) from t1 where id>= 1 group by counter order by val;
+id f1(sal)
+1 3000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1;
+id f1(sal)
+1 17000
+select id, f1(sal) from t1 where id>= 1;
+id f1(sal)
+1 17000
+select id, f1(sal) from t1 where id>= 1 group by counter;
+id f1(sal)
+1 3000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by id;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by val;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by counter order by counter;
+id f1(sal)
+1 3000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by counter order by val;
+id f1(sal)
+1 3000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by counter order by id;
+id f1(sal)
+1 3000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by val order by counter;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by val order by id;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by val order by val;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+drop table t1;
+create table t1 (sal int, id int, val int, counter int, primary key(id), unique key(val));
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 1, 10, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (2000, 2, NULL, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 3, 18, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 4, 15, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (3000, 5, 11, 5);
+select id, f1(sal) from t1;
+id f1(sal)
+1 17000
+select id, f1(sal) from t1 where id>= 1;
+id f1(sal)
+1 17000
+select id, f1(sal) from t1 where id>= 1 group by counter;
+id f1(sal)
+1 3000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by id;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by val;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by counter order by counter;
+id f1(sal)
+1 3000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by counter order by val;
+id f1(sal)
+1 3000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by counter order by id;
+id f1(sal)
+1 3000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by val order by counter;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by val order by id;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by val order by val;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+drop table t1;
+create table t1 (sal int, id int, val int, counter int, primary key(id), INDEX name (val,counter));
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 1, 10, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (2000, 2, 10, 4);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 3, 18, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 4, 11, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (3000, 5, 11, 5);
+select id, f1(sal) from t1;
+id f1(sal)
+1 17000
+select id, f1(sal) from t1 where id>= 1;
+id f1(sal)
+1 17000
+select id, f1(sal) from t1 where id>= 1 group by counter;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by id;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by val;
+id f1(sal)
+1 3000
+3 6000
+4 8000
+select id, f1(sal) from t1 where id>= 1 group by counter order by counter;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by counter order by val;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by counter order by id;
+id f1(sal)
+1 1000
+2 2000
+3 6000
+4 5000
+5 3000
+select id, f1(sal) from t1 where id>= 1 group by val order by counter;
+id f1(sal)
+1 3000
+3 6000
+4 8000
+select id, f1(sal) from t1 where id>= 1 group by val order by id;
+id f1(sal)
+1 3000
+3 6000
+4 8000
+select id, f1(sal) from t1 where id>= 1 group by val order by val;
+id f1(sal)
+1 3000
+3 6000
+4 8000
+drop table t1;
+drop function f1;
+create aggregate function f1(x INT) returns double
+begin
+declare z double default 0;
+declare continue handler for not found return z;
+loop
+fetch group next row;
+set z= z+x;
+end loop;
+end|
+create aggregate function f2() returns double
+begin
+declare z int default 0;
+declare continue handler for not found return z;
+loop
+fetch group next row;
+set z = z+1;
+end loop;
+end|
+create table t1 (sal int, id int, val int, counter int);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 2, 10, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (2000, 1, 16, 5);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 2, 18, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 3, 15, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (3000, 4, 11, 4);
+prepare test from "select f2() from t1 where id>= ?";
+set @param= 2;
+execute test using @param;
+f2()
+4
+execute test using @param;
+f2()
+4
+execute test using @param;
+f2()
+4
+execute test using @param;
+f2()
+4
+set @param= 1;
+execute test using @param;
+f2()
+5
+set @param= 3;
+execute test using @param;
+f2()
+2
+set @param= 4;
+execute test using @param;
+f2()
+1
+deallocate prepare test;
+prepare test from "select f1(sal) from t1 where id>= ?";
+set @param= 2;
+execute test using @param;
+f1(sal)
+15000
+execute test using @param;
+f1(sal)
+15000
+execute test using @param;
+f1(sal)
+15000
+execute test using @param;
+f1(sal)
+15000
+set @param= 1;
+execute test using @param;
+f1(sal)
+17000
+set @param= 3;
+execute test using @param;
+f1(sal)
+8000
+set @param= 4;
+execute test using @param;
+f1(sal)
+3000
+set @param= 5;
+execute test using @param;
+f1(sal)
+NULL
+deallocate prepare test;
+drop function f2;
+prepare test from "select f1(sal) from t1 where id>= ?";
+set @param= 2;
+execute test using @param;
+f1(sal)
+15000
+drop function f1;
+create function f1(x int) returns int
+return -1;
+execute test using @param;
+f1(sal)
+-1
+-1
+-1
+-1
+drop function f1;
+create aggregate function f1(x INT) returns double
+begin
+declare z double default 0;
+declare continue handler for not found return z;
+loop
+fetch group next row;
+set z= z+x;
+end loop;
+end|
+execute test using @param;
+f1(sal)
+15000
+deallocate prepare test;
+drop table t1;
+drop function f1;
+create table t1 (sal int, id int, val varchar(10), counter int);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 2, 'ab', 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 1, 'cd', 5);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 2, 'ef', 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 3, 'gh', 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 4, 'ij', 4);
+create table t2 (sal int, id int, val int, counter int);
+INSERT INTO t2 (sal, id, val, counter) VALUES (1000, 2, 10, 2);
+INSERT INTO t2 (sal, id, val, counter) VALUES (2000, 1, 16, 5);
+INSERT INTO t2 (sal, id, val, counter) VALUES (6000, 2, 18, 1);
+INSERT INTO t2 (sal, id, val, counter) VALUES (5000, 3, 15, 3);
+INSERT INTO t2 (sal, id, val, counter) VALUES (3000, 4, 11, 4);
+create aggregate function f1(x double) returns double
+begin
+declare z double default 0;
+declare continue handler for not found return z;
+loop
+fetch group next row;
+set z= z+x;
+end loop;
+end|
+create aggregate function f2(x INT) returns CHAR(10)
+begin
+declare mini INT default 0;
+declare continue handler for not found return mini;
+loop
+fetch group next row;
+set mini= mini + x;
+end loop;
+end|
+create aggregate function f3(x INT) returns CHAR(10)
+begin
+declare mini INT default 0;
+declare continue handler for not found return mini;
+loop
+fetch group next row;
+set mini= mini + x;
+fetch group next row;
+set mini= mini - x;
+end loop;
+end|
+create aggregate function f4(x INT, y varchar(10)) returns varchar(1000)
+begin
+declare str varchar(1000) default '';
+declare continue handler for not found return str;
+loop
+fetch group next row;
+set str= concat(str,y);
+end loop;
+end|
+create aggregate function f5(x INT) returns varchar(1000)
+begin
+declare z int default 0;
+DECLARE cur1 CURSOR FOR SELECT sal FROM test.t2;
+declare continue handler for not found return 0;
+loop
+fetch group next row;
+set z = z+x;
+end loop;
+end|
+create function f6(x int) returns int
+return (select f1(sal) from t1)|
+select f1(sal) from t1;
+f1(sal)
+5000
+select f1(sal) from t1 where id>= 1 group by counter;
+f1(sal)
+1000
+1000
+1000
+1000
+1000
+select f3(sal) from t1;
+f3(sal)
+1000
+select f2(val) from t1;
+ERROR 22007: Incorrect integer value: 'ab' for column 'x' at row 1
+select val, id, c from (select f1(sal) as c from t2) as t1, t2;
+val id c
+10 2 17000
+11 4 17000
+15 3 17000
+16 1 17000
+18 2 17000
+select f1(sal),f1(val), f1(id), f1(sal) from t2;
+f1(sal) f1(val) f1(id) f1(sal)
+17000 70 12 17000
+select f4(sal, val) from t1;
+f4(sal, val)
+abcdefghij
+select c from (select f1(sal) as c from t2) as t1;
+c
+17000
+select f1((select val from t2 where 0 > 1)) from t1;
+f1((select val from t2 where 0 > 1))
+NULL
+select f1((select val from t2 where id= 1)) from t1;
+f1((select val from t2 where id= 1))
+80
+select f5(sal) from t1;
+f5(sal)
+0
+SELECT f1(sal)*f1(sal) FROM t1;
+f1(sal)*f1(sal)
+25000000
+SELECT (SELECT f1(sal) FROM t1) FROM t2;
+(SELECT f1(sal) FROM t1)
+5000
+5000
+5000
+5000
+5000
+select id, f1(sal) from t1;
+id f1(sal)
+2 5000
+select id, f1(sal) from t1 where id>= 1;
+id f1(sal)
+2 5000
+select f1(sal), f1(sal) from t1 where id>= 1 group by counter;
+f1(sal) f1(sal)
+1000 1000
+1000 1000
+1000 1000
+1000 1000
+1000 1000
+select f1(sal), f1(sal) from t1 where id>= 1 group by id ;
+f1(sal) f1(sal)
+1000 1000
+1000 1000
+1000 1000
+2000 2000
+select f1(sal) from t1 where id>= 1 group by id ;
+f1(sal)
+1000
+1000
+1000
+2000
+select f1(sal) from t1 where id>= 1 order by counter;
+f1(sal)
+5000
+select f1(sal) from t1 where id>= 1 group by id order by counter;
+f1(sal)
+2000
+1000
+1000
+1000
+select counter, id, f1(sal) from t1 where id>= 1 group by id order by counter;
+counter id f1(sal)
+2 2 2000
+3 3 1000
+4 4 1000
+5 1 1000
+select id, f1(sal) from t1 where id>= 1 group by id order by counter;
+id f1(sal)
+2 2000
+3 1000
+4 1000
+1 1000
+drop table t1;
+drop table t2;
+drop function f1;
+drop function f2;
+drop function f3;
+drop function f4;
+drop function f5;
+drop function f6;
+create aggregate function f1(x INT) returns INT
+begin
+declare z double default 1000;
+declare continue handler for not found return z;
+loop
+fetch group next row;
+set z= (z&x);
+end loop;
+end|
+create table t1 (sal int, id int, val int, counter int);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 2, 10, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (7000, 1, 16, 5);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 2, 18, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 3, 15, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (3000, 4, 11, 4);
+INSERT INTO t1 (sal, id, val, counter) VALUES (2000, 5, 10, 7);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 7, 13, 8);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 6, 19, 9);
+INSERT INTO t1 (sal, id, val, counter) VALUES (7000, 7, 12, 0);
+INSERT INTO t1 (sal, id, val, counter) VALUES (4000, 6, 14, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (8000, 5, 19, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (9000, 4, 11, 4);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 3, 11, 2);
+select f1(sal) from t1 where id>= 1;
+f1(sal)
+768
+drop function f1;
+create aggregate function f1(x INT) returns double
+begin
+declare z double default 0;
+declare count double default 0;
+declare continue handler for not found return z/count;
+loop
+fetch group next row;
+set z= z+x;
+set count= count+1;
+end loop;
+end|
+select f1(sal) from t1 where id>= 1;
+f1(sal)
+4923.076923076923
+drop function f1;
+create aggregate function f1(x INT) returns INT
+begin
+declare maxi INT default -1;
+declare continue handler for not found return maxi;
+loop
+fetch group next row;
+if maxi < x then
+set maxi= x;
+end if;
+end loop;
+end|
+select f1(sal) from t1 where id>= 1;
+f1(sal)
+9000
+drop function f1;
+create aggregate function f1(x INT) returns double
+begin
+declare mini INT default 100000;
+declare continue handler for not found return mini;
+loop
+fetch group next row;
+if mini > x then
+set mini = x;
+end if;
+end loop;
+end|
+select f1(sal) from t1 where id>= 1;
+f1(sal)
+1000
+drop function f1;
+create aggregate function f1(x INT) returns double
+begin
+declare z double default 0;
+declare continue handler for not found return z;
+loop
+fetch group next row;
+set z= z^x;
+end loop;
+end|
+select f1(sal) from t1 where id>= 1;
+f1(sal)
+16288
+drop function f1;
+create aggregate function f1(x INT) returns INT
+begin
+declare z int default 0;
+declare continue handler for not found return z;
+loop
+fetch group next row;
+set z= z+x;
+end loop;
+end|
+select f1(sal) from t1 where id>= 1;
+f1(sal)
+64000
+create aggregate function f2() returns INT
+begin
+declare z double default 0;
+declare continue handler for not found return z;
+loop
+fetch group next row;
+set z= z+1;
+end loop;
+end|
+select f2() from t1;
+f2()
+13
+create table t2 (sal int, id int);
+INSERT INTO t2 (sal, id) VALUES (NULL, 1);
+INSERT INTO t2 (sal, id) VALUES (2000, 1);
+INSERT INTO t2 (sal, id) VALUES (3000, 1);
+select f1(sal) from t2;
+f1(sal)
+NULL
+select f1(1);
+f1(1)
+1
+create function f3() returns int
+return (select f1(sal) from t1);
+select f3();
+f3()
+64000
+create function f4() returns INT
+return 1;
+create aggregate function f5() returns INT
+begin
+declare z double default 0;
+declare continue handler for not found return z;
+loop
+fetch group next row;
+set z= z+f3();
+end loop;
+end|
+select f5() from t2;
+f5()
+192000
+Warnings:
+Note 4094 At line 6 in test.f5
+Note 4094 At line 6 in test.f5
+Note 4094 At line 6 in test.f5
+create aggregate function f6(x INT) returns INT
+begin
+declare z int default 0;
+declare continue handler for not found return z;
+loop
+fetch group next row;
+if x then
+set z= z+(select f1(sal) from t1);
+end if;
+end loop;
+end|
+select f6(sal) from t2;
+f6(sal)
+128000
+Warnings:
+Note 4094 At line 6 in test.f6
+Note 4094 At line 6 in test.f6
+select id, f1(sal) from t1 where id>= 1 group by id;
+id f1(sal)
+1 7000
+2 7000
+3 6000
+4 12000
+5 10000
+6 10000
+7 12000
+select counter, f1(sal) from t1 where id>= 1 group by counter;
+counter f1(sal)
+0 7000
+1 10000
+2 2000
+3 13000
+4 12000
+5 7000
+7 2000
+8 5000
+9 6000
+select val, f1(sal) from t1 where id>= 1 group by val;
+val f1(sal)
+10 3000
+11 13000
+12 7000
+13 5000
+14 4000
+15 5000
+16 7000
+18 6000
+19 14000
+select counter, f1(sal) from t1 where id>= 1 group by id order by counter;
+counter f1(sal)
+0 12000
+2 6000
+2 7000
+4 12000
+5 7000
+7 10000
+9 10000
+select counter, id, f1(sal), f1(sal) from t1 where id>= 1 group by id order by counter;
+counter id f1(sal) f1(sal)
+0 7 12000 12000
+2 2 7000 7000
+2 3 6000 6000
+4 4 12000 12000
+5 1 7000 7000
+7 5 10000 10000
+9 6 10000 10000
+select counter, id, f1(sal), sum(distinct sal) from t1 where id>= 1 group by id order by counter desc;
+counter id f1(sal) sum(distinct sal)
+0 7 12000 12000
+2 2 7000 7000
+2 3 6000 6000
+4 4 12000 12000
+5 1 7000 7000
+7 5 10000 10000
+9 6 10000 10000
+create table t3 (i int);
+INSERT INTO t3 (i) select f1(sal) from t1;
+select * from t3;
+i
+64000
+create aggregate function f7(x INT) returns INT
+begin
+declare z int default 0;
+DECLARE done BOOLEAN DEFAULT FALSE;
+DECLARE a,b,c INT;
+DECLARE cur1 CURSOR FOR SELECT id FROM test.t2;
+declare continue handler for not found return z;
+outer_loop: LOOP
+FETCH GROUP NEXT ROW;
+set z= z+x;
+inner_block: begin
+DECLARE cur2 CURSOR FOR SELECT id FROM test.t2;
+DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
+OPEN cur2;
+read_loop: LOOP
+FETCH cur2 INTO a;
+IF done THEN
+CLOSE cur2;
+LEAVE read_loop;
+END IF;
+END LOOP read_loop;
+end inner_block;
+END LOOP outer_loop;
+end|
+select f7(sal) from t1;
+f7(sal)
+64000
+Warnings:
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+Note 4094 At line 9 in test.f7
+drop table t1;
+drop table t2;
+drop table t3;
+drop function f1;
+drop function f2;
+drop function f3;
+drop function f4;
+drop function f5;
+drop function f6;
+drop function f7;
+create aggregate function f1(x date) returns date
+begin
+declare continue handler for not found return x;
+loop
+fetch group next row;
+end loop;
+end|
+select f1('2001-01-01'),cast(f1('2001-01-01') as time);
+f1('2001-01-01') cast(f1('2001-01-01') as time)
+2001-01-01 00:00:00
+drop function f1;
diff --git a/mysql-test/r/default.result b/mysql-test/r/default.result
index a03da4f8df1..3b1912f4a55 100644
--- a/mysql-test/r/default.result
+++ b/mysql-test/r/default.result
@@ -232,7 +232,7 @@ CREATE TABLE t1 (a INT DEFAULT 10);
INSERT INTO t1 VALUES (11);
CREATE VIEW v1 AS SELECT a AS a FROM t1;
CREATE VIEW v2 AS SELECT DEFAULT(a) AS a FROM t1;
-CREATE VIEW v3 AS SELECT VALUES(a) AS a FROM t1;
+CREATE VIEW v3 AS SELECT VALUE(a) AS a FROM t1;
SELECT * FROM v1;
a
11
@@ -546,8 +546,8 @@ CREATE PROCEDURE p1() CREATE TABLE t1 (a INT DEFAULT par);
CALL p1;
ERROR 42S22: Unknown column 'par' in 'DEFAULT'
DROP PROCEDURE p1;
-CREATE TABLE t1 (a INT DEFAULT VALUES(a));
-ERROR HY000: Function or expression 'values()' cannot be used in the DEFAULT clause of `a`
+CREATE TABLE t1 (a INT DEFAULT VALUE(a));
+ERROR HY000: Function or expression 'value()' cannot be used in the DEFAULT clause of `a`
CREATE TABLE t1 (a INT);
CREATE TRIGGER tr1 AFTER INSERT ON t1 FOR EACH ROW CREATE TABLE t2 (a INT DEFAULT NEW.a);
ERROR HY000: Function or expression 'NEW.a' cannot be used in the DEFAULT clause of `a`
diff --git a/mysql-test/r/derived.result b/mysql-test/r/derived.result
index d227bbd7f06..ebbc08aa958 100644
--- a/mysql-test/r/derived.result
+++ b/mysql-test/r/derived.result
@@ -896,34 +896,34 @@ WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_N
A.DIVISION=C1.DIVISION AND A.RECEIVABLE_GROUP=C1.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=C1.CREDIT_LIMIT
ORDER BY TOTAL DESC;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived3> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived4> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived5> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived6> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived7> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived8> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived9> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived10> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived11> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived12> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived13> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived14> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived15> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived16> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived17> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived18> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived19> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived20> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived21> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived22> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived23> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived24> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived25> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived26> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived27> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived28> system NULL NULL NULL NULL 0 const row not found
-1 PRIMARY <derived29> system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived3> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived4> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived5> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived6> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived7> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived8> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived9> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived10> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived11> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived12> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived13> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived14> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived15> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived16> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived17> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived18> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived19> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived20> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived21> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived22> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived23> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived24> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived25> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived26> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived27> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived28> system NULL NULL NULL NULL 0 Const row not found
+1 PRIMARY <derived29> system NULL NULL NULL NULL 0 Const row not found
29 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
28 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
27 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
diff --git a/mysql-test/r/derived_cond_pushdown.result b/mysql-test/r/derived_cond_pushdown.result
index d96eee8d4e4..32d3c88cc8d 100644
--- a/mysql-test/r/derived_cond_pushdown.result
+++ b/mysql-test/r/derived_cond_pushdown.result
@@ -6999,6 +6999,3722 @@ drop view v_union,v2_union,v3_union,v4_union;
drop view v_double,v_char,v_decimal;
drop table t1,t2,t1_double,t2_double,t1_char,t2_char,t1_decimal,t2_decimal;
#
+# MDEV-14579: pushdown conditions into materialized views/derived tables
+# that are defined with EXIST or/and INTERSECT
+#
+create table t1 (a int, b int, c int);
+create table t2 (a int, b int, c int);
+insert into t1 values
+(1,21,345), (1,33,7), (8,33,114), (1,21,500), (1,19,117), (5,14,787),
+(8,33,123), (9,10,211), (5,16,207), (1,33,988), (5,27,132), (1,21,104),
+(6,20,309), (6,20,315), (1,21,101), (4,33,404), (9,10,800), (1,21,123);
+insert into t2 values
+(2,3,207), (1,16,909), (5,14,312),
+(5,33,207), (6,20,211), (1,19,132),
+(8,33,117), (3,21,231), (6,23,303);
+create view v1 as
+select a, b, min(c) as c from t1
+where t1.a<9 group by a,b having c < 300
+intersect
+select a, b, min(c) as c from t1
+where t1.b>10 group by a,b having c > 100;
+# using intersect in view definition
+# conjunctive subformulas : pushing into WHERE
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
+a b c a b c
+1 21 101 1 16 909
+1 19 117 1 16 909
+1 21 101 1 19 132
+1 19 117 1 19 132
+select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
+a b c a b c
+1 21 101 1 16 909
+1 19 117 1 16 909
+1 21 101 1 19 132
+1 19 117 1 19 132
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a < 5 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a < 5"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c > 100",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a < 5"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using intersect in view definition
+# conjunctive subformulas : pushing into WHERE
+# pushing equalities
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a=8);
+a b c a b c
+8 33 114 8 33 117
+select * from v1,t2 where (v1.a=t2.a) and (v1.a=8);
+a b c a b c
+8 33 114 8 33 117
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a=8);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a=8);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a = 8"
+ },
+ "block-nl-join": {
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "v1.a = 8"
+ },
+ "buffer_type": "flat",
+ "buffer_size": "256Kb",
+ "join_type": "BNL",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a = 8"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c > 100",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a = 8 and t1.b > 10"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using intersect in view definition
+# conjunctive subformulas : pushing into WHERE using equalities
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (t2.a=8);
+a b c a b c
+8 33 114 8 33 117
+select * from v1,t2 where (v1.a=t2.a) and (t2.a=8);
+a b c a b c
+8 33 114 8 33 117
+explain select * from v1,t2 where (v1.a=t2.a) and (t2.a=8);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (t2.a=8);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a = 8"
+ },
+ "block-nl-join": {
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "v1.a = 8"
+ },
+ "buffer_type": "flat",
+ "buffer_size": "256Kb",
+ "join_type": "BNL",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a = 8"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c > 100",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a = 8 and t1.b > 10"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using intersect in view definition
+# conjunctive subformulas : pushing into HAVING
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.c>200);
+a b c a b c
+5 16 207 5 14 312
+5 16 207 5 33 207
+select * from v1,t2 where (v1.a=t2.a) and (v1.c>200);
+a b c a b c
+5 16 207 5 14 312
+5 16 207 5 33 207
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.c>200);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.c>200);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.c > 200",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300 and c > 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c > 100 and c > 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using intersect in view definition
+# conjunctive subformulas : pushing into WHERE
+# conjunctive subformulas : pushing into HAVING
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>110);
+a b c a b c
+1 19 117 1 16 909
+1 19 117 1 19 132
+select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>110);
+a b c a b c
+1 19 117 1 16 909
+1 19 117 1 19 132
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>110);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>110);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a < 5 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.c > 110",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300 and c > 110",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a < 5"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c > 100 and c > 110",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a < 5"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using intersect in view definition
+# extracted or formula : pushing into WHERE
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
+a b c a b c
+5 16 207 5 14 312
+5 16 207 5 33 207
+8 33 114 8 33 117
+select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
+a b c a b c
+5 16 207 5 14 312
+5 16 207 5 33 207
+8 33 114 8 33 117
+explain select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.b > 27 or v1.b < 19",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and (t1.b > 27 or t1.b < 19)"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c > 100",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and (t1.b > 27 or t1.b < 19)"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using intersect in view definition
+# extracted or formula : pushing into HAVING
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where
+(v1.a=t2.a) and ((v1.c>200) or (v1.c<105));
+a b c a b c
+1 21 101 1 16 909
+5 16 207 5 14 312
+5 16 207 5 33 207
+1 21 101 1 19 132
+select * from v1,t2 where
+(v1.a=t2.a) and ((v1.c>200) or (v1.c<105));
+a b c a b c
+1 21 101 1 16 909
+5 16 207 5 14 312
+5 16 207 5 33 207
+1 21 101 1 19 132
+explain select * from v1,t2 where
+(v1.a=t2.a) and ((v1.c>200) or (v1.c<105));
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where
+(v1.a=t2.a) and ((v1.c>200) or (v1.c<105));
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.c > 200 or v1.c < 105",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300 and (c > 200 or c < 105)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c > 100 and (c > 200 or c < 105)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using intersect in view definition
+# extracted or formula : pushing into WHERE
+# extracted or formula : pushing into HAVING using equalities
+# pushing equalities
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where
+((v1.a>3) and (t2.c>110) and (v1.c=t2.c)) or
+((v1.a=1) and (v1.c<110));
+a b c a b c
+1 21 101 2 3 207
+1 21 101 1 16 909
+1 21 101 5 14 312
+1 21 101 5 33 207
+1 21 101 6 20 211
+1 21 101 1 19 132
+1 21 101 8 33 117
+1 21 101 3 21 231
+1 21 101 6 23 303
+5 16 207 2 3 207
+5 16 207 5 33 207
+5 27 132 1 19 132
+select * from v1,t2 where
+((v1.a>3) and (t2.c>110) and (v1.c=t2.c)) or
+((v1.a=1) and (v1.c<110));
+a b c a b c
+1 21 101 2 3 207
+1 21 101 1 16 909
+1 21 101 5 14 312
+1 21 101 5 33 207
+1 21 101 6 20 211
+1 21 101 1 19 132
+1 21 101 8 33 117
+1 21 101 3 21 231
+1 21 101 6 23 303
+5 16 207 2 3 207
+5 16 207 5 33 207
+5 27 132 1 19 132
+explain select * from v1,t2 where
+((v1.a>3) and (t2.c>110) and (v1.c=t2.c)) or
+((v1.a=1) and (v1.c<110));
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where
+((v1.a>3) and (t2.c>110) and (v1.c=t2.c)) or
+((v1.a=1) and (v1.c<110));
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100
+ },
+ "block-nl-join": {
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "v1.a > 3 or v1.a = 1 and v1.c < 110"
+ },
+ "buffer_type": "flat",
+ "buffer_size": "256Kb",
+ "join_type": "BNL",
+ "attached_condition": "v1.c = t2.c and v1.a > 3 and t2.c > 110 or v1.a = 1 and v1.c < 110",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300 and (t1.a > 3 and c > 110 or c < 110 and t1.a = 1)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and (t1.a > 3 or t1.a = 1)"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c > 100 and (t1.a > 3 and c > 110 or c < 110 and t1.a = 1)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and (t1.a > 3 or t1.a = 1)"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using intersect in view definition
+# prepare of a query
+# conjunctive subformulas : pushing into WHERE
+# conjunctive subformulas : pushing into HAVING
+prepare stmt from "select * from v1,t2
+ where (v1.a=t2.a) and (v1.a<5) and (v1.c>110);";
+execute stmt;
+a b c a b c
+1 19 117 1 16 909
+1 19 117 1 19 132
+execute stmt;
+a b c a b c
+1 19 117 1 16 909
+1 19 117 1 19 132
+deallocate prepare stmt;
+# using intersect in derived table definition
+# extracted or formula : pushing into WHERE using equalities
+# extracted or formula : pushing into HAVING
+# pushing equalities
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select *
+from t2,
+(select a, b, min(c) as c from t1
+where t1.a<9 group by a,b having c < 300
+intersect
+select a, b, min(c) as c from t1
+where t1.b>10 group by a,b having c > 100) as d1
+where
+(d1.b=t2.b) and
+(((t2.b>13) and (t2.c=909)) or
+((d1.a<4) and (d1.c<200)));
+a b c a b c
+1 16 909 5 16 207
+1 19 132 1 19 117
+3 21 231 1 21 101
+select *
+from t2,
+(select a, b, min(c) as c from t1
+where t1.a<9 group by a,b having c < 300
+intersect
+select a, b, min(c) as c from t1
+where t1.b>10 group by a,b having c > 100) as d1
+where
+(d1.b=t2.b) and
+(((t2.b>13) and (t2.c=909)) or
+((d1.a<4) and (d1.c<200)));
+a b c a b c
+1 16 909 5 16 207
+1 19 132 1 19 117
+3 21 231 1 21 101
+explain select *
+from t2,
+(select a, b, min(c) as c from t1
+where t1.a<9 group by a,b having c < 300
+intersect
+select a, b, min(c) as c from t1
+where t1.b>10 group by a,b having c > 100) as d1
+where
+(d1.b=t2.b) and
+(((t2.b>13) and (t2.c=909)) or
+((d1.a<4) and (d1.c<200)));
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.b 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select *
+from t2,
+(select a, b, min(c) as c from t1
+where t1.a<9 group by a,b having c < 300
+intersect
+select a, b, min(c) as c from t1
+where t1.b>10 group by a,b having c > 100) as d1
+where
+(d1.b=t2.b) and
+(((t2.b>13) and (t2.c=909)) or
+((d1.a<4) and (d1.c<200)));
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.b is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["b"],
+ "ref": ["test.t2.b"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "t2.c = 909 and t2.b > 13 or d1.a < 4 and d1.c < 200",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300 and (t1.b > 13 or t1.a < 4 and c < 200)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and (t1.b > 13 or t1.a < 4)"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c > 100 and (t1.b > 13 or t1.a < 4 and c < 200)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and (t1.b > 13 or t1.a < 4)"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+create view v1 as
+select a, b, max(c) as c from t1
+where t1.a<9 group by a,b having c > 200
+except
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300;
+# using except in view definition
+# conjunctive subformulas : pushing into WHERE
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
+a b c a b c
+1 33 988 1 16 909
+1 21 500 1 16 909
+1 33 988 1 19 132
+1 21 500 1 19 132
+select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
+a b c a b c
+1 33 988 1 16 909
+1 21 500 1 16 909
+1 33 988 1 19 132
+1 21 500 1 19 132
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a < 5 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a < 5"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c < 300",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a < 5"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using except in view definition
+# conjunctive subformulas : pushing into WHERE
+# pushing equalities
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a=6);
+a b c a b c
+6 20 315 6 20 211
+6 20 315 6 23 303
+select * from v1,t2 where (v1.a=t2.a) and (v1.a=6);
+a b c a b c
+6 20 315 6 20 211
+6 20 315 6 23 303
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a=6);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a=6);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a = 6"
+ },
+ "block-nl-join": {
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "v1.a = 6"
+ },
+ "buffer_type": "flat",
+ "buffer_size": "256Kb",
+ "join_type": "BNL",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a = 6"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c < 300",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a = 6 and t1.b > 10"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using except in view definition
+# conjunctive subformulas : pushing into WHERE using equalities
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (t2.a=6);
+a b c a b c
+6 20 315 6 20 211
+6 20 315 6 23 303
+select * from v1,t2 where (v1.a=t2.a) and (t2.a=6);
+a b c a b c
+6 20 315 6 20 211
+6 20 315 6 23 303
+explain select * from v1,t2 where (v1.a=t2.a) and (t2.a=6);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (t2.a=6);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a = 6"
+ },
+ "block-nl-join": {
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "v1.a = 6"
+ },
+ "buffer_type": "flat",
+ "buffer_size": "256Kb",
+ "join_type": "BNL",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a = 6"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c < 300",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a = 6 and t1.b > 10"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using except in view definition
+# conjunctive subformulas : pushing into HAVING
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.c>500);
+a b c a b c
+1 33 988 1 16 909
+5 14 787 5 14 312
+5 14 787 5 33 207
+1 33 988 1 19 132
+select * from v1,t2 where (v1.a=t2.a) and (v1.c>500);
+a b c a b c
+1 33 988 1 16 909
+5 14 787 5 14 312
+5 14 787 5 33 207
+1 33 988 1 19 132
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.c>500);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.c>500);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.c > 500",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200 and c > 500",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c < 300 and c > 500",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using except in view definition
+# conjunctive subformulas : pushing into WHERE
+# conjunctive subformulas : pushing into HAVING
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>500);
+a b c a b c
+1 33 988 1 16 909
+1 33 988 1 19 132
+select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>500);
+a b c a b c
+1 33 988 1 16 909
+1 33 988 1 19 132
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>500);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>500);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a < 5 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.c > 500",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200 and c > 500",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a < 5"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c < 300 and c > 500",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a < 5"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using except in view definition
+# extracted or formula : pushing into WHERE
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
+a b c a b c
+1 33 988 1 16 909
+5 14 787 5 14 312
+5 14 787 5 33 207
+1 33 988 1 19 132
+select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
+a b c a b c
+1 33 988 1 16 909
+5 14 787 5 14 312
+5 14 787 5 33 207
+1 33 988 1 19 132
+explain select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.b > 27 or v1.b < 19",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and (t1.b > 27 or t1.b < 19)"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c < 300",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and (t1.b > 27 or t1.b < 19)"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using except in view definition
+# extracted or formula : pushing into HAVING
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where
+(v1.a=t2.a) and ((v1.c<400) or (v1.c>800));
+a b c a b c
+1 33 988 1 16 909
+6 20 315 6 20 211
+1 33 988 1 19 132
+6 20 315 6 23 303
+select * from v1,t2 where
+(v1.a=t2.a) and ((v1.c<400) or (v1.c>800));
+a b c a b c
+1 33 988 1 16 909
+6 20 315 6 20 211
+1 33 988 1 19 132
+6 20 315 6 23 303
+explain select * from v1,t2 where
+(v1.a=t2.a) and ((v1.c<400) or (v1.c>800));
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where
+(v1.a=t2.a) and ((v1.c<400) or (v1.c>800));
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.c < 400 or v1.c > 800",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200 and (c < 400 or c > 800)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c < 300 and (c < 400 or c > 800)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using except in view definition
+# extracted or formula : pushing into WHERE
+# extracted or formula : pushing into HAVING using equalities
+# pushing equalities
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where
+(v1.c=t2.c) and
+((v1.a>1) and (t2.c<500)) or
+((v1.a=1) and (v1.c>500));
+a b c a b c
+1 33 988 2 3 207
+1 33 988 1 16 909
+1 33 988 5 14 312
+1 33 988 5 33 207
+1 33 988 6 20 211
+1 33 988 1 19 132
+1 33 988 8 33 117
+1 33 988 3 21 231
+1 33 988 6 23 303
+select * from v1,t2 where
+(v1.c=t2.c) and
+((v1.a>1) and (t2.c<500)) or
+((v1.a=1) and (v1.c>500));
+a b c a b c
+1 33 988 2 3 207
+1 33 988 1 16 909
+1 33 988 5 14 312
+1 33 988 5 33 207
+1 33 988 6 20 211
+1 33 988 1 19 132
+1 33 988 8 33 117
+1 33 988 3 21 231
+1 33 988 6 23 303
+explain select * from v1,t2 where
+(v1.c=t2.c) and
+((v1.a>1) and (t2.c<500)) or
+((v1.a=1) and (v1.c>500));
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where
+(v1.c=t2.c) and
+((v1.a>1) and (t2.c<500)) or
+((v1.a=1) and (v1.c>500));
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100
+ },
+ "block-nl-join": {
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "v1.a > 1 or v1.a = 1 and v1.c > 500"
+ },
+ "buffer_type": "flat",
+ "buffer_size": "256Kb",
+ "join_type": "BNL",
+ "attached_condition": "v1.c = t2.c and v1.a > 1 and t2.c < 500 or v1.a = 1 and v1.c > 500",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200 and (t1.a > 1 and c < 500 or c > 500 and t1.a = 1)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and (t1.a > 1 or t1.a = 1)"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c < 300 and (t1.a > 1 and c < 500 or c > 500 and t1.a = 1)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and (t1.a > 1 or t1.a = 1)"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+# using except in view definition
+# prepare of a query
+# conjunctive subformulas : pushing into WHERE
+# conjunctive subformulas : pushing into HAVING
+prepare stmt from "select * from v1,t2
+ where (v1.a=t2.a) and (v1.a<5) and (v1.c>500);";
+execute stmt;
+a b c a b c
+1 33 988 1 16 909
+1 33 988 1 19 132
+execute stmt;
+a b c a b c
+1 33 988 1 16 909
+1 33 988 1 19 132
+deallocate prepare stmt;
+# using except in view definition
+# extracted or formula : pushing into WHERE using equalities
+# extracted or formula : pushing into HAVING
+# pushing equalities
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select *
+from t2,
+(select a, b, max(c) as c from t1
+where t1.a<9 group by a,b having c > 200
+except
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300) as d1
+where
+(d1.b=t2.b) and
+(((t2.b>13) and (t2.c=988)) or
+((d1.a>4) and (d1.c>500)));
+a b c a b c
+5 14 312 5 14 787
+select *
+from t2,
+(select a, b, max(c) as c from t1
+where t1.a<9 group by a,b having c > 200
+except
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300) as d1
+where
+(d1.b=t2.b) and
+(((t2.b>13) and (t2.c=988)) or
+((d1.a>4) and (d1.c>500)));
+a b c a b c
+5 14 312 5 14 787
+explain select *
+from t2,
+(select a, b, max(c) as c from t1
+where t1.a<9 group by a,b having c > 200
+except
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300) as d1
+where
+(d1.b=t2.b) and
+(((t2.b>13) and (t2.c=988)) or
+((d1.a>4) and (d1.c>500)));
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.b 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select *
+from t2,
+(select a, b, max(c) as c from t1
+where t1.a<9 group by a,b having c > 200
+except
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300) as d1
+where
+(d1.b=t2.b) and
+(((t2.b>13) and (t2.c=988)) or
+((d1.a>4) and (d1.c>500)));
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.b is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["b"],
+ "ref": ["test.t2.b"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "t2.c = 988 and t2.b > 13 or d1.a > 4 and d1.c > 500",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200 and (t1.b > 13 or t1.a > 4 and c > 500)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and (t1.b > 13 or t1.a > 4)"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c < 300 and (t1.b > 13 or t1.a > 4 and c > 500)",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and (t1.b > 13 or t1.a > 4)"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using union and intersect in view definition
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, min(c) as c from t1
+where t1.a<9 group by a,b having c > 200
+union
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300
+intersect
+select a, b, max(c) as c from t1
+where t1.a>3 group by a,b having c < 530;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
+a b c a b c
+6 20 309 6 20 211
+6 20 309 6 23 303
+select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
+a b c a b c
+6 20 309 6 20 211
+6 20 309 6 23 303
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 3 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 UNION <derived4> ALL NULL NULL NULL NULL 18 Using where
+4 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+5 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect4,5> ALL NULL NULL NULL NULL NULL
+NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a > 5 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 3,
+ "filtered": 100,
+ "attached_condition": "v1.c > 200",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<union2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200 and c > 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a > 5"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "UNION",
+ "table": {
+ "table_name": "<derived4>",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "__3.a > 5 and __3.c > 200",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect4,5>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 4,
+ "having_condition": "c < 300 and c > 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a > 5"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 5,
+ "operation": "INTERSECT",
+ "having_condition": "c < 530 and c > 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a > 3 and t1.a > 5"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using union and intersect in view definition
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, min(c) as c from t1
+where t1.a<9 group by a,b having c > 200
+intersect
+select a, b, max(c) as c from t1
+where t1.a>3 group by a,b having c < 500
+union
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
+a b c a b c
+5 27 132 5 14 312
+5 27 132 5 33 207
+8 33 123 8 33 117
+select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
+a b c a b c
+5 27 132 5 14 312
+5 27 132 5 33 207
+8 33 123 8 33 117
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 3 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+4 UNION t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL UNIT RESULT <unit2,3,4> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a > 4 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 3,
+ "filtered": 100,
+ "attached_condition": "v1.c < 200",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<unit2,3,4>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200 and c < 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c < 500 and c < 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a > 3 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 4,
+ "operation": "UNION",
+ "having_condition": "c < 300 and c < 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a > 4"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using union and except in view definition
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, min(c) as c from t1
+where t1.a<9 group by a,b having c > 200
+union
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300
+except
+select a, b, max(c) as c from t1
+where t1.a>3 group by a,b having c < 530;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
+a b c a b c
+6 20 309 6 20 211
+6 20 309 6 23 303
+select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
+a b c a b c
+6 20 309 6 20 211
+6 20 309 6 23 303
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 3 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 UNION t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+4 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL UNIT RESULT <unit2,3,4> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a > 5 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 3,
+ "filtered": 100,
+ "attached_condition": "v1.c > 200",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<unit2,3,4>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200 and c > 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a > 5"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "UNION",
+ "having_condition": "c < 300 and c > 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a > 5"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 4,
+ "operation": "EXCEPT",
+ "having_condition": "c < 530 and c > 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a > 3 and t1.a > 5"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using union and except in view definition
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, min(c) as c from t1
+where t1.a<9 group by a,b having c > 200
+except
+select a, b, max(c) as c from t1
+where t1.a>3 group by a,b having c < 500
+union
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
+a b c a b c
+5 27 132 5 14 312
+5 27 132 5 33 207
+8 33 123 8 33 117
+select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
+a b c a b c
+5 27 132 5 14 312
+5 27 132 5 33 207
+8 33 123 8 33 117
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 3 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+4 UNION t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL UNIT RESULT <unit2,3,4> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a > 4 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 3,
+ "filtered": 100,
+ "attached_condition": "v1.c < 200",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<unit2,3,4>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 200 and c < 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c < 500 and c < 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a > 3 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 4,
+ "operation": "UNION",
+ "having_condition": "c < 300 and c < 200",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a > 4"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using except and intersect in view definition
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300
+intersect
+select a, b, max(c) as c from t1
+where t1.a<7 group by a,b having c < 500
+except
+select a, b, max(c) as c from t1
+where t1.a<9 group by a,b having c > 150;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<150);
+a b c a b c
+5 27 132 5 14 312
+5 27 132 5 33 207
+select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<150);
+a b c a b c
+5 27 132 5 14 312
+5 27 132 5 33 207
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<150);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+4 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL UNIT RESULT <unit2,3,4> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<150);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a > 4 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.c < 150",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<unit2,3,4>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300 and c < 150",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c < 500 and c < 150",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 7 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 4,
+ "operation": "EXCEPT",
+ "having_condition": "c > 150 and c < 150",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a > 4"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using except and intersect in view definition
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300
+except
+select a, b, max(c) as c from t1
+where t1.a<9 group by a,b having c > 150
+intersect
+select a, b, max(c) as c from t1
+where t1.a<7 group by a,b having c < 500;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
+a b c a b c
+8 33 123 8 33 117
+select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
+a b c a b c
+8 33 123 8 33 117
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT <derived4> ALL NULL NULL NULL NULL 18 Using where
+4 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+5 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect4,5> ALL NULL NULL NULL NULL NULL
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a > 4 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.c < 130",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300 and c < 130",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "table": {
+ "table_name": "<derived4>",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "__3.a > 4 and __3.c < 130",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect4,5>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 4,
+ "having_condition": "c > 150 and c < 130",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 5,
+ "operation": "INTERSECT",
+ "having_condition": "c < 500 and c < 130",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 7 and t1.a > 4"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using except, intersect and union in view definition
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300
+except
+select a, b, max(c) as c from t1
+where t1.a<9 group by a,b having c > 150
+intersect
+select a, b, max(c) as c from t1
+where t1.a<7 group by a,b having c < 500
+union
+select a, b, max(c) as c from t1
+where t1.a<7 group by a,b having c < 120;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
+a b c a b c
+8 33 123 8 33 117
+select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
+a b c a b c
+8 33 123 8 33 117
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 3 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT <derived4> ALL NULL NULL NULL NULL 18 Using where
+4 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+5 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect4,5> ALL NULL NULL NULL NULL NULL
+6 UNION t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL UNIT RESULT <unit2,3,6> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a > 4 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 3,
+ "filtered": 100,
+ "attached_condition": "v1.c < 130",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<unit2,3,6>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 300 and c < 130",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "table": {
+ "table_name": "<derived4>",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "__3.a > 4 and __3.c < 130",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect4,5>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 4,
+ "having_condition": "c > 150 and c < 130",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 5,
+ "operation": "INTERSECT",
+ "having_condition": "c < 500 and c < 130",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 7 and t1.a > 4"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 6,
+ "operation": "UNION",
+ "having_condition": "c < 120 and c < 130",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 7 and t1.a > 4"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using intersect in view definition
+# using embedded view
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300
+intersect
+select a, b, max(c) as c from t1
+where t1.a<9 group by a,b having c > 120;
+create view v2 as
+select a, b, max(c) as c from v1
+where v1.a<7 group by a,b;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
+a b c a b c
+5 27 132 5 14 312
+5 27 132 5 33 207
+select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
+a b c a b c
+5 27 132 5 14 312
+5 27 132 5 33 207
+explain select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED <derived3> ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+4 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect3,4> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a > 4 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v2.c < 150",
+ "materialized": {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 150",
+ "filesort": {
+ "sort_key": "v1.a, v1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "<derived3>",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "v1.a < 7 and v1.a > 4",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect3,4>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 3,
+ "having_condition": "c < 300",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a < 7 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 4,
+ "operation": "INTERSECT",
+ "having_condition": "c > 120",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a < 7 and t1.a > 4"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1,v2;
+# using except in view definition
+# using embedded view
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c < 300
+except
+select a, b, max(c) as c from t1
+where t1.a<9 group by a,b having c > 150;
+create view v2 as
+select a, b, max(c) as c from v1
+where v1.a<7 group by a,b;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
+a b c a b c
+5 27 132 5 14 312
+5 27 132 5 33 207
+select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
+a b c a b c
+5 27 132 5 14 312
+5 27 132 5 33 207
+explain select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED <derived3> ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+4 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except3,4> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a > 4 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v2.c < 150",
+ "materialized": {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c < 150",
+ "filesort": {
+ "sort_key": "v1.a, v1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "<derived3>",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "v1.a < 7 and v1.a > 4",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except3,4>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 3,
+ "having_condition": "c < 300",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a < 7 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 4,
+ "operation": "EXCEPT",
+ "having_condition": "c > 150",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a < 7 and t1.a > 4"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1,v2;
+# using intersect in view definition
+# conditions are pushed in different parts of selects
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, max(c) as c from t1
+where t1.a<9 group by a having c > 300
+intersect
+select a, b, max(c) as c from t1
+where t1.b<21 group by b having c > 200;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.b>12) and (v1.c<450);
+a b c a b c
+6 20 315 6 20 211
+6 20 315 6 23 303
+select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.b>12) and (v1.c<450);
+a b c a b c
+6 20 315 6 20 211
+6 20 315 6 23 303
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.b>12) and (v1.c<450);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.b>12) and (v1.c<450);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a > 4 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.b > 12 and v1.c < 450",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<intersect2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 300 and t1.b > 12 and c < 450",
+ "filesort": {
+ "sort_key": "t1.a",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a > 4"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c > 200 and t1.a > 4 and c < 450",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b < 21 and t1.b > 12"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using except in view definition
+# conditions are pushed in different parts of selects
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, max(c) as c from t1
+where t1.b>20 group by a having c > 300
+except
+select a, b, max(c) as c from t1
+where t1.a<7 group by b having c > 150;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a<2) and (v1.b<30) and (v1.c>450);
+a b c a b c
+1 21 988 1 16 909
+1 21 988 1 19 132
+select * from v1,t2 where (v1.a=t2.a) and (v1.a<2) and (v1.b<30) and (v1.c>450);
+a b c a b c
+1 21 988 1 16 909
+1 21 988 1 19 132
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a<2) and (v1.b<30) and (v1.c>450);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a<2) and (v1.b<30) and (v1.c>450);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a < 2 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.b < 30 and v1.c > 450",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 300 and t1.b < 30 and c > 450",
+ "filesort": {
+ "sort_key": "t1.a",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 20 and t1.a < 2"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c > 150 and t1.a < 2 and c > 450",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 7 and t1.b < 30"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using except and union in view definition
+# conditions are pushed in different parts of selects
+# conjunctive subformulas : pushing into HAVING
+# extracted or formula : pushing into WHERE
+# extracted or formula : pushing into HAVING
+create view v1 as
+select a, b, max(c) as c from t1
+where t1.b>20 group by a having c > 300
+except
+select a, b, max(c) as c from t1
+where t1.a<7 group by b having c > 150;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and ((v1.a<2) or (v1.a<5)) and (v1.c>450);
+a b c a b c
+1 21 988 1 16 909
+1 21 988 1 19 132
+select * from v1,t2 where (v1.a=t2.a) and ((v1.a<2) or (v1.a<5)) and (v1.c>450);
+a b c a b c
+1 21 988 1 16 909
+1 21 988 1 19 132
+explain select * from v1,t2 where (v1.a=t2.a) and ((v1.a<2) or (v1.a<5)) and (v1.c>450);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 2 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 EXCEPT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and ((v1.a<2) or (v1.a<5)) and (v1.c>450);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "(t2.a < 2 or t2.a < 5) and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.c > 450",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<except2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 300 and c > 450",
+ "filesort": {
+ "sort_key": "t1.a",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 20 and (t1.a < 2 or t1.a < 5)"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "EXCEPT",
+ "having_condition": "c > 150 and (t1.a < 2 or t1.a < 5) and c > 450",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 7"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using union and intersect in view definition
+# conditions are pushed in different parts of selects
+# conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+select a, b, max(c) as c from t1
+where t1.a<9 group by a having c > 100
+intersect
+select a, b, max(c) as c from t1
+where t1.a>3 group by b having c < 800
+union
+select a, b, max(c) as c from t1
+where t1.b>10 group by a,b having c > 300;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.a=t2.a) and (v1.a>1) and (v1.b > 12) and (v1.c>400);
+a b c a b c
+5 14 787 5 14 312
+5 14 787 5 33 207
+select * from v1,t2 where (v1.a=t2.a) and (v1.a>1) and (v1.b > 12) and (v1.c>400);
+a b c a b c
+5 14 787 5 14 312
+5 14 787 5 33 207
+explain select * from v1,t2 where (v1.a=t2.a) and (v1.a>1) and (v1.b > 12) and (v1.c>400);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.a 3 Using where
+2 DERIVED t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+3 INTERSECT t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+4 UNION t1 ALL NULL NULL NULL NULL 18 Using where; Using temporary; Using filesort
+NULL UNIT RESULT <unit2,3,4> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.a=t2.a) and (v1.a>1) and (v1.b > 12) and (v1.c>400);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.a > 1 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 3,
+ "filtered": 100,
+ "attached_condition": "v1.b > 12 and v1.c > 400",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<unit2,3,4>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "having_condition": "c > 100 and t1.b > 12 and c > 400",
+ "filesort": {
+ "sort_key": "t1.a",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a < 9 and t1.a > 1"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "INTERSECT",
+ "having_condition": "c < 800 and t1.a > 1 and c > 400",
+ "filesort": {
+ "sort_key": "t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.a > 3 and t1.b > 12"
+ }
+ }
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 4,
+ "operation": "UNION",
+ "having_condition": "c > 300 and c > 400",
+ "filesort": {
+ "sort_key": "t1.a, t1.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 18,
+ "filtered": 100,
+ "attached_condition": "t1.b > 10 and t1.a > 1 and t1.b > 12"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+create table t3 (a int, b int, c int);
+insert into t3 values
+(1,21,345), (2,33,7), (8,33,114), (3,21,500), (1,19,107), (5,14,787),
+(4,33,123), (9,10,211), (11,16,207), (10,33,988), (5,27,132), (12,21,104),
+(6,20,309), (16,20,315), (16,21,101), (18,33,404), (19,10,800), (10,21,123),
+(17,11,708), (6,20,214);
+create index i1 on t3(a);
+# conjunctive subformulas : pushing into WHERE
+# pushed condition gives range access
+create view v1 as
+select a, b, max(c) as max_c from t3
+where a>0 group by a;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.b=t2.b) and (v1.a<5);
+a b max_c a b c
+4 33 123 5 33 207
+2 33 7 5 33 207
+4 33 123 8 33 117
+2 33 7 8 33 117
+3 21 500 3 21 231
+1 21 345 3 21 231
+select * from v1,t2 where (v1.b=t2.b) and (v1.a<5);
+a b max_c a b c
+1 21 345 3 21 231
+2 33 7 5 33 207
+2 33 7 8 33 117
+3 21 500 3 21 231
+4 33 123 5 33 207
+4 33 123 8 33 117
+explain select * from v1,t2 where (v1.b=t2.b) and (v1.a<5);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join)
+2 DERIVED t3 range i1 i1 5 NULL 5 Using index condition
+explain format=json select * from v1,t2 where (v1.b=t2.b) and (v1.a<5);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100
+ },
+ "block-nl-join": {
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ALL",
+ "rows": 5,
+ "filtered": 80,
+ "attached_condition": "v1.a < 5"
+ },
+ "buffer_type": "flat",
+ "buffer_size": "256Kb",
+ "join_type": "BNL",
+ "attached_condition": "v1.b = t2.b",
+ "materialized": {
+ "query_block": {
+ "select_id": 2,
+ "table": {
+ "table_name": "t3",
+ "access_type": "range",
+ "possible_keys": ["i1"],
+ "key": "i1",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "rows": 5,
+ "filtered": 100,
+ "index_condition": "t3.a > 0 and t3.a < 5"
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+# using union in view definition
+# conjunctive subformulas : pushing into WHERE
+# pushed condition gives range access
+create view v1 as
+select a, b, max(c) as c from t3
+where t3.a>1 group by a
+union
+select a, b, max(c) as c from t3
+where t3.a>2 group by a;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.b=t2.b) and (v1.a<4);
+a b c a b c
+2 33 7 5 33 207
+2 33 7 8 33 117
+3 21 500 3 21 231
+select * from v1,t2 where (v1.b=t2.b) and (v1.a<4);
+a b c a b c
+2 33 7 5 33 207
+2 33 7 8 33 117
+3 21 500 3 21 231
+explain select * from v1,t2 where (v1.b=t2.b) and (v1.a<4);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3 Using where
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where; Using join buffer (flat, BNL join)
+2 DERIVED t3 range i1 i1 5 NULL 2 Using index condition
+3 UNION t3 range i1 i1 5 NULL 1 Using index condition
+NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.b=t2.b) and (v1.a<4);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ALL",
+ "rows": 3,
+ "filtered": 100,
+ "attached_condition": "v1.a < 4",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<union2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "table": {
+ "table_name": "t3",
+ "access_type": "range",
+ "possible_keys": ["i1"],
+ "key": "i1",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "rows": 2,
+ "filtered": 100,
+ "index_condition": "t3.a > 1 and t3.a < 4"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "UNION",
+ "table": {
+ "table_name": "t3",
+ "access_type": "range",
+ "possible_keys": ["i1"],
+ "key": "i1",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "rows": 1,
+ "filtered": 100,
+ "index_condition": "t3.a > 2 and t3.a < 4"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "block-nl-join": {
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100
+ },
+ "buffer_type": "flat",
+ "buffer_size": "256Kb",
+ "join_type": "BNL",
+ "attached_condition": "t2.b = v1.b"
+ }
+ }
+}
+drop view v1;
+# using union in view definition
+# conjunctive subformulas : pushing into WHERE
+# pushed condition gives range access in one of the selects
+create view v1 as
+select a, b, max(c) as c from t3
+where t3.a>1 group by a
+union
+select a, b, max(c) as c from t3
+where t3.b<21 group by b;
+set statement optimizer_switch='condition_pushdown_for_derived=off' for select * from v1,t2 where (v1.b=t2.b) and (v1.a<3);
+a b c a b c
+2 33 7 5 33 207
+1 19 107 1 19 132
+2 33 7 8 33 117
+select * from v1,t2 where (v1.b=t2.b) and (v1.a<3);
+a b c a b c
+2 33 7 5 33 207
+1 19 107 1 19 132
+2 33 7 8 33 117
+explain select * from v1,t2 where (v1.b=t2.b) and (v1.a<3);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 9 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t2.b 2 Using where
+2 DERIVED t3 range i1 i1 5 NULL 1 Using index condition
+3 UNION t3 ALL NULL NULL NULL NULL 20 Using where; Using temporary; Using filesort
+NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
+explain format=json select * from v1,t2 where (v1.b=t2.b) and (v1.a<3);
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 9,
+ "filtered": 100,
+ "attached_condition": "t2.b is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["b"],
+ "ref": ["test.t2.b"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "v1.a < 3",
+ "materialized": {
+ "query_block": {
+ "union_result": {
+ "table_name": "<union2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 2,
+ "table": {
+ "table_name": "t3",
+ "access_type": "range",
+ "possible_keys": ["i1"],
+ "key": "i1",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "rows": 1,
+ "filtered": 100,
+ "index_condition": "t3.a > 1 and t3.a < 3"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "UNION",
+ "having_condition": "t3.a < 3",
+ "filesort": {
+ "sort_key": "t3.b",
+ "temporary_table": {
+ "table": {
+ "table_name": "t3",
+ "access_type": "ALL",
+ "rows": 20,
+ "filtered": 100,
+ "attached_condition": "t3.b < 21"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+drop view v1;
+alter table t3 drop index i1;
+drop table t1,t2,t3;
+#
# MDEV-10782: condition extracted from a multiple equality
# pushed into HAVING
#
@@ -8891,7 +12607,7 @@ SET sql_mode = DEFAULT;
# MDEV-10855: Pushdown into derived with window functions
#
set @save_optimizer_switch= @@optimizer_switch;
-set optimizer_switch='split_grouping_derived=off';
+set optimizer_switch='split_materialized=off';
create table t1 (a int, c varchar(16));
insert into t1 values
(8,'aa'), (5,'cc'), (1,'bb'), (2,'aa'), (9,'cc'),
@@ -9592,59 +13308,76 @@ set optimizer_switch= @save_optimizer_switch;
# MDEV-13389: Optimization for equi-joins of derived tables with WF
# (Splitting derived tables / views with window functions)
#
-create table t1 (a int);
+create table t1 (a int, b int, index idx_b(b)) engine=myisam;
insert into t1 values
-(8), (5), (1), (2), (9), (7), (2), (7);
-create table t2 (a int, b int, index idx(a));
+(8,3), (5,7), (1,2), (2,1), (9,7), (7,5), (2,2), (7,3),
+(9,3), (8,1), (4,5), (2,3);
+create table t2 (a int, b int, c char(127), index idx_a(a)) engine=myisam;
insert into t2 values
-(7,10), (1,20), (2,23), (7,18), (1,30),
-(4,71), (3,15), (7,82), (8,12), (4,15),
-(11,33), (10,42), (4,53), (10,17), (2,90);
-set statement optimizer_switch='split_grouping_derived=off' for select t1.a,t.max,t.min
+(7,10,'x'), (1,20,'a'), (2,23,'b'), (7,18,'z'), (1,30,'c'),
+(4,71,'d'), (3,15,'x'), (7,82,'y'), (8,12,'t'), (4,15,'b'),
+(11,33,'a'), (10,42,'u'), (4,53,'p'), (10,17,'r'), (2,90,'x'),
+(17,10,'s'), (11,20,'v'), (12,23,'y'), (17,18,'a'), (11,30,'d'),
+(24,71,'h'), (23,15,'i'), (27,82,'k'), (28,12,'p'), (24,15,'q'),
+(31,33,'f'), (30,42,'h'), (40,53,'m'), (30,17,'o'), (21,90,'b'),
+(37,10,'e'), (31,20,'g'), (32,23,'f'), (37,18,'n'), (41,30,'l'),
+(54,71,'j'), (53,15,'w'), (57,82,'z'), (58,12,'k'), (54,15,'p'),
+(61,33,'c'), (60,42,'a'), (62,53,'x'), (67,17,'g'), (64,90,'v');
+insert into t2 select a+10, b+10, concat(c,'f') from t2;
+analyze table t1,t2;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+test.t2 analyze status OK
+set statement optimizer_switch='split_materialized=off' for select t1.a,t.s,t.m
from t1 join
-(select a, max(t2.b) max, min(t2.b) min from t2 group by t2.a) t
-on t1.a=t.a;
-a max min
-8 12 12
-1 30 20
-2 90 23
-7 82 10
-2 90 23
-7 82 10
-select t1.a,t.max,t.min
+(select a, sum(t2.b) as s, min(t2.c) as m from t2 group by t2.a) t
+on t1.a=t.a
+where t1.b < 3;
+a s m
+2 113 b
+8 12 t
+1 50 a
+2 113 b
+select t1.a,t.s,t.m
from t1 join
-(select a, max(t2.b) max, min(t2.b) min from t2 group by t2.a) t
-on t1.a=t.a;
-a max min
-8 12 12
-1 30 20
-2 90 23
-7 82 10
-2 90 23
-7 82 10
-explain extended select t1.a,t.max,t.min
+(select a, sum(t2.b) as s, min(t2.c) as m from t2 group by t2.a) t
+on t1.a=t.a
+where t1.b < 3;
+a s m
+2 113 b
+8 12 t
+1 50 a
+2 113 b
+explain extended select t1.a,t.s,t.m
from t1 join
-(select a, max(t2.b) max, min(t2.b) min from t2 group by t2.a) t
-on t1.a=t.a;
+(select a, sum(t2.b) as s, min(t2.c) as m from t2 group by t2.a) t
+on t1.a=t.a
+where t1.b < 3;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00 Using where
+1 PRIMARY t1 range idx_b idx_b 5 NULL 4 100.00 Using index condition; Using where
1 PRIMARY <derived2> ref key0 key0 5 test.t1.a 2 100.00
-2 LATERAL DERIVED t2 ref idx idx 5 test.t1.a 2 100.00
+2 LATERAL DERIVED t2 ref idx_a idx_a 5 test.t1.a 2 100.00
Warnings:
-Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`t`.`max` AS `max`,`t`.`min` AS `min` from `test`.`t1` join (/* select#2 */ select `test`.`t2`.`a` AS `a`,max(`test`.`t2`.`b`) AS `max`,min(`test`.`t2`.`b`) AS `min` from `test`.`t2` where `test`.`t2`.`a` = `test`.`t1`.`a` group by `test`.`t2`.`a`) `t` where `t`.`a` = `test`.`t1`.`a`
-explain format=json select t1.a,t.max,t.min
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`t`.`s` AS `s`,`t`.`m` AS `m` from `test`.`t1` join (/* select#2 */ select `test`.`t2`.`a` AS `a`,sum(`test`.`t2`.`b`) AS `s`,min(`test`.`t2`.`c`) AS `m` from `test`.`t2` where `test`.`t2`.`a` = `test`.`t1`.`a` group by `test`.`t2`.`a`) `t` where `t`.`a` = `test`.`t1`.`a` and `test`.`t1`.`b` < 3
+explain format=json select t1.a,t.s,t.m
from t1 join
-(select a, max(t2.b) max, min(t2.b) min from t2 group by t2.a) t
-on t1.a=t.a;
+(select a, sum(t2.b) as s, min(t2.c) as m from t2 group by t2.a) t
+on t1.a=t.a
+where t1.b < 3;
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "t1",
- "access_type": "ALL",
- "rows": 8,
+ "access_type": "range",
+ "possible_keys": ["idx_b"],
+ "key": "idx_b",
+ "key_length": "5",
+ "used_key_parts": ["b"],
+ "rows": 4,
"filtered": 100,
+ "index_condition": "t1.b < 3",
"attached_condition": "t1.a is not null"
},
"table": {
@@ -9664,8 +13397,8 @@ EXPLAIN
"table": {
"table_name": "t2",
"access_type": "ref",
- "possible_keys": ["idx"],
- "key": "idx",
+ "possible_keys": ["idx_a"],
+ "key": "idx_a",
"key_length": "5",
"used_key_parts": ["a"],
"ref": ["test.t1.a"],
@@ -9677,40 +13410,167 @@ EXPLAIN
}
}
}
-set statement optimizer_switch='split_grouping_derived=off' for select t1.a,t.max,t.min
+prepare stmt from "select t1.a,t.s,t.m
+from t1 join
+(select a, sum(t2.b) as s, min(t2.c) as m from t2 group by t2.a) t
+on t1.a=t.a
+where t1.b < 3";
+execute stmt;
+a s m
+2 113 b
+8 12 t
+1 50 a
+2 113 b
+execute stmt;
+a s m
+2 113 b
+8 12 t
+1 50 a
+2 113 b
+deallocate prepare stmt;
+set statement optimizer_switch='split_materialized=off' for select t1.a,t.s,t.m
+from t1 join
+(select a, sum(t2.b) as s, min(t2.b) as m from t2 group by t2.a) t
+on t1.a=t.a
+where t1.b <= 5;
+a s m
+8 12 12
+1 50 20
+2 113 23
+7 110 10
+2 113 23
+7 110 10
+8 12 12
+4 139 15
+2 113 23
+select t1.a,t.s,t.m
+from t1 join
+(select a, sum(t2.b) as s, min(t2.b) as m from t2 group by t2.a) t
+on t1.a=t.a
+where t1.b <= 5;
+a s m
+8 12 12
+1 50 20
+2 113 23
+7 110 10
+2 113 23
+7 110 10
+8 12 12
+4 139 15
+2 113 23
+explain extended select t1.a,t.s,t.m
+from t1 join
+(select a, sum(t2.b) as s, min(t2.b) as m from t2 group by t2.a) t
+on t1.a=t.a
+where t1.b <= 5;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL idx_b NULL NULL NULL 12 75.00 Using where
+1 PRIMARY <derived2> ref key0 key0 5 test.t1.a 9 100.00
+2 DERIVED t2 ALL idx_a NULL NULL NULL 90 100.00 Using temporary; Using filesort
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`t`.`s` AS `s`,`t`.`m` AS `m` from `test`.`t1` join (/* select#2 */ select `test`.`t2`.`a` AS `a`,sum(`test`.`t2`.`b`) AS `s`,min(`test`.`t2`.`b`) AS `m` from `test`.`t2` group by `test`.`t2`.`a`) `t` where `t`.`a` = `test`.`t1`.`a` and `test`.`t1`.`b` <= 5
+explain format=json select t1.a,t.s,t.m
+from t1 join
+(select a, sum(t2.b) as s, min(t2.b) as m from t2 group by t2.a) t
+on t1.a=t.a
+where t1.b <= 5;
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "possible_keys": ["idx_b"],
+ "rows": 12,
+ "filtered": 75,
+ "attached_condition": "t1.b <= 5 and t1.a is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t1.a"],
+ "rows": 9,
+ "filtered": 100,
+ "materialized": {
+ "query_block": {
+ "select_id": 2,
+ "filesort": {
+ "sort_key": "t2.a",
+ "temporary_table": {
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "possible_keys": ["idx_a"],
+ "rows": 90,
+ "filtered": 100
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+prepare stmt from "select t1.a,t.s,t.m
+from t1 join
+(select a, sum(t2.b) as s, min(t2.b) as m from t2 group by t2.a) t
+on t1.a=t.a
+where t1.b <= 5";
+execute stmt;
+a s m
+8 12 12
+1 50 20
+2 113 23
+7 110 10
+2 113 23
+7 110 10
+8 12 12
+4 139 15
+2 113 23
+execute stmt;
+a s m
+8 12 12
+1 50 20
+2 113 23
+7 110 10
+2 113 23
+7 110 10
+8 12 12
+4 139 15
+2 113 23
+deallocate prepare stmt;
+delete from t1 where t1.b between 2 and 5;
+set statement optimizer_switch='split_materialized=off' for select t1.a,t.max,t.min
from t1 left join
(select a, max(t2.b) max, min(t2.b) min from t2 group by t2.a) t
on t1.a=t.a;
a max min
-8 12 12
5 NULL NULL
-1 30 20
2 90 23
9 NULL NULL
-7 82 10
-2 90 23
-7 82 10
+8 12 12
select t1.a,t.max,t.min
from t1 left join
(select a, max(t2.b) max, min(t2.b) min from t2 group by t2.a) t
on t1.a=t.a;
a max min
-8 12 12
5 NULL NULL
-1 30 20
2 90 23
9 NULL NULL
-7 82 10
-2 90 23
-7 82 10
+8 12 12
explain extended select t1.a,t.max,t.min
from t1 left join
(select a, max(t2.b) max, min(t2.b) min from t2 group by t2.a) t
on t1.a=t.a;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 4 100.00
1 PRIMARY <derived2> ref key0 key0 5 test.t1.a 2 100.00 Using where
-2 LATERAL DERIVED t2 ref idx idx 5 test.t1.a 2 100.00
+2 LATERAL DERIVED t2 ref idx_a idx_a 5 test.t1.a 2 100.00
Warnings:
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`t`.`max` AS `max`,`t`.`min` AS `min` from `test`.`t1` left join (/* select#2 */ select `test`.`t2`.`a` AS `a`,max(`test`.`t2`.`b`) AS `max`,min(`test`.`t2`.`b`) AS `min` from `test`.`t2` where `test`.`t2`.`a` = `test`.`t1`.`a` group by `test`.`t2`.`a`) `t` on(`t`.`a` = `test`.`t1`.`a` and `test`.`t1`.`a` is not null) where 1
explain format=json select t1.a,t.max,t.min
@@ -9725,7 +13585,7 @@ EXPLAIN
"table": {
"table_name": "t1",
"access_type": "ALL",
- "rows": 8,
+ "rows": 4,
"filtered": 100
},
"table": {
@@ -9746,8 +13606,8 @@ EXPLAIN
"table": {
"table_name": "t2",
"access_type": "ref",
- "possible_keys": ["idx"],
- "key": "idx",
+ "possible_keys": ["idx_a"],
+ "key": "idx_a",
"key_length": "5",
"used_key_parts": ["a"],
"ref": ["test.t1.a"],
@@ -9759,53 +13619,68 @@ EXPLAIN
}
}
}
-create table t3 (a int, c varchar(16));
+create table t3 (a int, b int, c char(127), index idx_b(b)) engine=myisam;
insert into t3 values
-(8,'aa'), (5,'cc'), (1,'bb'), (2,'aa'), (9,'cc'),
-(7,'aa'), (2,'aa'), (7,'bb');
-create table t4 (a int, b int, c varchar(16), index idx(a,c));
+(8,11,'aa'), (5,15,'cc'), (1,14,'bb'), (2,12,'aa'), (7,17,'cc'),
+(7,18,'aa'), (2,11,'aa'), (7,10,'bb'), (3,11,'dd'), (4,12,'ee'),
+(5,14,'dd'), (9,12,'ee');
+create table t4 (a int, b int, c char(127), index idx(a,c)) engine=myisam;
insert into t4 values
(7,10,'cc'), (1,20,'aa'), (2,23,'bb'), (7,18,'cc'), (1,30,'bb'),
-(4,71,'xx'), (3,15,'aa'), (7,82,'bb'), (8,12,'dd'), (4,15,'aa'),
-(11,33,'yy'), (10,42,'zz'), (4,53,'xx'), (10,17,'yy'), (7,12,'bb'),
+(4,71,'xx'), (3,15,'aa'), (7,82,'aa'), (8,12,'dd'), (4,15,'aa'),
+(11,33,'yy'), (10,42,'zz'), (4,53,'xx'), (10,17,'yy'), (7,12,'cc'),
(8,20,'dd'), (7,32,'bb'), (1,50,'aa'), (3,40,'bb'), (3,77,'aa');
-set statement optimizer_switch='split_grouping_derived=off' for select t3.a,t3.c,t.max,t.min
+insert into t4 select a+10, b+10, concat(c,'f') from t4;
+analyze table t3,t4;
+Table Op Msg_type Msg_text
+test.t3 analyze status OK
+test.t4 analyze status OK
+set statement optimizer_switch='split_materialized=off' for select t3.a,t3.c,t.max,t.min
from t3 join
(select a, c, max(b) max, min(b) min from t4 group by a,c) t
-on t3.a=t.a and t3.c=t.c;
+on t3.a=t.a and t3.c=t.c
+where t3.b > 15;
a c max min
-1 bb 30 30
-7 bb 82 12
+7 cc 18 10
+7 aa 82 82
select t3.a,t3.c,t.max,t.min
from t3 join
(select a, c, max(b) max, min(b) min from t4 group by a,c) t
-on t3.a=t.a and t3.c=t.c;
+on t3.a=t.a and t3.c=t.c
+where t3.b > 15;
a c max min
-1 bb 30 30
-7 bb 82 12
+7 cc 18 10
+7 aa 82 82
explain extended select t3.a,t3.c,t.max,t.min
from t3 join
(select a, c, max(b) max, min(b) min from t4 group by a,c) t
-on t3.a=t.a and t3.c=t.c;
+on t3.a=t.a and t3.c=t.c
+where t3.b > 15;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t3 ALL NULL NULL NULL NULL 8 100.00 Using where
-1 PRIMARY <derived2> ref key0 key0 24 test.t3.a,test.t3.c 2 100.00
-2 LATERAL DERIVED t4 ref idx idx 24 test.t3.a,test.t3.c 2 100.00
+1 PRIMARY t3 range idx_b idx_b 5 NULL 3 100.00 Using index condition; Using where
+1 PRIMARY <derived2> ref key0 key0 133 test.t3.a,test.t3.c 2 100.00
+2 LATERAL DERIVED t4 ref idx idx 133 test.t3.a,test.t3.c 1 100.00
Warnings:
-Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a`,`test`.`t3`.`c` AS `c`,`t`.`max` AS `max`,`t`.`min` AS `min` from `test`.`t3` join (/* select#2 */ select `test`.`t4`.`a` AS `a`,`test`.`t4`.`c` AS `c`,max(`test`.`t4`.`b`) AS `max`,min(`test`.`t4`.`b`) AS `min` from `test`.`t4` where `test`.`t4`.`a` = `test`.`t3`.`a` and `test`.`t4`.`c` = `test`.`t3`.`c` group by `test`.`t4`.`a`,`test`.`t4`.`c`) `t` where `t`.`a` = `test`.`t3`.`a` and `t`.`c` = `test`.`t3`.`c`
+Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a`,`test`.`t3`.`c` AS `c`,`t`.`max` AS `max`,`t`.`min` AS `min` from `test`.`t3` join (/* select#2 */ select `test`.`t4`.`a` AS `a`,`test`.`t4`.`c` AS `c`,max(`test`.`t4`.`b`) AS `max`,min(`test`.`t4`.`b`) AS `min` from `test`.`t4` where `test`.`t4`.`a` = `test`.`t3`.`a` and `test`.`t4`.`c` = `test`.`t3`.`c` group by `test`.`t4`.`a`,`test`.`t4`.`c`) `t` where `t`.`a` = `test`.`t3`.`a` and `t`.`c` = `test`.`t3`.`c` and `test`.`t3`.`b` > 15
explain format=json select t3.a,t3.c,t.max,t.min
from t3 join
(select a, c, max(b) max, min(b) min from t4 group by a,c) t
-on t3.a=t.a and t3.c=t.c;
+on t3.a=t.a and t3.c=t.c
+where t3.b > 15;
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "t3",
- "access_type": "ALL",
- "rows": 8,
+ "access_type": "range",
+ "possible_keys": ["idx_b"],
+ "key": "idx_b",
+ "key_length": "5",
+ "used_key_parts": ["b"],
+ "rows": 3,
"filtered": 100,
+ "index_condition": "t3.b > 15",
"attached_condition": "t3.a is not null and t3.c is not null"
},
"table": {
@@ -9813,7 +13688,7 @@ EXPLAIN
"access_type": "ref",
"possible_keys": ["key0"],
"key": "key0",
- "key_length": "24",
+ "key_length": "133",
"used_key_parts": ["a", "c"],
"ref": ["test.t3.a", "test.t3.c"],
"rows": 2,
@@ -9827,10 +13702,10 @@ EXPLAIN
"access_type": "ref",
"possible_keys": ["idx"],
"key": "idx",
- "key_length": "24",
+ "key_length": "133",
"used_key_parts": ["a", "c"],
"ref": ["test.t3.a", "test.t3.c"],
- "rows": 2,
+ "rows": 1,
"filtered": 100
}
}
@@ -9838,43 +13713,126 @@ EXPLAIN
}
}
}
-set statement optimizer_switch='split_grouping_derived=off' for select t3.a,t3.c,t.max,t.min
+set statement optimizer_switch='split_materialized=off' for select t3.a,t3.c,t.max,t.min
from t3 join
-(select a, c, max(b) max, min(b) min from t4 group by c,a) t
-on t3.a=t.a and t3.c=t.c;
+(select a, c, max(b) max, min(b) min from t4 group by a,c) t
+on t3.a=t.a and t3.c=t.c
+where t3.b <= 15;
a c max min
1 bb 30 30
-7 bb 82 12
+7 bb 32 32
select t3.a,t3.c,t.max,t.min
from t3 join
-(select a, c, max(b) max, min(b) min from t4 group by c,a) t
-on t3.a=t.a and t3.c=t.c;
+(select a, c, max(b) max, min(b) min from t4 group by a,c) t
+on t3.a=t.a and t3.c=t.c
+where t3.b <= 15;
a c max min
1 bb 30 30
-7 bb 82 12
+7 bb 32 32
+explain extended select t3.a,t3.c,t.max,t.min
+from t3 join
+(select a, c, max(b) max, min(b) min from t4 group by a,c) t
+on t3.a=t.a and t3.c=t.c
+where t3.b <= 15;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t3 ALL idx_b NULL NULL NULL 12 75.00 Using where
+1 PRIMARY <derived2> ref key0 key0 133 test.t3.a,test.t3.c 4 100.00
+2 DERIVED t4 ALL idx NULL NULL NULL 40 100.00 Using temporary; Using filesort
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a`,`test`.`t3`.`c` AS `c`,`t`.`max` AS `max`,`t`.`min` AS `min` from `test`.`t3` join (/* select#2 */ select `test`.`t4`.`a` AS `a`,`test`.`t4`.`c` AS `c`,max(`test`.`t4`.`b`) AS `max`,min(`test`.`t4`.`b`) AS `min` from `test`.`t4` group by `test`.`t4`.`a`,`test`.`t4`.`c`) `t` where `t`.`a` = `test`.`t3`.`a` and `t`.`c` = `test`.`t3`.`c` and `test`.`t3`.`b` <= 15
+explain format=json select t3.a,t3.c,t.max,t.min
+from t3 join
+(select a, c, max(b) max, min(b) min from t4 group by a,c) t
+on t3.a=t.a and t3.c=t.c
+where t3.b <= 15;
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t3",
+ "access_type": "ALL",
+ "possible_keys": ["idx_b"],
+ "rows": 12,
+ "filtered": 75,
+ "attached_condition": "t3.b <= 15 and t3.a is not null and t3.c is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "133",
+ "used_key_parts": ["a", "c"],
+ "ref": ["test.t3.a", "test.t3.c"],
+ "rows": 4,
+ "filtered": 100,
+ "materialized": {
+ "query_block": {
+ "select_id": 2,
+ "filesort": {
+ "sort_key": "t4.a, t4.c",
+ "temporary_table": {
+ "table": {
+ "table_name": "t4",
+ "access_type": "ALL",
+ "possible_keys": ["idx"],
+ "rows": 40,
+ "filtered": 100
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+set statement optimizer_switch='split_materialized=off' for select t3.a,t3.c,t.max,t.min
+from t3 join
+(select a, c, max(b) max, min(b) min from t4 group by c,a) t
+on t3.a=t.a and t3.c=t.c
+where t3.b > 15;
+a c max min
+7 cc 18 10
+7 aa 82 82
+select t3.a,t3.c,t.max,t.min
+from t3 join
+(select a, c, max(b) max, min(b) min from t4 group by c,a) t
+on t3.a=t.a and t3.c=t.c
+where t3.b > 15;
+a c max min
+7 cc 18 10
+7 aa 82 82
explain extended select t3.a,t3.c,t.max,t.min
from t3 join
(select a, c, max(b) max, min(b) min from t4 group by c,a) t
-on t3.a=t.a and t3.c=t.c;
+on t3.a=t.a and t3.c=t.c
+where t3.b > 15;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t3 ALL NULL NULL NULL NULL 8 100.00 Using where
-1 PRIMARY <derived2> ref key0 key0 24 test.t3.a,test.t3.c 2 100.00
-2 LATERAL DERIVED t4 ref idx idx 24 test.t3.a,test.t3.c 2 100.00
+1 PRIMARY t3 range idx_b idx_b 5 NULL 3 100.00 Using index condition; Using where
+1 PRIMARY <derived2> ref key0 key0 133 test.t3.a,test.t3.c 2 100.00
+2 LATERAL DERIVED t4 ref idx idx 133 test.t3.a,test.t3.c 1 100.00
Warnings:
-Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a`,`test`.`t3`.`c` AS `c`,`t`.`max` AS `max`,`t`.`min` AS `min` from `test`.`t3` join (/* select#2 */ select `test`.`t4`.`a` AS `a`,`test`.`t4`.`c` AS `c`,max(`test`.`t4`.`b`) AS `max`,min(`test`.`t4`.`b`) AS `min` from `test`.`t4` where `test`.`t4`.`c` = `test`.`t3`.`c` and `test`.`t4`.`a` = `test`.`t3`.`a` group by `test`.`t4`.`c`,`test`.`t4`.`a`) `t` where `t`.`a` = `test`.`t3`.`a` and `t`.`c` = `test`.`t3`.`c`
+Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a`,`test`.`t3`.`c` AS `c`,`t`.`max` AS `max`,`t`.`min` AS `min` from `test`.`t3` join (/* select#2 */ select `test`.`t4`.`a` AS `a`,`test`.`t4`.`c` AS `c`,max(`test`.`t4`.`b`) AS `max`,min(`test`.`t4`.`b`) AS `min` from `test`.`t4` where `test`.`t4`.`a` = `test`.`t3`.`a` and `test`.`t4`.`c` = `test`.`t3`.`c` group by `test`.`t4`.`c`,`test`.`t4`.`a`) `t` where `t`.`a` = `test`.`t3`.`a` and `t`.`c` = `test`.`t3`.`c` and `test`.`t3`.`b` > 15
explain format=json select t3.a,t3.c,t.max,t.min
from t3 join
(select a, c, max(b) max, min(b) min from t4 group by c,a) t
-on t3.a=t.a and t3.c=t.c;
+on t3.a=t.a and t3.c=t.c
+where t3.b > 15;
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "t3",
- "access_type": "ALL",
- "rows": 8,
+ "access_type": "range",
+ "possible_keys": ["idx_b"],
+ "key": "idx_b",
+ "key_length": "5",
+ "used_key_parts": ["b"],
+ "rows": 3,
"filtered": 100,
+ "index_condition": "t3.b > 15",
"attached_condition": "t3.a is not null and t3.c is not null"
},
"table": {
@@ -9882,7 +13840,7 @@ EXPLAIN
"access_type": "ref",
"possible_keys": ["key0"],
"key": "key0",
- "key_length": "24",
+ "key_length": "133",
"used_key_parts": ["a", "c"],
"ref": ["test.t3.a", "test.t3.c"],
"rows": 2,
@@ -9896,10 +13854,10 @@ EXPLAIN
"access_type": "ref",
"possible_keys": ["idx"],
"key": "idx",
- "key_length": "24",
+ "key_length": "133",
"used_key_parts": ["a", "c"],
"ref": ["test.t3.a", "test.t3.c"],
- "rows": 2,
+ "rows": 1,
"filtered": 100
}
}
@@ -9907,44 +13865,120 @@ EXPLAIN
}
}
}
-drop index idx on t2;
-create index idx on t2(b);
-create index idx on t3(a);
-create index idx2 on t4(c);
-insert into t3 select a+1, concat(c,'f') from t3;
-insert into t3 select a+1, concat(c,'h') from t3;
-insert into t4 select a+1, b+10, concat(c,'h') from t4;
-set statement optimizer_switch='split_grouping_derived=off' for select t2.a,t2.b,t3.c,t.max,t.min
+set statement optimizer_switch='split_materialized=off' for select t3.a,t3.c,t.max,t.min
+from t3 join
+(select a, c, max(b) max, min(b) min from t4 group by c,a) t
+on t3.a=t.a and t3.c=t.c
+where t3.b <= 15;
+a c max min
+1 bb 30 30
+7 bb 32 32
+select t3.a,t3.c,t.max,t.min
+from t3 join
+(select a, c, max(b) max, min(b) min from t4 group by c,a) t
+on t3.a=t.a and t3.c=t.c
+where t3.b <= 15;
+a c max min
+1 bb 30 30
+7 bb 32 32
+explain extended select t3.a,t3.c,t.max,t.min
+from t3 join
+(select a, c, max(b) max, min(b) min from t4 group by c,a) t
+on t3.a=t.a and t3.c=t.c
+where t3.b <= 15;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t3 ALL idx_b NULL NULL NULL 12 75.00 Using where
+1 PRIMARY <derived2> ref key0 key0 133 test.t3.a,test.t3.c 4 100.00
+2 DERIVED t4 ALL idx NULL NULL NULL 40 100.00 Using temporary; Using filesort
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a`,`test`.`t3`.`c` AS `c`,`t`.`max` AS `max`,`t`.`min` AS `min` from `test`.`t3` join (/* select#2 */ select `test`.`t4`.`a` AS `a`,`test`.`t4`.`c` AS `c`,max(`test`.`t4`.`b`) AS `max`,min(`test`.`t4`.`b`) AS `min` from `test`.`t4` group by `test`.`t4`.`c`,`test`.`t4`.`a`) `t` where `t`.`a` = `test`.`t3`.`a` and `t`.`c` = `test`.`t3`.`c` and `test`.`t3`.`b` <= 15
+explain format=json select t3.a,t3.c,t.max,t.min
+from t3 join
+(select a, c, max(b) max, min(b) min from t4 group by c,a) t
+on t3.a=t.a and t3.c=t.c
+where t3.b <= 15;
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t3",
+ "access_type": "ALL",
+ "possible_keys": ["idx_b"],
+ "rows": 12,
+ "filtered": 75,
+ "attached_condition": "t3.b <= 15 and t3.a is not null and t3.c is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "133",
+ "used_key_parts": ["a", "c"],
+ "ref": ["test.t3.a", "test.t3.c"],
+ "rows": 4,
+ "filtered": 100,
+ "materialized": {
+ "query_block": {
+ "select_id": 2,
+ "filesort": {
+ "sort_key": "t4.c, t4.a",
+ "temporary_table": {
+ "table": {
+ "table_name": "t4",
+ "access_type": "ALL",
+ "possible_keys": ["idx"],
+ "rows": 40,
+ "filtered": 100
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+drop index idx_a on t2;
+create index idx on t2(c,b);
+create index idx_a on t3(a);
+create index idx_c on t4(c);
+insert into t3 select a+10, b+10, concat(c,'f') from t3;
+insert into t3 select a+100, b+100, concat(c,'g') from t3;
+insert into t4 select a+100, b+100, concat(c,'g') from t4;
+insert into t4 select a+1000, b+1000, concat(c,'h') from t4;
+analyze table t2,t3,t4;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+test.t3 analyze status OK
+test.t4 analyze status OK
+set statement optimizer_switch='split_materialized=off' for select t2.a,t2.b,t2.c,t.c as t_c,t.max,t.min
from t2, t3, (select c, max(b) max, min(b) min from t4 group by c) t
-where t2.b > 50 and t2.a=t3.a and t3.c=t.c;
-a b c max min
-7 82 aa 77 15
-7 82 bb 82 12
-2 90 aa 77 15
-2 90 aa 77 15
-2 90 bbh 92 22
-select t2.a,t2.b,t3.c,t.max,t.min
+where t2.b between 80 and 85 and t2.c in ('y','z') and t2.a=t3.a and t3.c=t.c;
+a b c t_c max min
+7 82 y cc 18 10
+7 82 y aa 82 15
+7 82 y bb 40 23
+select t2.a,t2.b,t2.c,t.c as t_c,t.max,t.min
from t2, t3, (select c, max(b) max, min(b) min from t4 group by c) t
-where t2.b > 50 and t2.a=t3.a and t3.c=t.c;
-a b c max min
-7 82 aa 77 15
-7 82 bb 82 12
-2 90 aa 77 15
-2 90 aa 77 15
-2 90 bbh 92 22
-explain extended select t2.a,t2.b,t3.c,t.max,t.min
+where t2.b between 80 and 85 and t2.c in ('y','z') and t2.a=t3.a and t3.c=t.c;
+a b c t_c max min
+7 82 y cc 18 10
+7 82 y aa 82 15
+7 82 y bb 40 23
+explain extended select t2.a,t2.b,t2.c,t.c as t_c,t.max,t.min
from t2, t3, (select c, max(b) max, min(b) min from t4 group by c) t
-where t2.b > 50 and t2.a=t3.a and t3.c=t.c;
+where t2.b between 80 and 85 and t2.c in ('y','z') and t2.a=t3.a and t3.c=t.c;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t2 range idx idx 5 NULL 5 100.00 Using index condition; Using where
-1 PRIMARY t3 ref idx idx 5 test.t2.a 3 100.00 Using where
-1 PRIMARY <derived2> ref key0 key0 19 test.t3.c 4 100.00
-2 LATERAL DERIVED t4 ref idx2 idx2 19 test.t3.c 5 100.00
+1 PRIMARY t2 range idx idx 133 NULL 2 100.00 Using index condition; Using where
+1 PRIMARY t3 ref idx_a idx_a 5 test.t2.a 2 100.00 Using where
+1 PRIMARY <derived2> ref key0 key0 128 test.t3.c 2 100.00
+2 LATERAL DERIVED t4 ref idx_c idx_c 128 test.t3.c 3 100.00
Warnings:
-Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`c` AS `c`,`t`.`max` AS `max`,`t`.`min` AS `min` from `test`.`t2` join `test`.`t3` join (/* select#2 */ select `test`.`t4`.`c` AS `c`,max(`test`.`t4`.`b`) AS `max`,min(`test`.`t4`.`b`) AS `min` from `test`.`t4` where `test`.`t4`.`c` = `test`.`t3`.`c` group by `test`.`t4`.`c`) `t` where `test`.`t3`.`a` = `test`.`t2`.`a` and `t`.`c` = `test`.`t3`.`c` and `test`.`t2`.`b` > 50
-explain format=json select t2.a,t2.b,t3.c,t.max,t.min
+Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c`,`t`.`c` AS `t_c`,`t`.`max` AS `max`,`t`.`min` AS `min` from `test`.`t2` join `test`.`t3` join (/* select#2 */ select `test`.`t4`.`c` AS `c`,max(`test`.`t4`.`b`) AS `max`,min(`test`.`t4`.`b`) AS `min` from `test`.`t4` where `test`.`t4`.`c` = `test`.`t3`.`c` group by `test`.`t4`.`c`) `t` where `test`.`t3`.`a` = `test`.`t2`.`a` and `t`.`c` = `test`.`t3`.`c` and `test`.`t2`.`b` between 80 and 85 and `test`.`t2`.`c` in ('y','z')
+explain format=json select t2.a,t2.b,t2.c,t.c as t_c,t.max,t.min
from t2, t3, (select c, max(b) max, min(b) min from t4 group by c) t
-where t2.b > 50 and t2.a=t3.a and t3.c=t.c;
+where t2.b between 80 and 85 and t2.c in ('y','z') and t2.a=t3.a and t3.c=t.c;
EXPLAIN
{
"query_block": {
@@ -9954,22 +13988,22 @@ EXPLAIN
"access_type": "range",
"possible_keys": ["idx"],
"key": "idx",
- "key_length": "5",
- "used_key_parts": ["b"],
- "rows": 5,
+ "key_length": "133",
+ "used_key_parts": ["c", "b"],
+ "rows": 2,
"filtered": 100,
- "index_condition": "t2.b > 50",
+ "index_condition": "t2.b between 80 and 85 and t2.c in ('y','z')",
"attached_condition": "t2.a is not null"
},
"table": {
"table_name": "t3",
"access_type": "ref",
- "possible_keys": ["idx"],
- "key": "idx",
+ "possible_keys": ["idx_a"],
+ "key": "idx_a",
"key_length": "5",
"used_key_parts": ["a"],
"ref": ["test.t2.a"],
- "rows": 3,
+ "rows": 2,
"filtered": 100,
"attached_condition": "t3.c is not null"
},
@@ -9978,10 +14012,10 @@ EXPLAIN
"access_type": "ref",
"possible_keys": ["key0"],
"key": "key0",
- "key_length": "19",
+ "key_length": "128",
"used_key_parts": ["c"],
"ref": ["test.t3.c"],
- "rows": 4,
+ "rows": 2,
"filtered": 100,
"materialized": {
"query_block": {
@@ -9990,12 +14024,12 @@ EXPLAIN
"table": {
"table_name": "t4",
"access_type": "ref",
- "possible_keys": ["idx2"],
- "key": "idx2",
- "key_length": "19",
+ "possible_keys": ["idx_c"],
+ "key": "idx_c",
+ "key_length": "128",
"used_key_parts": ["c"],
"ref": ["test.t3.c"],
- "rows": 5,
+ "rows": 3,
"filtered": 100
}
}
@@ -10003,81 +14037,195 @@ EXPLAIN
}
}
}
-set statement optimizer_switch='split_grouping_derived=off' for select *
+set statement optimizer_switch='split_materialized=off' for select t2.a,t2.b,t2.c,t.c as t_c,t.max,t.min
+from t2, t3, (select c, max(b) max, min(b) min from t4 group by c) t
+where t2.b < 40 and t2.a=t3.a and t3.c=t.c;
+a b c t_c max min
+7 10 x cc 18 10
+7 10 x aa 82 15
+7 10 x bb 40 23
+1 20 a bb 40 23
+2 23 b aa 82 15
+2 23 b aa 82 15
+7 18 z cc 18 10
+7 18 z aa 82 15
+7 18 z bb 40 23
+1 30 c bb 40 23
+3 15 x dd 20 12
+8 12 t aa 82 15
+11 33 a bbf 50 33
+17 10 s ccf 28 20
+17 10 s aaf 92 25
+17 10 s bbf 50 33
+11 20 v bbf 50 33
+12 23 y aaf 92 25
+12 23 y aaf 92 25
+17 18 a ccf 28 20
+17 18 a aaf 92 25
+17 18 a bbf 50 33
+11 30 d bbf 50 33
+17 20 xf ccf 28 20
+17 20 xf aaf 92 25
+17 20 xf bbf 50 33
+11 30 af bbf 50 33
+12 33 bf aaf 92 25
+12 33 bf aaf 92 25
+17 28 zf ccf 28 20
+17 28 zf aaf 92 25
+17 28 zf bbf 50 33
+13 25 xf ddf 30 22
+18 22 tf aaf 92 25
+select t2.a,t2.b,t2.c,t.c as t_c,t.max,t.min
+from t2, t3, (select c, max(b) max, min(b) min from t4 group by c) t
+where t2.b < 40 and t2.a=t3.a and t3.c=t.c;
+a b c t_c max min
+7 10 x cc 18 10
+7 10 x aa 82 15
+7 10 x bb 40 23
+1 20 a bb 40 23
+2 23 b aa 82 15
+2 23 b aa 82 15
+7 18 z cc 18 10
+7 18 z aa 82 15
+7 18 z bb 40 23
+1 30 c bb 40 23
+3 15 x dd 20 12
+8 12 t aa 82 15
+11 33 a bbf 50 33
+17 10 s ccf 28 20
+17 10 s aaf 92 25
+17 10 s bbf 50 33
+11 20 v bbf 50 33
+12 23 y aaf 92 25
+12 23 y aaf 92 25
+17 18 a ccf 28 20
+17 18 a aaf 92 25
+17 18 a bbf 50 33
+11 30 d bbf 50 33
+17 20 xf ccf 28 20
+17 20 xf aaf 92 25
+17 20 xf bbf 50 33
+11 30 af bbf 50 33
+12 33 bf aaf 92 25
+12 33 bf aaf 92 25
+17 28 zf ccf 28 20
+17 28 zf aaf 92 25
+17 28 zf bbf 50 33
+13 25 xf ddf 30 22
+18 22 tf aaf 92 25
+explain extended select t2.a,t2.b,t2.c,t.c as t_c,t.max,t.min
+from t2, t3, (select c, max(b) max, min(b) min from t4 group by c) t
+where t2.b < 40 and t2.a=t3.a and t3.c=t.c;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 90 100.00 Using where
+1 PRIMARY t3 ref idx_a idx_a 5 test.t2.a 2 100.00 Using where
+1 PRIMARY <derived2> ref key0 key0 128 test.t3.c 10 100.00
+2 DERIVED t4 ALL idx_c NULL NULL NULL 160 100.00 Using temporary; Using filesort
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c`,`t`.`c` AS `t_c`,`t`.`max` AS `max`,`t`.`min` AS `min` from `test`.`t2` join `test`.`t3` join (/* select#2 */ select `test`.`t4`.`c` AS `c`,max(`test`.`t4`.`b`) AS `max`,min(`test`.`t4`.`b`) AS `min` from `test`.`t4` group by `test`.`t4`.`c`) `t` where `test`.`t3`.`a` = `test`.`t2`.`a` and `t`.`c` = `test`.`t3`.`c` and `test`.`t2`.`b` < 40
+explain format=json select t2.a,t2.b,t2.c,t.c as t_c,t.max,t.min
+from t2, t3, (select c, max(b) max, min(b) min from t4 group by c) t
+where t2.b < 40 and t2.a=t3.a and t3.c=t.c;
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 90,
+ "filtered": 100,
+ "attached_condition": "t2.b < 40 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "t3",
+ "access_type": "ref",
+ "possible_keys": ["idx_a"],
+ "key": "idx_a",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "t3.c is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "128",
+ "used_key_parts": ["c"],
+ "ref": ["test.t3.c"],
+ "rows": 10,
+ "filtered": 100,
+ "materialized": {
+ "query_block": {
+ "select_id": 2,
+ "filesort": {
+ "sort_key": "t4.c",
+ "temporary_table": {
+ "table": {
+ "table_name": "t4",
+ "access_type": "ALL",
+ "possible_keys": ["idx_c"],
+ "rows": 160,
+ "filtered": 100
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+set statement optimizer_switch='split_materialized=off' for select *
from t2, t3, (select c, b, sum(b) over (partition by c) from t4 ) t
-where t2.b > 50 and t2.a=t3.a and t3.c=t.c;
-a b a c c b sum(b) over (partition by c)
-7 82 7 aa aa 77 177
-7 82 7 aa aa 50 177
-7 82 7 aa aa 15 177
-7 82 7 aa aa 15 177
-7 82 7 aa aa 20 177
-7 82 7 bb bb 40 219
-7 82 7 bb bb 32 219
-7 82 7 bb bb 12 219
-7 82 7 bb bb 82 219
-7 82 7 bb bb 30 219
-7 82 7 bb bb 23 219
-2 90 2 aa aa 77 177
-2 90 2 aa aa 50 177
-2 90 2 aa aa 15 177
-2 90 2 aa aa 15 177
-2 90 2 aa aa 20 177
-2 90 2 aa aa 77 177
-2 90 2 aa aa 50 177
-2 90 2 aa aa 15 177
-2 90 2 aa aa 15 177
-2 90 2 aa aa 20 177
-2 90 2 bbh bbh 50 279
-2 90 2 bbh bbh 42 279
-2 90 2 bbh bbh 22 279
-2 90 2 bbh bbh 92 279
-2 90 2 bbh bbh 40 279
-2 90 2 bbh bbh 33 279
+where t2.b between 80 and 85 and t2.c in ('y','z') and t2.a=t3.a and t3.c=t.c;
+a b c a b c c b sum(b) over (partition by c)
+7 82 y 7 17 cc cc 12 40
+7 82 y 7 17 cc cc 18 40
+7 82 y 7 17 cc cc 10 40
+7 82 y 7 18 aa aa 77 259
+7 82 y 7 18 aa aa 50 259
+7 82 y 7 18 aa aa 15 259
+7 82 y 7 18 aa aa 82 259
+7 82 y 7 18 aa aa 15 259
+7 82 y 7 18 aa aa 20 259
+7 82 y 7 10 bb bb 40 125
+7 82 y 7 10 bb bb 32 125
+7 82 y 7 10 bb bb 30 125
+7 82 y 7 10 bb bb 23 125
select *
from t2, t3, (select c, b, sum(b) over (partition by c) from t4 ) t
-where t2.b > 50 and t2.a=t3.a and t3.c=t.c;
-a b a c c b sum(b) over (partition by c)
-7 82 7 aa aa 77 177
-7 82 7 aa aa 50 177
-7 82 7 aa aa 15 177
-7 82 7 aa aa 15 177
-7 82 7 aa aa 20 177
-7 82 7 bb bb 40 219
-7 82 7 bb bb 32 219
-7 82 7 bb bb 12 219
-7 82 7 bb bb 82 219
-7 82 7 bb bb 30 219
-7 82 7 bb bb 23 219
-2 90 2 aa aa 77 177
-2 90 2 aa aa 50 177
-2 90 2 aa aa 15 177
-2 90 2 aa aa 15 177
-2 90 2 aa aa 20 177
-2 90 2 aa aa 77 177
-2 90 2 aa aa 50 177
-2 90 2 aa aa 15 177
-2 90 2 aa aa 15 177
-2 90 2 aa aa 20 177
-2 90 2 bbh bbh 50 279
-2 90 2 bbh bbh 42 279
-2 90 2 bbh bbh 22 279
-2 90 2 bbh bbh 92 279
-2 90 2 bbh bbh 40 279
-2 90 2 bbh bbh 33 279
+where t2.b between 80 and 85 and t2.c in ('y','z') and t2.a=t3.a and t3.c=t.c;
+a b c a b c c b sum(b) over (partition by c)
+7 82 y 7 17 cc cc 12 40
+7 82 y 7 17 cc cc 18 40
+7 82 y 7 17 cc cc 10 40
+7 82 y 7 18 aa aa 77 259
+7 82 y 7 18 aa aa 50 259
+7 82 y 7 18 aa aa 15 259
+7 82 y 7 18 aa aa 82 259
+7 82 y 7 18 aa aa 15 259
+7 82 y 7 18 aa aa 20 259
+7 82 y 7 10 bb bb 40 125
+7 82 y 7 10 bb bb 32 125
+7 82 y 7 10 bb bb 30 125
+7 82 y 7 10 bb bb 23 125
explain extended select *
from t2, t3, (select c, b, sum(b) over (partition by c) from t4 ) t
-where t2.b > 50 and t2.a=t3.a and t3.c=t.c;
+where t2.b between 80 and 85 and t2.c in ('y','z') and t2.a=t3.a and t3.c=t.c;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t2 range idx idx 5 NULL 5 100.00 Using index condition; Using where
-1 PRIMARY t3 ref idx idx 5 test.t2.a 3 100.00 Using where
-1 PRIMARY <derived2> ref key0 key0 19 test.t3.c 4 100.00
-2 LATERAL DERIVED t4 ref idx2 idx2 19 test.t3.c 5 100.00 Using temporary
+1 PRIMARY t2 range idx idx 133 NULL 2 100.00 Using index condition; Using where
+1 PRIMARY t3 ref idx_a idx_a 5 test.t2.a 2 100.00 Using where
+1 PRIMARY <derived2> ref key0 key0 128 test.t3.c 2 100.00
+2 LATERAL DERIVED t4 ref idx_c idx_c 128 test.t3.c 3 100.00 Using temporary
Warnings:
-Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`c` AS `c`,`t`.`c` AS `c`,`t`.`b` AS `b`,`t`.`sum(b) over (partition by c)` AS `sum(b) over (partition by c)` from `test`.`t2` join `test`.`t3` join (/* select#2 */ select `test`.`t4`.`c` AS `c`,`test`.`t4`.`b` AS `b`,sum(`test`.`t4`.`b`) over ( partition by `test`.`t4`.`c`) AS `sum(b) over (partition by c)` from `test`.`t4` where `test`.`t4`.`c` = `test`.`t3`.`c`) `t` where `test`.`t3`.`a` = `test`.`t2`.`a` and `t`.`c` = `test`.`t3`.`c` and `test`.`t2`.`b` > 50
+Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t3`.`c` AS `c`,`t`.`c` AS `c`,`t`.`b` AS `b`,`t`.`sum(b) over (partition by c)` AS `sum(b) over (partition by c)` from `test`.`t2` join `test`.`t3` join (/* select#2 */ select `test`.`t4`.`c` AS `c`,`test`.`t4`.`b` AS `b`,sum(`test`.`t4`.`b`) over ( partition by `test`.`t4`.`c`) AS `sum(b) over (partition by c)` from `test`.`t4` where `test`.`t4`.`c` = `test`.`t3`.`c`) `t` where `test`.`t3`.`a` = `test`.`t2`.`a` and `t`.`c` = `test`.`t3`.`c` and `test`.`t2`.`b` between 80 and 85 and `test`.`t2`.`c` in ('y','z')
explain format=json select *
from t2, t3, (select c, b, sum(b) over (partition by c) from t4 ) t
-where t2.b > 50 and t2.a=t3.a and t3.c=t.c;
+where t2.b between 80 and 85 and t2.c in ('y','z') and t2.a=t3.a and t3.c=t.c;
EXPLAIN
{
"query_block": {
@@ -10087,22 +14235,22 @@ EXPLAIN
"access_type": "range",
"possible_keys": ["idx"],
"key": "idx",
- "key_length": "5",
- "used_key_parts": ["b"],
- "rows": 5,
+ "key_length": "133",
+ "used_key_parts": ["c", "b"],
+ "rows": 2,
"filtered": 100,
- "index_condition": "t2.b > 50",
+ "index_condition": "t2.b between 80 and 85 and t2.c in ('y','z')",
"attached_condition": "t2.a is not null"
},
"table": {
"table_name": "t3",
"access_type": "ref",
- "possible_keys": ["idx"],
- "key": "idx",
+ "possible_keys": ["idx_a"],
+ "key": "idx_a",
"key_length": "5",
"used_key_parts": ["a"],
"ref": ["test.t2.a"],
- "rows": 3,
+ "rows": 2,
"filtered": 100,
"attached_condition": "t3.c is not null"
},
@@ -10111,10 +14259,10 @@ EXPLAIN
"access_type": "ref",
"possible_keys": ["key0"],
"key": "key0",
- "key_length": "19",
+ "key_length": "128",
"used_key_parts": ["c"],
"ref": ["test.t3.c"],
- "rows": 4,
+ "rows": 2,
"filtered": 100,
"materialized": {
"query_block": {
@@ -10130,12 +14278,398 @@ EXPLAIN
"table": {
"table_name": "t4",
"access_type": "ref",
- "possible_keys": ["idx2"],
- "key": "idx2",
- "key_length": "19",
+ "possible_keys": ["idx_c"],
+ "key": "idx_c",
+ "key_length": "128",
"used_key_parts": ["c"],
"ref": ["test.t3.c"],
- "rows": 5,
+ "rows": 3,
+ "filtered": 100
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+set statement optimizer_switch='split_materialized=off' for select *
+from t2, t3, (select c, b, sum(b) over (partition by c) from t4 ) t
+where t2.b < 40 and t2.a=t3.a and t3.c=t.c;
+a b c a b c c b sum(b) over (partition by c)
+7 10 x 7 17 cc cc 12 40
+7 10 x 7 17 cc cc 18 40
+7 10 x 7 17 cc cc 10 40
+7 10 x 7 18 aa aa 77 259
+7 10 x 7 18 aa aa 50 259
+7 10 x 7 18 aa aa 15 259
+7 10 x 7 18 aa aa 82 259
+7 10 x 7 18 aa aa 15 259
+7 10 x 7 18 aa aa 20 259
+7 10 x 7 10 bb bb 40 125
+7 10 x 7 10 bb bb 32 125
+7 10 x 7 10 bb bb 30 125
+7 10 x 7 10 bb bb 23 125
+1 20 a 1 14 bb bb 40 125
+1 20 a 1 14 bb bb 32 125
+1 20 a 1 14 bb bb 30 125
+1 20 a 1 14 bb bb 23 125
+2 23 b 2 12 aa aa 77 259
+2 23 b 2 12 aa aa 50 259
+2 23 b 2 12 aa aa 15 259
+2 23 b 2 12 aa aa 82 259
+2 23 b 2 12 aa aa 15 259
+2 23 b 2 12 aa aa 20 259
+2 23 b 2 11 aa aa 77 259
+2 23 b 2 11 aa aa 50 259
+2 23 b 2 11 aa aa 15 259
+2 23 b 2 11 aa aa 82 259
+2 23 b 2 11 aa aa 15 259
+2 23 b 2 11 aa aa 20 259
+7 18 z 7 17 cc cc 12 40
+7 18 z 7 17 cc cc 18 40
+7 18 z 7 17 cc cc 10 40
+7 18 z 7 18 aa aa 77 259
+7 18 z 7 18 aa aa 50 259
+7 18 z 7 18 aa aa 15 259
+7 18 z 7 18 aa aa 82 259
+7 18 z 7 18 aa aa 15 259
+7 18 z 7 18 aa aa 20 259
+7 18 z 7 10 bb bb 40 125
+7 18 z 7 10 bb bb 32 125
+7 18 z 7 10 bb bb 30 125
+7 18 z 7 10 bb bb 23 125
+1 30 c 1 14 bb bb 40 125
+1 30 c 1 14 bb bb 32 125
+1 30 c 1 14 bb bb 30 125
+1 30 c 1 14 bb bb 23 125
+3 15 x 3 11 dd dd 20 32
+3 15 x 3 11 dd dd 12 32
+8 12 t 8 11 aa aa 77 259
+8 12 t 8 11 aa aa 50 259
+8 12 t 8 11 aa aa 15 259
+8 12 t 8 11 aa aa 82 259
+8 12 t 8 11 aa aa 15 259
+8 12 t 8 11 aa aa 20 259
+11 33 a 11 24 bbf bbf 50 165
+11 33 a 11 24 bbf bbf 42 165
+11 33 a 11 24 bbf bbf 40 165
+11 33 a 11 24 bbf bbf 33 165
+17 10 s 17 27 ccf ccf 22 70
+17 10 s 17 27 ccf ccf 28 70
+17 10 s 17 27 ccf ccf 20 70
+17 10 s 17 28 aaf aaf 87 319
+17 10 s 17 28 aaf aaf 60 319
+17 10 s 17 28 aaf aaf 25 319
+17 10 s 17 28 aaf aaf 92 319
+17 10 s 17 28 aaf aaf 25 319
+17 10 s 17 28 aaf aaf 30 319
+17 10 s 17 20 bbf bbf 50 165
+17 10 s 17 20 bbf bbf 42 165
+17 10 s 17 20 bbf bbf 40 165
+17 10 s 17 20 bbf bbf 33 165
+11 20 v 11 24 bbf bbf 50 165
+11 20 v 11 24 bbf bbf 42 165
+11 20 v 11 24 bbf bbf 40 165
+11 20 v 11 24 bbf bbf 33 165
+12 23 y 12 22 aaf aaf 87 319
+12 23 y 12 22 aaf aaf 60 319
+12 23 y 12 22 aaf aaf 25 319
+12 23 y 12 22 aaf aaf 92 319
+12 23 y 12 22 aaf aaf 25 319
+12 23 y 12 22 aaf aaf 30 319
+12 23 y 12 21 aaf aaf 87 319
+12 23 y 12 21 aaf aaf 60 319
+12 23 y 12 21 aaf aaf 25 319
+12 23 y 12 21 aaf aaf 92 319
+12 23 y 12 21 aaf aaf 25 319
+12 23 y 12 21 aaf aaf 30 319
+17 18 a 17 27 ccf ccf 22 70
+17 18 a 17 27 ccf ccf 28 70
+17 18 a 17 27 ccf ccf 20 70
+17 18 a 17 28 aaf aaf 87 319
+17 18 a 17 28 aaf aaf 60 319
+17 18 a 17 28 aaf aaf 25 319
+17 18 a 17 28 aaf aaf 92 319
+17 18 a 17 28 aaf aaf 25 319
+17 18 a 17 28 aaf aaf 30 319
+17 18 a 17 20 bbf bbf 50 165
+17 18 a 17 20 bbf bbf 42 165
+17 18 a 17 20 bbf bbf 40 165
+17 18 a 17 20 bbf bbf 33 165
+11 30 d 11 24 bbf bbf 50 165
+11 30 d 11 24 bbf bbf 42 165
+11 30 d 11 24 bbf bbf 40 165
+11 30 d 11 24 bbf bbf 33 165
+17 20 xf 17 27 ccf ccf 22 70
+17 20 xf 17 27 ccf ccf 28 70
+17 20 xf 17 27 ccf ccf 20 70
+17 20 xf 17 28 aaf aaf 87 319
+17 20 xf 17 28 aaf aaf 60 319
+17 20 xf 17 28 aaf aaf 25 319
+17 20 xf 17 28 aaf aaf 92 319
+17 20 xf 17 28 aaf aaf 25 319
+17 20 xf 17 28 aaf aaf 30 319
+17 20 xf 17 20 bbf bbf 50 165
+17 20 xf 17 20 bbf bbf 42 165
+17 20 xf 17 20 bbf bbf 40 165
+17 20 xf 17 20 bbf bbf 33 165
+11 30 af 11 24 bbf bbf 50 165
+11 30 af 11 24 bbf bbf 42 165
+11 30 af 11 24 bbf bbf 40 165
+11 30 af 11 24 bbf bbf 33 165
+12 33 bf 12 22 aaf aaf 87 319
+12 33 bf 12 22 aaf aaf 60 319
+12 33 bf 12 22 aaf aaf 25 319
+12 33 bf 12 22 aaf aaf 92 319
+12 33 bf 12 22 aaf aaf 25 319
+12 33 bf 12 22 aaf aaf 30 319
+12 33 bf 12 21 aaf aaf 87 319
+12 33 bf 12 21 aaf aaf 60 319
+12 33 bf 12 21 aaf aaf 25 319
+12 33 bf 12 21 aaf aaf 92 319
+12 33 bf 12 21 aaf aaf 25 319
+12 33 bf 12 21 aaf aaf 30 319
+17 28 zf 17 27 ccf ccf 22 70
+17 28 zf 17 27 ccf ccf 28 70
+17 28 zf 17 27 ccf ccf 20 70
+17 28 zf 17 28 aaf aaf 87 319
+17 28 zf 17 28 aaf aaf 60 319
+17 28 zf 17 28 aaf aaf 25 319
+17 28 zf 17 28 aaf aaf 92 319
+17 28 zf 17 28 aaf aaf 25 319
+17 28 zf 17 28 aaf aaf 30 319
+17 28 zf 17 20 bbf bbf 50 165
+17 28 zf 17 20 bbf bbf 42 165
+17 28 zf 17 20 bbf bbf 40 165
+17 28 zf 17 20 bbf bbf 33 165
+13 25 xf 13 21 ddf ddf 30 52
+13 25 xf 13 21 ddf ddf 22 52
+18 22 tf 18 21 aaf aaf 87 319
+18 22 tf 18 21 aaf aaf 60 319
+18 22 tf 18 21 aaf aaf 25 319
+18 22 tf 18 21 aaf aaf 92 319
+18 22 tf 18 21 aaf aaf 25 319
+18 22 tf 18 21 aaf aaf 30 319
+select *
+from t2, t3, (select c, b, sum(b) over (partition by c) from t4 ) t
+where t2.b < 40 and t2.a=t3.a and t3.c=t.c;
+a b c a b c c b sum(b) over (partition by c)
+7 10 x 7 17 cc cc 12 40
+7 10 x 7 17 cc cc 18 40
+7 10 x 7 17 cc cc 10 40
+7 10 x 7 18 aa aa 77 259
+7 10 x 7 18 aa aa 50 259
+7 10 x 7 18 aa aa 15 259
+7 10 x 7 18 aa aa 82 259
+7 10 x 7 18 aa aa 15 259
+7 10 x 7 18 aa aa 20 259
+7 10 x 7 10 bb bb 40 125
+7 10 x 7 10 bb bb 32 125
+7 10 x 7 10 bb bb 30 125
+7 10 x 7 10 bb bb 23 125
+1 20 a 1 14 bb bb 40 125
+1 20 a 1 14 bb bb 32 125
+1 20 a 1 14 bb bb 30 125
+1 20 a 1 14 bb bb 23 125
+2 23 b 2 12 aa aa 77 259
+2 23 b 2 12 aa aa 50 259
+2 23 b 2 12 aa aa 15 259
+2 23 b 2 12 aa aa 82 259
+2 23 b 2 12 aa aa 15 259
+2 23 b 2 12 aa aa 20 259
+2 23 b 2 11 aa aa 77 259
+2 23 b 2 11 aa aa 50 259
+2 23 b 2 11 aa aa 15 259
+2 23 b 2 11 aa aa 82 259
+2 23 b 2 11 aa aa 15 259
+2 23 b 2 11 aa aa 20 259
+7 18 z 7 17 cc cc 12 40
+7 18 z 7 17 cc cc 18 40
+7 18 z 7 17 cc cc 10 40
+7 18 z 7 18 aa aa 77 259
+7 18 z 7 18 aa aa 50 259
+7 18 z 7 18 aa aa 15 259
+7 18 z 7 18 aa aa 82 259
+7 18 z 7 18 aa aa 15 259
+7 18 z 7 18 aa aa 20 259
+7 18 z 7 10 bb bb 40 125
+7 18 z 7 10 bb bb 32 125
+7 18 z 7 10 bb bb 30 125
+7 18 z 7 10 bb bb 23 125
+1 30 c 1 14 bb bb 40 125
+1 30 c 1 14 bb bb 32 125
+1 30 c 1 14 bb bb 30 125
+1 30 c 1 14 bb bb 23 125
+3 15 x 3 11 dd dd 20 32
+3 15 x 3 11 dd dd 12 32
+8 12 t 8 11 aa aa 77 259
+8 12 t 8 11 aa aa 50 259
+8 12 t 8 11 aa aa 15 259
+8 12 t 8 11 aa aa 82 259
+8 12 t 8 11 aa aa 15 259
+8 12 t 8 11 aa aa 20 259
+11 33 a 11 24 bbf bbf 50 165
+11 33 a 11 24 bbf bbf 42 165
+11 33 a 11 24 bbf bbf 40 165
+11 33 a 11 24 bbf bbf 33 165
+17 10 s 17 27 ccf ccf 22 70
+17 10 s 17 27 ccf ccf 28 70
+17 10 s 17 27 ccf ccf 20 70
+17 10 s 17 28 aaf aaf 87 319
+17 10 s 17 28 aaf aaf 60 319
+17 10 s 17 28 aaf aaf 25 319
+17 10 s 17 28 aaf aaf 92 319
+17 10 s 17 28 aaf aaf 25 319
+17 10 s 17 28 aaf aaf 30 319
+17 10 s 17 20 bbf bbf 50 165
+17 10 s 17 20 bbf bbf 42 165
+17 10 s 17 20 bbf bbf 40 165
+17 10 s 17 20 bbf bbf 33 165
+11 20 v 11 24 bbf bbf 50 165
+11 20 v 11 24 bbf bbf 42 165
+11 20 v 11 24 bbf bbf 40 165
+11 20 v 11 24 bbf bbf 33 165
+12 23 y 12 22 aaf aaf 87 319
+12 23 y 12 22 aaf aaf 60 319
+12 23 y 12 22 aaf aaf 25 319
+12 23 y 12 22 aaf aaf 92 319
+12 23 y 12 22 aaf aaf 25 319
+12 23 y 12 22 aaf aaf 30 319
+12 23 y 12 21 aaf aaf 87 319
+12 23 y 12 21 aaf aaf 60 319
+12 23 y 12 21 aaf aaf 25 319
+12 23 y 12 21 aaf aaf 92 319
+12 23 y 12 21 aaf aaf 25 319
+12 23 y 12 21 aaf aaf 30 319
+17 18 a 17 27 ccf ccf 22 70
+17 18 a 17 27 ccf ccf 28 70
+17 18 a 17 27 ccf ccf 20 70
+17 18 a 17 28 aaf aaf 87 319
+17 18 a 17 28 aaf aaf 60 319
+17 18 a 17 28 aaf aaf 25 319
+17 18 a 17 28 aaf aaf 92 319
+17 18 a 17 28 aaf aaf 25 319
+17 18 a 17 28 aaf aaf 30 319
+17 18 a 17 20 bbf bbf 50 165
+17 18 a 17 20 bbf bbf 42 165
+17 18 a 17 20 bbf bbf 40 165
+17 18 a 17 20 bbf bbf 33 165
+11 30 d 11 24 bbf bbf 50 165
+11 30 d 11 24 bbf bbf 42 165
+11 30 d 11 24 bbf bbf 40 165
+11 30 d 11 24 bbf bbf 33 165
+17 20 xf 17 27 ccf ccf 22 70
+17 20 xf 17 27 ccf ccf 28 70
+17 20 xf 17 27 ccf ccf 20 70
+17 20 xf 17 28 aaf aaf 87 319
+17 20 xf 17 28 aaf aaf 60 319
+17 20 xf 17 28 aaf aaf 25 319
+17 20 xf 17 28 aaf aaf 92 319
+17 20 xf 17 28 aaf aaf 25 319
+17 20 xf 17 28 aaf aaf 30 319
+17 20 xf 17 20 bbf bbf 50 165
+17 20 xf 17 20 bbf bbf 42 165
+17 20 xf 17 20 bbf bbf 40 165
+17 20 xf 17 20 bbf bbf 33 165
+11 30 af 11 24 bbf bbf 50 165
+11 30 af 11 24 bbf bbf 42 165
+11 30 af 11 24 bbf bbf 40 165
+11 30 af 11 24 bbf bbf 33 165
+12 33 bf 12 22 aaf aaf 87 319
+12 33 bf 12 22 aaf aaf 60 319
+12 33 bf 12 22 aaf aaf 25 319
+12 33 bf 12 22 aaf aaf 92 319
+12 33 bf 12 22 aaf aaf 25 319
+12 33 bf 12 22 aaf aaf 30 319
+12 33 bf 12 21 aaf aaf 87 319
+12 33 bf 12 21 aaf aaf 60 319
+12 33 bf 12 21 aaf aaf 25 319
+12 33 bf 12 21 aaf aaf 92 319
+12 33 bf 12 21 aaf aaf 25 319
+12 33 bf 12 21 aaf aaf 30 319
+17 28 zf 17 27 ccf ccf 22 70
+17 28 zf 17 27 ccf ccf 28 70
+17 28 zf 17 27 ccf ccf 20 70
+17 28 zf 17 28 aaf aaf 87 319
+17 28 zf 17 28 aaf aaf 60 319
+17 28 zf 17 28 aaf aaf 25 319
+17 28 zf 17 28 aaf aaf 92 319
+17 28 zf 17 28 aaf aaf 25 319
+17 28 zf 17 28 aaf aaf 30 319
+17 28 zf 17 20 bbf bbf 50 165
+17 28 zf 17 20 bbf bbf 42 165
+17 28 zf 17 20 bbf bbf 40 165
+17 28 zf 17 20 bbf bbf 33 165
+13 25 xf 13 21 ddf ddf 30 52
+13 25 xf 13 21 ddf ddf 22 52
+18 22 tf 18 21 aaf aaf 87 319
+18 22 tf 18 21 aaf aaf 60 319
+18 22 tf 18 21 aaf aaf 25 319
+18 22 tf 18 21 aaf aaf 92 319
+18 22 tf 18 21 aaf aaf 25 319
+18 22 tf 18 21 aaf aaf 30 319
+explain extended select *
+from t2, t3, (select c, b, sum(b) over (partition by c) from t4 ) t
+where t2.b < 40 and t2.a=t3.a and t3.c=t.c;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 90 100.00 Using where
+1 PRIMARY t3 ref idx_a idx_a 5 test.t2.a 2 100.00 Using where
+1 PRIMARY <derived2> ref key0 key0 128 test.t3.c 10 100.00
+2 DERIVED t4 ALL idx_c NULL NULL NULL 160 100.00 Using temporary
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t3`.`c` AS `c`,`t`.`c` AS `c`,`t`.`b` AS `b`,`t`.`sum(b) over (partition by c)` AS `sum(b) over (partition by c)` from `test`.`t2` join `test`.`t3` join (/* select#2 */ select `test`.`t4`.`c` AS `c`,`test`.`t4`.`b` AS `b`,sum(`test`.`t4`.`b`) over ( partition by `test`.`t4`.`c`) AS `sum(b) over (partition by c)` from `test`.`t4`) `t` where `test`.`t3`.`a` = `test`.`t2`.`a` and `t`.`c` = `test`.`t3`.`c` and `test`.`t2`.`b` < 40
+explain format=json select *
+from t2, t3, (select c, b, sum(b) over (partition by c) from t4 ) t
+where t2.b < 40 and t2.a=t3.a and t3.c=t.c;
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t2",
+ "access_type": "ALL",
+ "rows": 90,
+ "filtered": 100,
+ "attached_condition": "t2.b < 40 and t2.a is not null"
+ },
+ "table": {
+ "table_name": "t3",
+ "access_type": "ref",
+ "possible_keys": ["idx_a"],
+ "key": "idx_a",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "ref": ["test.t2.a"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "t3.c is not null"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "128",
+ "used_key_parts": ["c"],
+ "ref": ["test.t3.c"],
+ "rows": 10,
+ "filtered": 100,
+ "materialized": {
+ "query_block": {
+ "select_id": 2,
+ "window_functions_computation": {
+ "sorts": {
+ "filesort": {
+ "sort_key": "t4.c"
+ }
+ },
+ "temporary_table": {
+ "table": {
+ "table_name": "t4",
+ "access_type": "ALL",
+ "possible_keys": ["idx_c"],
+ "rows": 160,
"filtered": 100
}
}
@@ -10154,39 +14688,53 @@ CREATE TABLE t1 (i int);
INSERT INTO t1 VALUES (1),(9),(3);
CREATE TABLE t2 (a int, i int);
INSERT INTO t2 VALUES (1,9),(2,3),(3,7),(4,1);
-CREATE TABLE t3 (a int, c varchar(8), index(c));
+CREATE TABLE t3 (a int, c char(127), index(c));
INSERT INTO t3 VALUES (1,'foo'),(3,'bar'),(4,'foo'),(2,'bar');
-CREATE TABLE t4 (c varchar(8));
-INSERT INTO t4 VALUES ('abc'),('foo'),('def');
+INSERT INTO t3 SELECT a, concat(c,'a') FROM t3;
+CREATE TABLE t4 (a int, c char(127), index(a));
+INSERT INTO t4 VALUES
+(3,'abc'),(1,'foo'),(4,'def'),(8,'xxx'),(3,'yyy'),
+(5,'zzz'),(9,'xyz'),(2,'yxz'),(5,'zxy'),(7,'zyx') ;
+ANALYZE TABLE t1,t2,t3,t4;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+test.t2 analyze status OK
+test.t3 analyze status OK
+test.t4 analyze status OK
CREATE VIEW v1 AS
SELECT c FROM t3
WHERE a IN ( SELECT t2.a FROM t1 JOIN t2 WHERE t1.i = t2.i ) GROUP BY c ;
-set statement optimizer_switch='split_grouping_derived=off' for SELECT * FROM t4 WHERE c IN ( SELECT c FROM v1 );
-c
-foo
-SELECT * FROM t4 WHERE c IN ( SELECT c FROM v1 );
-c
-foo
-explain extended SELECT * FROM t4 WHERE c IN ( SELECT c FROM v1 );
+set statement optimizer_switch='split_materialized=off' for SELECT * FROM t4 WHERE c IN ( SELECT c FROM v1 ) and a < 2;
+a c
+1 foo
+SELECT * FROM t4 WHERE c IN ( SELECT c FROM v1 ) and a < 2;
+a c
+1 foo
+explain extended SELECT * FROM t4 WHERE c IN ( SELECT c FROM v1 ) and a < 2;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t4 ALL NULL NULL NULL NULL 3 100.00 Using where
-1 PRIMARY <derived3> ref key0 key0 11 test.t4.c 4 100.00 FirstMatch(t4)
-3 LATERAL DERIVED t3 ALL c NULL NULL NULL 4 75.00 Using where
+1 PRIMARY t4 range a a 5 NULL 1 100.00 Using index condition; Using where
+1 PRIMARY <derived3> ref key0 key0 128 test.t4.c 2 100.00 FirstMatch(t4)
+3 LATERAL DERIVED t3 ref c c 128 test.t4.c 2 100.00
3 LATERAL DERIVED <subquery4> eq_ref distinct_key distinct_key 4 func 1 100.00
4 MATERIALIZED t1 ALL NULL NULL NULL NULL 3 100.00
4 MATERIALIZED t2 ALL NULL NULL NULL NULL 4 100.00 Using where; Using join buffer (flat, BNL join)
Warnings:
-Note 1003 /* select#1 */ select `test`.`t4`.`c` AS `c` from `test`.`t4` semi join (`test`.`v1`) where `v1`.`c` = `test`.`t4`.`c`
-explain format=json SELECT * FROM t4 WHERE c IN ( SELECT c FROM v1 );
+Note 1003 /* select#1 */ select `test`.`t4`.`a` AS `a`,`test`.`t4`.`c` AS `c` from `test`.`t4` semi join (`test`.`v1`) where `v1`.`c` = `test`.`t4`.`c` and `test`.`t4`.`a` < 2
+explain format=json SELECT * FROM t4 WHERE c IN ( SELECT c FROM v1 ) and a < 2;
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "t4",
- "access_type": "ALL",
- "rows": 3,
+ "access_type": "range",
+ "possible_keys": ["a"],
+ "key": "a",
+ "key_length": "5",
+ "used_key_parts": ["a"],
+ "rows": 1,
"filtered": 100,
+ "index_condition": "t4.a < 2",
"attached_condition": "t4.c is not null"
},
"table": {
@@ -10194,23 +14742,27 @@ EXPLAIN
"access_type": "ref",
"possible_keys": ["key0"],
"key": "key0",
- "key_length": "11",
+ "key_length": "128",
"used_key_parts": ["c"],
"ref": ["test.t4.c"],
- "rows": 4,
+ "rows": 2,
"filtered": 100,
"first_match": "t4",
"materialized": {
"query_block": {
"select_id": 3,
"const_condition": "1",
+ "outer_ref_condition": "t4.c is not null",
"table": {
"table_name": "t3",
- "access_type": "ALL",
+ "access_type": "ref",
"possible_keys": ["c"],
- "rows": 4,
- "filtered": 75,
- "attached_condition": "t3.c = t4.c"
+ "key": "c",
+ "key_length": "128",
+ "used_key_parts": ["c"],
+ "ref": ["test.t4.c"],
+ "rows": 2,
+ "filtered": 100
},
"table": {
"table_name": "<subquery4>",
@@ -10284,3 +14836,112 @@ SELECT * FROM v3 JOIN t1 ON (bmax = b);
a bmax a b
DROP VIEW v1,v2,v3;
DROP TABLE t1,t2;
+#
+# MDEV-14845: Impossible where for derived with GROUP BY
+#
+CREATE TABLE t1 (pk INT PRIMARY KEY);
+INSERT INTO t1 VALUES (1),(2);
+WITH cte AS ( SELECT pk FROM t1 WHERE pk IS NULL GROUP BY pk )
+SELECT * FROM cte;
+pk
+EXPLAIN EXTENDED WITH cte AS ( SELECT pk FROM t1 WHERE pk IS NULL GROUP BY pk )
+SELECT * FROM cte;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 0.00 Const row not found
+2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
+Warnings:
+Note 1003 with cte as (/* select#2 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` where 0 group by `test`.`t1`.`pk`)/* select#1 */ select NULL AS `pk` from `cte`
+DROP TABLE t1;
+#
+# MDEV-14880: assertion failure in optimizer when splitting is applied
+#
+CREATE TABLE t1 (pk1 INT PRIMARY KEY, f INT) ENGINE=Aria;
+INSERT INTO t1 VALUES (1,0),(2,0);
+CREATE TABLE t2 (pk2 INT PRIMARY KEY) ENGINE=Aria;
+INSERT INTO t2 VALUES (1),(2),(3);
+CREATE VIEW v2 AS SELECT pk2, COUNT(*) AS cnt FROM t2 GROUP BY pk2;
+SELECT * FROM t1 INNER JOIN v2 ON pk1 = pk2 WHERE f <> 5;
+pk1 f pk2 cnt
+1 0 1 1
+2 0 2 1
+EXPLAIN EXTENDED SELECT * FROM t1 INNER JOIN v2 ON pk1 = pk2 WHERE f <> 5;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL PRIMARY NULL NULL NULL 2 100.00 Using where
+1 PRIMARY <derived2> ref key0 key0 4 test.t1.pk1 2 100.00
+2 LATERAL DERIVED t2 eq_ref PRIMARY PRIMARY 4 test.t1.pk1 1 100.00 Using index
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`pk1` AS `pk1`,`test`.`t1`.`f` AS `f`,`v2`.`pk2` AS `pk2`,`v2`.`cnt` AS `cnt` from `test`.`t1` join `test`.`v2` where `v2`.`pk2` = `test`.`t1`.`pk1` and `test`.`t1`.`f` <> 5
+EXPLAIN FORMAT=JSON SELECT * FROM t1 INNER JOIN v2 ON pk1 = pk2 WHERE f <> 5;
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "possible_keys": ["PRIMARY"],
+ "rows": 2,
+ "filtered": 100,
+ "attached_condition": "t1.f <> 5"
+ },
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "4",
+ "used_key_parts": ["pk2"],
+ "ref": ["test.t1.pk1"],
+ "rows": 2,
+ "filtered": 100,
+ "materialized": {
+ "query_block": {
+ "select_id": 2,
+ "outer_ref_condition": "t1.pk1 is not null",
+ "table": {
+ "table_name": "t2",
+ "access_type": "eq_ref",
+ "possible_keys": ["PRIMARY"],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["pk2"],
+ "ref": ["test.t1.pk1"],
+ "rows": 1,
+ "filtered": 100,
+ "using_index": true
+ }
+ }
+ }
+ }
+ }
+}
+DROP VIEW v2;
+DROP TABLE t1,t2;
+#
+# MDEV-15017: splittable table is constant table
+#
+CREATE TABLE t1 (a INT) ENGINE=MyISAM;
+CREATE TABLE t2 (pk INT, b INT, PRIMARY KEY (pk)) ENGINE=MyISAM;
+INSERT INTO t2 VALUES (1,2),(3,4);
+CREATE VIEW v2 AS SELECT pk, MIN(b) FROM t2 GROUP BY pk;
+SELECT * FROM t1 LEFT JOIN v2 ON (a = pk);
+a pk MIN(b)
+DROP VIEW v2;
+DROP TABLE t1,t2;
+#
+# MDEV-14994: splittable table with no rows
+#
+CREATE TABLE t1 (f INT PRIMARY KEY) ENGINE=MyISAM;
+CREATE VIEW v1 AS SELECT a.* FROM t1 AS a STRAIGHT_JOIN t1 AS b;
+CREATE VIEW v2 AS SELECT f FROM v1 GROUP BY f;
+SELECT * FROM v1 JOIN v2 ON v1.f = v2.f;
+f f
+EXPLAIN EXTENDED
+SELECT * FROM v1 JOIN v2 ON v1.f = v2.f;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+3 LATERAL DERIVED NULL NULL NULL NULL NULL NULL NULL NULL no matching row in const table
+Warnings:
+Note 1003 /* select#1 */ select NULL AS `f`,`v2`.`f` AS `f` from `test`.`t1` `a` straight_join `test`.`t1` `b` join `test`.`v2` where 0
+DROP VIEW v1,v2;
+DROP TABLE t1;
diff --git a/mysql-test/r/derived_view.result b/mysql-test/r/derived_view.result
index 9221c6240bd..85e56ff176e 100644
--- a/mysql-test/r/derived_view.result
+++ b/mysql-test/r/derived_view.result
@@ -2014,7 +2014,7 @@ SELECT t.b, t.c, t1.a
FROM t1, (SELECT t2.b, t2.c FROM t3 RIGHT JOIN t2 ON t2.a = t3.b) AS t
WHERE t.b AND t.c = t1.a;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t3 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t3 system NULL NULL NULL NULL 0 0.00 Const row not found
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
Warnings:
@@ -2029,7 +2029,7 @@ SELECT t.b, t.c, t1.a
FROM t1, (SELECT t2.b, t2.c FROM t3 RIGHT JOIN t2 ON t2.a = t3.b) AS t
WHERE t.b <> 0 AND t.c = t1.a;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t3 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t3 system NULL NULL NULL NULL 0 0.00 Const row not found
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
Warnings:
@@ -2310,6 +2310,8 @@ Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
DROP TABLE t1;
SET SESSION optimizer_switch= @save_optimizer_switch;
#
diff --git a/mysql-test/r/errors.result b/mysql-test/r/errors.result
index dcb952fcdeb..ba05a2b37d4 100644
--- a/mysql-test/r/errors.result
+++ b/mysql-test/r/errors.result
@@ -150,17 +150,17 @@ ERROR 22003: BIGINT value is out of range in '-73 * -2465717823867977728'
#
CREATE TABLE t1 (a INT);
CREATE TABLE t2(a INT PRIMARY KEY, b INT);
-SELECT '' AS b FROM t1 GROUP BY VALUES(b);
+SELECT '' AS b FROM t1 GROUP BY VALUE(b);
ERROR 42S22: Unknown column '' in 'VALUES() function'
-REPLACE t2(b) SELECT '' AS b FROM t1 GROUP BY VALUES(b);
+REPLACE t2(b) SELECT '' AS b FROM t1 GROUP BY VALUE(b);
ERROR 42S22: Unknown column '' in 'VALUES() function'
-UPDATE t2 SET a=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
+UPDATE t2 SET a=(SELECT '' AS b FROM t1 GROUP BY VALUE(b));
ERROR 42S22: Unknown column '' in 'VALUES() function'
INSERT INTO t2 VALUES (1,0) ON DUPLICATE KEY UPDATE
-b=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
+b=(SELECT '' AS b FROM t1 GROUP BY VALUE(b));
ERROR 42S22: Unknown column '' in 'VALUES() function'
INSERT INTO t2(a,b) VALUES (1,0) ON DUPLICATE KEY UPDATE
-b=(SELECT VALUES(a)+2 FROM t1);
+b=(SELECT VALUE(a)+2 FROM t1);
DROP TABLE t1, t2;
#
# MDEV-492: incorrect error check before sending OK in mysql_update
diff --git a/mysql-test/r/events_grant.result b/mysql-test/r/events_grant.result
index a054e58494b..51b80742737 100644
--- a/mysql-test/r/events_grant.result
+++ b/mysql-test/r/events_grant.result
@@ -23,7 +23,7 @@ SHOW GRANTS;
Grants for ev_test@localhost
GRANT USAGE ON *.* TO 'ev_test'@'localhost'
GRANT ALL PRIVILEGES ON `events_test`.* TO 'ev_test'@'localhost'
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, TRIGGER ON `events_test2`.* TO 'ev_test'@'localhost'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, TRIGGER, DELETE VERSIONING ROWS ON `events_test2`.* TO 'ev_test'@'localhost'
"Here comes an error:";
SHOW EVENTS;
ERROR 42000: Access denied for user 'ev_test'@'localhost' to database 'events_test2'
diff --git a/mysql-test/r/explain.result b/mysql-test/r/explain.result
index 97e49af96d4..f593e0dfaba 100644
--- a/mysql-test/r/explain.result
+++ b/mysql-test/r/explain.result
@@ -2,7 +2,7 @@ drop table if exists t1;
create table t1 (id int not null, str char(10), unique(str));
explain select * from t1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
insert into t1 values (1, null),(2, null),(3, "foo"),(4, "bar");
select * from t1 where str is null;
id str
@@ -218,8 +218,8 @@ EXPLAIN EXTENDED SELECT 1 FROM t1
WHERE f1 > ALL( SELECT t.f1 FROM t1,t1 AS t );
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
-2 SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 SUBQUERY t system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 SUBQUERY t system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select 1 AS `1` from `test`.`t1` where 0
SET SESSION sql_mode=@old_sql_mode;
@@ -387,7 +387,7 @@ set optimizer_switch='derived_merge=off,derived_with_keys=off';
EXPLAIN EXTENDED
SELECT * FROM ( SELECT t1.a FROM t1,t2 WHERE t2.a = t1.a ) AS t;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY <derived2> system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 0.00 Const row not found
2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL no matching row in const table
Warnings:
Note 1003 /* select#1 */ select NULL AS `a` from (/* select#2 */ select NULL AS `a` from `test`.`t1` where 0) `t`
diff --git a/mysql-test/r/explain_json.result b/mysql-test/r/explain_json.result
index 291b9523eaf..ef6b70aff71 100644
--- a/mysql-test/r/explain_json.result
+++ b/mysql-test/r/explain_json.result
@@ -1204,7 +1204,7 @@ create table t1 (i int) engine=myisam;
explain
select * from t1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
explain format=json
select * from t1;
EXPLAIN
diff --git a/mysql-test/r/features.result b/mysql-test/r/features.result
index c6d1a6b0bac..fc276e2f885 100644
--- a/mysql-test/r/features.result
+++ b/mysql-test/r/features.result
@@ -8,6 +8,7 @@ Feature_delay_key_write 0
Feature_dynamic_columns 0
Feature_fulltext 0
Feature_gis 0
+Feature_invisible_columns 0
Feature_locale 0
Feature_subquery 0
Feature_timezone 0
diff --git a/mysql-test/r/fulltext.result b/mysql-test/r/fulltext.result
index c399855bfee..308d1d7fcb9 100644
--- a/mysql-test/r/fulltext.result
+++ b/mysql-test/r/fulltext.result
@@ -49,7 +49,7 @@ a b
Full-text indexes are called collections
Only MyISAM tables support collections
select * from t1 where MATCH(a,b) AGAINST ("indexes" IN BOOLEAN MODE WITH QUERY EXPANSION);
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'QUERY EXPANSION)' at line 1
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH QUERY EXPANSION)' at line 1
explain select * from t1 where MATCH(a,b) AGAINST ("collections");
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 fulltext a a 0 1 Using where
diff --git a/mysql-test/r/func_gconcat.result b/mysql-test/r/func_gconcat.result
index 097e07ac715..723a1952d79 100644
--- a/mysql-test/r/func_gconcat.result
+++ b/mysql-test/r/func_gconcat.result
@@ -1254,3 +1254,129 @@ DROP TABLE t1;
#
# End of 10.2 tests
#
+#
+# Start of 10.3 tests
+#
+drop table if exists t1, t2;
+create table t1 (grp int, a bigint unsigned, c char(10) , d char(10) not null);
+insert into t1 values (1,1,NULL,"a");
+insert into t1 values (1,10,"b","a");
+insert into t1 values (1,11,"c","a");
+insert into t1 values (2,2,"c","a");
+insert into t1 values (2,3,"b","b");
+insert into t1 values (3,4,"E","a");
+insert into t1 values (3,5,"C","b");
+insert into t1 values (3,6,"D","c");
+insert into t1 values (3,7,"E","c");
+select grp,group_concat(c) from t1 group by grp;
+grp group_concat(c)
+1 b,c
+2 c,b
+3 E,C,D,E
+select grp,group_concat(c limit 1 ) from t1 group by grp;
+grp group_concat(c limit 1 )
+1 b
+2 c
+3 E
+select grp,group_concat(c limit 1,1 ) from t1 group by grp;
+grp group_concat(c limit 1,1 )
+1 c
+2 b
+3 C
+select grp,group_concat(c limit 1,10 ) from t1 group by grp;
+grp group_concat(c limit 1,10 )
+1 c
+2 b
+3 C,D,E
+select grp,group_concat(c limit 1000) from t1 group by grp;
+grp group_concat(c limit 1000)
+1 b,c
+2 c,b
+3 E,C,D,E
+select group_concat(grp limit 0) from t1;
+group_concat(grp limit 0)
+
+select group_concat(grp limit "sdjadjs") from t1
+--error ER_PARSE_ERROR
+select grp,group_concat(c limit 5.5) from t1 group by grp ;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '"sdjadjs") from t1
+--error ER_PARSE_ERROR
+select grp,group_concat(c limit 5.5) f' at line 1
+select grp,group_concat(distinct c limit 1,10 ) from t1 group by grp;
+grp group_concat(distinct c limit 1,10 )
+1 c
+2 b
+3 C,D
+select grp,group_concat(c order by a) from t1 group by grp;
+grp group_concat(c order by a)
+1 b,c
+2 c,b
+3 E,C,D,E
+select grp,group_concat(c order by a limit 2 ) from t1 group by grp;
+grp group_concat(c order by a limit 2 )
+1 b,c
+2 c,b
+3 E,C
+select grp,group_concat(c order by a limit 1,1 ) from t1 group by grp;
+grp group_concat(c order by a limit 1,1 )
+1 c
+2 b
+3 C
+select grp,group_concat(c order by c) from t1 group by grp;
+grp group_concat(c order by c)
+1 b,c
+2 b,c
+3 C,D,E,E
+select grp,group_concat(c order by c limit 2) from t1 group by grp;
+grp group_concat(c order by c limit 2)
+1 b,c
+2 b,c
+3 C,D
+select grp,group_concat(c order by c desc) from t1 group by grp;
+grp group_concat(c order by c desc)
+1 c,b
+2 c,b
+3 E,E,D,C
+select grp,group_concat(c order by c desc limit 2) from t1 group by grp;
+grp group_concat(c order by c desc limit 2)
+1 c,b
+2 c,b
+3 E,E
+drop table t1;
+create table t2 (a int, b varchar(10));
+insert into t2 values(1,'a'),(1,'b'),(NULL,'c'),(2,'x'),(2,'y');
+select group_concat(a,b limit 2) from t2;
+group_concat(a,b limit 2)
+1a,1b
+set @x=4;
+prepare STMT from 'select group_concat(b limit ?) from t2';
+execute STMT using @x;
+group_concat(b limit ?)
+a,b,c,x
+set @x=2;
+execute STMT using @x;
+group_concat(b limit ?)
+a,b
+set @x=1000;
+execute STMT using @x;
+group_concat(b limit ?)
+a,b,c,x,y
+set @x=0;
+execute STMT using @x;
+group_concat(b limit ?)
+
+set @x="adasfa";
+execute STMT using @x;
+ERROR HY000: Limit only accepts integer values
+set @x=-1;
+execute STMT using @x;
+ERROR HY000: Incorrect arguments to EXECUTE
+set @x=4;
+prepare STMT from 'select group_concat(a,b limit ?) from t2';
+execute STMT using @x;
+group_concat(a,b limit ?)
+1a,1b,2x,2y
+drop table t2;
+#
+# End of 10.3 tests
+#
diff --git a/mysql-test/r/func_group.result b/mysql-test/r/func_group.result
index 3340328cad6..9f3928615ec 100644
--- a/mysql-test/r/func_group.result
+++ b/mysql-test/r/func_group.result
@@ -2066,7 +2066,7 @@ HAVING ('m') IN (
SELECT v
FROM t2);
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 Const row not found
3 MATERIALIZED t2 ALL NULL NULL NULL NULL 2
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
set optimizer_switch=@tmp_optimizer_switch;
diff --git a/mysql-test/r/func_group_innodb.result b/mysql-test/r/func_group_innodb.result
index 52d5922df95..27493ae710b 100644
--- a/mysql-test/r/func_group_innodb.result
+++ b/mysql-test/r/func_group_innodb.result
@@ -125,14 +125,14 @@ select 1, max(1) from t1i where 1=99;
1 NULL
explain select count(*), min(7), max(7) from t1m, t1i;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1m system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1m system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t1i ALL NULL NULL NULL NULL 1
select count(*), min(7), max(7) from t1m, t1i;
count(*) min(7) max(7)
0 NULL NULL
explain select count(*), min(7), max(7) from t1m, t2i;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1m system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1m system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t2i ALL NULL NULL NULL NULL 1
select count(*), min(7), max(7) from t1m, t2i;
count(*) min(7) max(7)
@@ -226,7 +226,7 @@ create table y select 1 b;
select 1 from y group by b;
1
1
-select 1 from y group by values(b);
+select 1 from y group by value(b);
1
1
drop table y;
diff --git a/mysql-test/r/func_misc.result b/mysql-test/r/func_misc.result
index 3215590e236..804a563f401 100644
--- a/mysql-test/r/func_misc.result
+++ b/mysql-test/r/func_misc.result
@@ -286,11 +286,11 @@ NAME_CONST('a', -(1)) OR 1
CREATE TABLE t1 (a INT, b INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1,10);
CREATE VIEW v1 AS SELECT * FROM t1;
-EXPLAIN EXTENDED SELECT VALUES(b) FROM v1;
+EXPLAIN EXTENDED SELECT VALUE(b) FROM v1;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
Warnings:
-Note 1003 select values(10) AS `VALUES(b)` from dual
+Note 1003 select value(10) AS `VALUE(b)` from dual
drop view v1;
drop table t1;
End of 5.3 tests
diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result
index da03ae6a18e..2b376373f51 100644
--- a/mysql-test/r/func_str.result
+++ b/mysql-test/r/func_str.result
@@ -1340,12 +1340,12 @@ DROP TABLE t1;
create table t1(f1 varchar(4));
explain extended select encode(f1,'zxcv') as 'enc' from t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select encode(NULL,'zxcv') AS `enc` from `test`.`t1`
explain extended select decode(f1,'zxcv') as 'enc' from t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select decode(NULL,'zxcv') AS `enc` from `test`.`t1`
drop table t1;
diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result
index 5f9e682d63d..22add627144 100644
--- a/mysql-test/r/grant.result
+++ b/mysql-test/r/grant.result
@@ -49,6 +49,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type SPECIFIED
ssl_cipher EDH-RSA-DES-CBC3-SHA
x509_issuer
@@ -124,6 +125,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -175,6 +177,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -223,7 +226,7 @@ revoke LOCK TABLES, ALTER on mysqltest.* from mysqltest_1@localhost;
show grants for mysqltest_1@localhost;
Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, CREATE TEMPORARY TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `mysqltest`.* TO 'mysqltest_1'@'localhost' WITH GRANT OPTION
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, CREATE TEMPORARY TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, DELETE VERSIONING ROWS ON `mysqltest`.* TO 'mysqltest_1'@'localhost' WITH GRANT OPTION
revoke all privileges on mysqltest.* from mysqltest_1@localhost;
delete from mysql.user where user='mysqltest_1';
flush privileges;
@@ -609,6 +612,7 @@ Create temporary tables Databases To use CREATE TEMPORARY TABLE
Create view Tables To create new views
Create user Server Admin To create new users
Delete Tables To delete existing rows
+Delete versioning rows Tables To delete versioning table historical rows
Drop Databases,Tables To drop databases, tables, and views
Event Server Admin To create, alter, drop and execute events
Execute Functions,Procedures To execute stored routines
@@ -664,8 +668,8 @@ SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
TABLE_SCHEMA TABLE_NAME PRIVILEGES
-mysqltest dummytable ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
-mysqltest dummyview ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
+mysqltest dummytable ALTER, CREATE, CREATE VIEW, DELETE, DELETE VERSIONING ROWS, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
+mysqltest dummyview ALTER, CREATE, CREATE VIEW, DELETE, DELETE VERSIONING ROWS, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
FLUSH PRIVILEGES;
SHOW GRANTS FOR dummy@localhost;
Grants for dummy@localhost
@@ -676,8 +680,8 @@ SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
TABLE_SCHEMA TABLE_NAME PRIVILEGES
-mysqltest dummytable ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
-mysqltest dummyview ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
+mysqltest dummytable ALTER, CREATE, CREATE VIEW, DELETE, DELETE VERSIONING ROWS, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
+mysqltest dummyview ALTER, CREATE, CREATE VIEW, DELETE, DELETE VERSIONING ROWS, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
SHOW FIELDS FROM mysql.tables_priv;
Field Type Null Key Default Extra
Host char(60) NO PRI
@@ -686,7 +690,7 @@ User char(80) NO PRI
Table_name char(64) NO PRI
Grantor char(141) NO MUL
Timestamp timestamp NO current_timestamp() on update current_timestamp()
-Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') NO
+Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger','Delete versioning rows') NO
Column_priv set('Select','Insert','Update','References') NO
use test;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost;
@@ -769,7 +773,7 @@ flush privileges;
use test;
set @user123="non-existent";
select * from mysql.db where user=@user123;
-Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv
+Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv Delete_history_priv
set names koi8r;
create database ÂÄ;
grant select on ÂÄ.* to root@localhost;
diff --git a/mysql-test/r/group_by_null.result b/mysql-test/r/group_by_null.result
index 01053514cb0..1ae090fdc63 100644
--- a/mysql-test/r/group_by_null.result
+++ b/mysql-test/r/group_by_null.result
@@ -1,6 +1,6 @@
create table t1 (a int);
insert into t1 values (1),(2);
-select max('foo') from t1 group by values(a), extractvalue('bar','qux') order by "v";
+select max('foo') from t1 group by value(a), extractvalue('bar','qux') order by "v";
max('foo')
foo
drop table t1;
diff --git a/mysql-test/r/information_schema-big.result b/mysql-test/r/information_schema-big.result
index 112d4842e42..cbd8191bc54 100644
--- a/mysql-test/r/information_schema-big.result
+++ b/mysql-test/r/information_schema-big.result
@@ -1,5 +1,3 @@
-DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5;
-DROP VIEW IF EXISTS v1;
#
# Bug#18925: subqueries with MIN/MAX functions on INFORMATION_SCHEMA
#
diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result
index 10f21c1159b..d9ed5e7e891 100644
--- a/mysql-test/r/information_schema.result
+++ b/mysql-test/r/information_schema.result
@@ -121,6 +121,7 @@ time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
+transaction_registry
user
v1
select c,table_name from v1
@@ -145,6 +146,7 @@ time_zone_leap_second time_zone_leap_second
time_zone_name time_zone_name
time_zone_transition time_zone_transition
time_zone_transition_type time_zone_transition_type
+transaction_registry transaction_registry
select c,table_name from v1
left join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%";
@@ -167,6 +169,7 @@ time_zone_leap_second time_zone_leap_second
time_zone_name time_zone_name
time_zone_transition time_zone_transition
time_zone_transition_type time_zone_transition_type
+transaction_registry transaction_registry
select c, v2.table_name from v1
right join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%";
@@ -189,6 +192,7 @@ time_zone_leap_second time_zone_leap_second
time_zone_name time_zone_name
time_zone_transition time_zone_transition
time_zone_transition_type time_zone_transition_type
+transaction_registry transaction_registry
select table_name from information_schema.TABLES
where table_schema = "mysqltest" and table_name like "t%";
table_name
@@ -487,6 +491,7 @@ GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
'mysqltest_1'@'localhost' def test ALTER ROUTINE YES
'mysqltest_1'@'localhost' def test EVENT YES
'mysqltest_1'@'localhost' def test TRIGGER YES
+'mysqltest_1'@'localhost' def test DELETE VERSIONING ROWS YES
select * from information_schema.TABLE_PRIVILEGES where grantee like '%mysqltest_1%';
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
'mysqltest_1'@'localhost' def test t1 SELECT NO
@@ -586,8 +591,8 @@ select s1 from t1 where s1 in (select version from
information_schema.tables) union select version from
information_schema.tables;
s1
-11
10
+11
drop table t1;
SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets;
Table Create Table
@@ -659,12 +664,13 @@ proc body longblob
proc definer char(141)
proc created timestamp
proc modified timestamp
-proc sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL')
+proc sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT')
proc comment text
proc character_set_client char(32)
proc collation_connection char(32)
proc db_collation char(32)
proc body_utf8 longblob
+proc aggregate enum('NONE','GROUP')
drop table t115;
create procedure p108 () begin declare c cursor for select data_type
from information_schema.columns; open c; open c; end;//
@@ -743,6 +749,7 @@ Lock_tables_priv select,insert,update,references
Show_view_priv select,insert,update,references
Create_routine_priv select,insert,update,references
Alter_routine_priv select,insert,update,references
+Delete_history_priv select,insert,update,references
max_questions select,insert,update,references
max_connections select,insert,update,references
max_user_connections select,insert,update,references
@@ -770,11 +777,18 @@ table_name
v2
v3
select column_name from information_schema.columns
-where table_schema='test';
+where table_schema='test' and table_name='t4';
column_name
f1
+select column_name from information_schema.columns
+where table_schema='test' and table_name='v2';
+column_name
Warnings:
Warning 1356 View 'test.v2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
+select column_name from information_schema.columns
+where table_schema='test' and table_name='v3';
+column_name
+Warnings:
Warning 1356 View 'test.v3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
select index_name from information_schema.statistics where table_schema='test';
index_name
@@ -839,7 +853,8 @@ drop view a2, a1;
drop table t_crashme;
select table_schema,table_name, column_name from
information_schema.columns
-where data_type = 'longtext' and table_schema != 'performance_schema';
+where data_type = 'longtext' and table_schema != 'performance_schema'
+order by binary table_name, ordinal_position;
table_schema table_name column_name
information_schema ALL_PLUGINS PLUGIN_DESCRIPTION
information_schema COLUMNS COLUMN_DEFAULT
@@ -860,7 +875,8 @@ information_schema TRIGGERS ACTION_CONDITION
information_schema TRIGGERS ACTION_STATEMENT
information_schema VIEWS VIEW_DEFINITION
select table_name, column_name, data_type from information_schema.columns
-where data_type = 'datetime' and table_name not like 'innodb_%';
+where data_type = 'datetime' and table_name not like 'innodb_%'
+order by binary table_name, ordinal_position;
table_name column_name data_type
EVENTS EXECUTE_AT datetime
EVENTS STARTS datetime
@@ -1261,7 +1277,7 @@ drop table t1;
use mysql;
INSERT INTO `proc` VALUES ('test','','PROCEDURE','','SQL','CONTAINS_SQL',
'NO','DEFINER','','','BEGIN\r\n \r\nEND','root@%','2006-03-02 18:40:03',
-'2006-03-02 18:40:03','','','utf8','utf8_general_ci','utf8_general_ci','n/a');
+'2006-03-02 18:40:03','','','utf8','utf8_general_ci','utf8_general_ci','n/a', 'NONE');
select routine_name from information_schema.routines where ROUTINE_SCHEMA='test';
routine_name
@@ -1275,7 +1291,7 @@ sql security definer view v2 as select 1;
connect con16681,localhost,mysqltest_1,,test;
connection con16681;
select * from information_schema.views
-where table_name='v1' or table_name='v2';
+where table_name='v1' or table_name='v2' order by table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
def test v1 NONE YES root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
def test v2 select 1 AS `1` NONE NO mysqltest_1@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
@@ -1288,7 +1304,7 @@ set @a:= '.';
create table t1(f1 char(5));
create table t2(f1 char(5));
select concat(@a, table_name), @a, table_name
-from information_schema.tables where table_schema = 'test';
+from information_schema.tables where table_schema = 'test' order by table_name;
concat(@a, table_name) @a table_name
.t1 . t1
.t2 . t2
@@ -1375,7 +1391,8 @@ create table t2 (f1 int(11), f2 int(11));
select table_name from information_schema.tables
where table_schema = 'test' and table_name not in
(select table_name from information_schema.columns
-where table_schema = 'test' and column_name = 'f3');
+where table_schema = 'test' and column_name = 'f3')
+order by table_name;
table_name
t1
t2
@@ -1384,7 +1401,7 @@ create table t1(f1 int);
create view v1 as select f1+1 as a from t1;
create table t2 (f1 int, f2 int);
create view v2 as select f1+1 as a, f2 as b from t2;
-select table_name, is_updatable from information_schema.views;
+select table_name, is_updatable from information_schema.views order by table_name;
table_name is_updatable
v1 NO
v2 YES
@@ -1843,12 +1860,12 @@ rename table t2 to t3;
connection default;
# These statements should not be blocked by pending lock requests
select table_name, column_name, data_type from information_schema.columns
-where table_schema = 'test' and table_name in ('t1', 't2');
+where table_schema = 'test' and table_name in ('t1', 't2') order by table_name, column_name;
table_name column_name data_type
t1 i int
t2 j int
select table_name, auto_increment from information_schema.tables
-where table_schema = 'test' and table_name in ('t1', 't2');
+where table_schema = 'test' and table_name in ('t1', 't2') order by table_name;
table_name auto_increment
t1 NULL
t2 1
@@ -1997,7 +2014,7 @@ connect con12828477_2, localhost, root,,mysqltest;
# Wait while the above RENAME is blocked.
# Issue query to I_S which will open 't0' and get
# blocked on 't1' because of RENAME.
-select table_name, auto_increment from information_schema.tables where table_schema='mysqltest';
+select table_name, auto_increment from information_schema.tables where table_schema='mysqltest' and table_name='t0' union select table_name, auto_increment from information_schema.tables where table_schema='mysqltest' and table_name<>'t0' order by table_name;
connect con12828477_3, localhost, root,,mysqltest;
# Wait while the above SELECT is blocked.
#
diff --git a/mysql-test/r/information_schema2.result b/mysql-test/r/information_schema2.result
index 7e9bdd7088f..e23e81b885c 100644
--- a/mysql-test/r/information_schema2.result
+++ b/mysql-test/r/information_schema2.result
@@ -11,7 +11,7 @@ create table t2 (x int);
create table t3 (x int);
create table t4 AS select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE' ;
delete from t4 where table_name not in (select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE');
-select * from t4;
+select * from t4 order by table_name;
table_name
t1
t2
diff --git a/mysql-test/r/information_schema_all_engines.result b/mysql-test/r/information_schema_all_engines.result
index 126a6f4bccd..8a92f0226ff 100644
--- a/mysql-test/r/information_schema_all_engines.result
+++ b/mysql-test/r/information_schema_all_engines.result
@@ -454,4 +454,4 @@ Wildcard: inf_rmation_schema
SELECT table_schema, count(*) FROM information_schema.TABLES WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') GROUP BY TABLE_SCHEMA;
table_schema count(*)
information_schema 64
-mysql 30
+mysql 31
diff --git a/mysql-test/r/information_schema_db.result b/mysql-test/r/information_schema_db.result
index ca1ab45b98b..45ade65c502 100644
--- a/mysql-test/r/information_schema_db.result
+++ b/mysql-test/r/information_schema_db.result
@@ -72,14 +72,14 @@ create function f2 () returns int return (select max(i) from t2);
create view v2 as select f2();
drop table t2;
select table_name, table_type, table_comment from information_schema.tables
-where table_schema='test';
+where table_schema='test' order by table_name;
table_name table_type table_comment
t1 BASE TABLE
v1 VIEW VIEW
v2 VIEW VIEW
drop table t1;
select table_name, table_type, table_comment from information_schema.tables
-where table_schema='test';
+where table_schema='test' order by table_name;
table_name table_type table_comment
v1 VIEW VIEW
v2 VIEW VIEW
diff --git a/mysql-test/r/information_schema_inno.result b/mysql-test/r/information_schema_inno.result
index 7755d112f8e..d952e4372ca 100644
--- a/mysql-test/r/information_schema_inno.result
+++ b/mysql-test/r/information_schema_inno.result
@@ -10,18 +10,18 @@ TABLE_SCHEMA= "test";
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
def test PRIMARY test t1 PRIMARY KEY
def test PRIMARY test t2 PRIMARY KEY
+def test PRIMARY test t3 PRIMARY KEY
def test t2_ibfk_1 test t2 FOREIGN KEY
def test t2_ibfk_2 test t2 FOREIGN KEY
-def test PRIMARY test t3 PRIMARY KEY
def test t3_ibfk_1 test t3 FOREIGN KEY
select * from information_schema.KEY_COLUMN_USAGE where
TABLE_SCHEMA= "test";
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_SCHEMA REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
def test PRIMARY def test t1 id 1 NULL NULL NULL NULL
def test PRIMARY def test t2 id 1 NULL NULL NULL NULL
+def test PRIMARY def test t3 id 1 NULL NULL NULL NULL
def test t2_ibfk_1 def test t2 t1_id 1 1 test t1 id
def test t2_ibfk_2 def test t2 t1_id 1 1 test t1 id
-def test PRIMARY def test t3 id 1 NULL NULL NULL NULL
def test t3_ibfk_1 def test t3 id 1 1 test t2 t1_id
def test t3_ibfk_1 def test t3 t2_id 2 2 test t2 id
drop table t3, t2, t1;
@@ -72,11 +72,12 @@ constraint fk_t1_1 foreign key (idtype) references `t-2` (id)
use test;
select referenced_table_schema, referenced_table_name
from information_schema.key_column_usage
-where constraint_schema = 'db-1';
+where constraint_schema = 'db-1'
+order by referenced_table_schema, referenced_table_name;
referenced_table_schema referenced_table_name
NULL NULL
-db-1 t-2
NULL NULL
+db-1 t-2
drop database `db-1`;
create table t1(id int primary key) engine = Innodb;
create table t2(pid int, foreign key (pid) references t1(id)) engine = Innodb;
diff --git a/mysql-test/r/information_schema_part.result b/mysql-test/r/information_schema_part.result
index 081631a512f..4c0bb8908da 100644
--- a/mysql-test/r/information_schema_part.result
+++ b/mysql-test/r/information_schema_part.result
@@ -61,7 +61,7 @@ partition x2 values less than (5)
( subpartition x21 tablespace t1,
subpartition x22 tablespace t2)
);
-select * from information_schema.partitions where table_schema="test";
+select * from information_schema.partitions where table_schema="test" order by table_name, partition_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME
def test t1 x1 x11 1 1 RANGE HASH `a` `a` + `b` 1 0 0 0 # 1024 0 # # NULL NULL default t1
def test t1 x1 x12 1 2 RANGE HASH `a` `a` + `b` 1 0 0 0 # 1024 0 # # NULL NULL default t2
diff --git a/mysql-test/r/insert_update.result b/mysql-test/r/insert_update.result
index e8e6e16fe5a..68a1003ad85 100644
--- a/mysql-test/r/insert_update.result
+++ b/mysql-test/r/insert_update.result
@@ -49,23 +49,23 @@ a b c
5 0 30
8 9 60
INSERT t1 VALUES (2,1,11), (7,4,40) ON DUPLICATE KEY UPDATE c=c+VALUES(a);
-SELECT *, VALUES(a) FROM t1;
-a b c VALUES(a)
+SELECT *, VALUE(a) FROM t1;
+a b c VALUE(a)
1 2 10 NULL
3 4 127 NULL
5 0 30 NULL
8 9 60 NULL
2 1 11 NULL
-explain extended SELECT *, VALUES(a) FROM t1;
+explain extended SELECT *, VALUE(a) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 5 100.00
Warnings:
-Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c`,values(`test`.`t1`.`a`) AS `VALUES(a)` from `test`.`t1`
-explain extended select * from t1 where values(a);
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c`,value(`test`.`t1`.`a`) AS `VALUE(a)` from `test`.`t1`
+explain extended select * from t1 where value(a);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 5 100.00 Using where
Warnings:
-Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where values(`test`.`t1`.`a`)
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where value(`test`.`t1`.`a`)
DROP TABLE t1;
create table t1(a int primary key, b int);
insert into t1 values(1,1),(2,2),(3,3),(4,4),(5,5);
@@ -160,8 +160,8 @@ a b c
INSERT t1 SELECT a,b,c FROM t2 WHERE d=2 ON DUPLICATE KEY UPDATE c=c+VALUES(a);
ERROR 23000: Column 'c' in field list is ambiguous
INSERT t1 SELECT a,b,c FROM t2 WHERE d=2 ON DUPLICATE KEY UPDATE c=t1.c+VALUES(t1.a);
-SELECT *, VALUES(a) FROM t1;
-a b c VALUES(a)
+SELECT *, VALUE(a) FROM t1;
+a b c VALUE(a)
1 2 10 NULL
3 4 127 NULL
5 0 30 NULL
diff --git a/mysql-test/r/invisible_binlog.result b/mysql-test/r/invisible_binlog.result
new file mode 100644
index 00000000000..088bc858e28
--- /dev/null
+++ b/mysql-test/r/invisible_binlog.result
@@ -0,0 +1,65 @@
+include/master-slave.inc
+[connection master]
+connection master;
+create table t1(a int , b int invisible);
+insert into t1 values(1);
+insert into t1(a,b) values(2,2);
+select a,b from t1;
+a b
+1 NULL
+2 2
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b int(11) YES NULL INVISIBLE
+create table t2(a int , b int invisible default 5);
+insert into t2 values(1);
+insert into t2(a,b) values(2,2);
+select a,b from t2;
+a b
+1 5
+2 2
+desc t2;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b int(11) YES 5 INVISIBLE
+connection slave;
+select * from t1;
+a
+1
+2
+select a,b from t1;
+a b
+1 NULL
+2 2
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b int(11) YES NULL INVISIBLE
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) INVISIBLE DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+select * from t2;
+a
+1
+2
+select a,b from t2;
+a b
+1 5
+2 2
+desc t2;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b int(11) YES 5 INVISIBLE
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) INVISIBLE DEFAULT 5
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+connection master;
+drop table t1,t2;
+include/rpl_end.inc
diff --git a/mysql-test/r/invisible_field.result b/mysql-test/r/invisible_field.result
new file mode 100644
index 00000000000..c331f3fca88
--- /dev/null
+++ b/mysql-test/r/invisible_field.result
@@ -0,0 +1,553 @@
+FLUSH STATUS;
+create table t1(abc int primary key, xyz int invisible);
+SHOW STATUS LIKE 'Feature_invisible_columns';
+Variable_name Value
+Feature_invisible_columns 1
+desc t1;
+Field Type Null Key Default Extra
+abc int(11) NO PRI NULL
+xyz int(11) YES NULL INVISIBLE
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `abc` int(11) NOT NULL,
+ `xyz` int(11) INVISIBLE DEFAULT NULL,
+ PRIMARY KEY (`abc`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+select TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,EXTRA from INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA='test' and TABLE_NAME='t1';
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME EXTRA
+def test t1 abc
+def test t1 xyz INVISIBLE
+drop table t1;
+create table t1(a1 int invisible);
+ERROR 42000: A table must have at least 1 column
+create table t1(a1 blob,invisible(a1));
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(a1))' at line 1
+create table t1(a1 int primary key invisible ,a2 int unique invisible , a3 blob,a4 int not null invisible unique);
+ERROR HY000: Invisible column `a1` must have a default value
+create table t1(abc int not null invisible);
+ERROR 42000: A table must have at least 1 column
+MDEV-14849 CREATE + ALTER with user-invisible columns produce invalid table definition
+create or replace table t1 (pk int auto_increment primary key invisible, i int);
+alter table t1 modify pk int invisible;
+ERROR HY000: Invisible column `pk` must have a default value
+drop table t1;
+create table t1(a int invisible, b int);
+insert into t1 values(1);
+insert into t1(a) values(2);
+insert into t1(b) values(3);
+insert into t1(a,b) values(5,5);
+select * from t1;
+b
+1
+NULL
+3
+5
+select a,b from t1;
+a b
+NULL 1
+2 NULL
+NULL 3
+5 5
+delete from t1;
+insert into t1 values(1),(2),(3),(4);
+select * from t1;
+b
+1
+2
+3
+4
+select a from t1;
+a
+NULL
+NULL
+NULL
+NULL
+drop table t1;
+#more complex case of invisible
+create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b int(11) YES NULL INVISIBLE
+c int(11) NO PRI NULL auto_increment, INVISIBLE
+d blob YES NULL
+e int(11) YES UNI NULL
+f int(11) YES NULL
+insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
+select * from t1;
+a d e f
+1 d blob 1 1
+1 d blob 11 1
+1 d blob 2 1
+1 d blob 3 1
+1 d blob 41 1
+select a,b,c,d,e,f from t1;
+a b c d e f
+1 NULL 1 d blob 1 1
+1 NULL 2 d blob 11 1
+1 NULL 3 d blob 2 1
+1 NULL 4 d blob 3 1
+1 NULL 5 d blob 41 1
+drop table t1;
+#more complex case of invisible with sql_mode=NO_AUTO_VALUE_ON_ZERO
+set sql_mode='NO_AUTO_VALUE_ON_ZERO';
+create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b int(11) YES NULL INVISIBLE
+c int(11) NO PRI NULL auto_increment, INVISIBLE
+d blob YES NULL
+e int(11) YES UNI NULL
+f int(11) YES NULL
+insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
+select * from t1;
+a d e f
+1 d blob 1 1
+1 d blob 11 1
+1 d blob 2 1
+1 d blob 3 1
+1 d blob 41 1
+select a,b,c,d,e,f from t1;
+a b c d e f
+1 NULL 1 d blob 1 1
+1 NULL 2 d blob 11 1
+1 NULL 3 d blob 2 1
+1 NULL 4 d blob 3 1
+1 NULL 5 d blob 41 1
+drop table t1;
+set sql_mode='';
+create table sdsdsd(a int , b int, invisible(a,b));
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(a,b))' at line 1
+create table t1(a int,abc int as (a mod 3) virtual invisible);
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+abc int(11) YES NULL VIRTUAL GENERATED, INVISIBLE
+insert into t1 values(1,default);
+ERROR 21S01: Column count doesn't match value count at row 1
+insert into t1 values(1),(22),(233);
+select * from t1;
+a
+1
+22
+233
+select a,abc from t1;
+a abc
+1 1
+22 1
+233 2
+drop table t1;
+create table t1(abc int primary key invisible auto_increment, a int);
+desc t1;
+Field Type Null Key Default Extra
+abc int(11) NO PRI NULL auto_increment, INVISIBLE
+a int(11) YES NULL
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `abc` int(11) NOT NULL INVISIBLE AUTO_INCREMENT,
+ `a` int(11) DEFAULT NULL,
+ PRIMARY KEY (`abc`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t1 values(3);
+select * from t1;
+a
+1
+2
+3
+select abc,a from t1;
+abc a
+1 1
+2 2
+3 3
+delete from t1;
+insert into t1 values(1),(2),(3),(4),(6);
+select abc,a from t1;
+abc a
+4 1
+5 2
+6 3
+7 4
+8 6
+drop table t1;
+create table t1(abc int);
+alter table t1 change abc ss int invisible;
+ERROR 42000: A table must have at least 1 column
+alter table t1 add column xyz int;
+alter table t1 modify column abc int ;
+desc t1;
+Field Type Null Key Default Extra
+abc int(11) YES NULL
+xyz int(11) YES NULL
+insert into t1 values(22);
+ERROR 21S01: Column count doesn't match value count at row 1
+alter table t1 modify column abc int invisible;
+desc t1;
+Field Type Null Key Default Extra
+abc int(11) YES NULL INVISIBLE
+xyz int(11) YES NULL
+insert into t1 values(12);
+drop table t1;
+#some test on copy table structure with table data;
+#table with invisible fields and unique keys;
+create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b int(11) YES NULL INVISIBLE
+c int(11) NO PRI NULL auto_increment, INVISIBLE
+d blob YES NULL
+e int(11) YES UNI NULL
+f int(11) YES NULL
+insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
+select * from t1;
+a d e f
+1 d blob 1 1
+1 d blob 11 1
+1 d blob 2 1
+1 d blob 3 1
+1 d blob 41 1
+select a,b,c,d,e,f from t1;
+a b c d e f
+1 NULL 1 d blob 1 1
+1 NULL 2 d blob 11 1
+1 NULL 3 d blob 2 1
+1 NULL 4 d blob 3 1
+1 NULL 5 d blob 41 1
+#this won't copy invisible fields and keys;
+create table t2 as select * from t1;
+desc t2;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+d blob YES NULL
+e int(11) YES NULL
+f int(11) YES NULL
+select * from t2;
+a d e f
+1 d blob 1 1
+1 d blob 11 1
+1 d blob 2 1
+1 d blob 3 1
+1 d blob 41 1
+select a,b,c,d,e,f from t2;
+ERROR 42S22: Unknown column 'b' in 'field list'
+drop table t2;
+#now this will copy invisible fields
+create table t2 as select a,b,c,d,e,f from t1;
+desc t2;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b int(11) YES NULL
+c int(11) NO 0
+d blob YES NULL
+e int(11) YES NULL
+f int(11) YES NULL
+select * from t2;
+a b c d e f
+1 NULL 1 d blob 1 1
+1 NULL 2 d blob 11 1
+1 NULL 3 d blob 2 1
+1 NULL 4 d blob 3 1
+1 NULL 5 d blob 41 1
+select a,b,c,d,e,f from t2;
+a b c d e f
+1 NULL 1 d blob 1 1
+1 NULL 2 d blob 11 1
+1 NULL 3 d blob 2 1
+1 NULL 4 d blob 3 1
+1 NULL 5 d blob 41 1
+drop table t2,t1;
+#some test related to copy of data from one table to another;
+create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
+insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
+select a,b,c,d,e,f from t1;
+a b c d e f
+1 NULL 1 d blob 1 1
+1 NULL 2 d blob 11 1
+1 NULL 3 d blob 2 1
+1 NULL 4 d blob 3 1
+1 NULL 5 d blob 41 1
+create table t2(a int , b int invisible , c int invisible , d blob , e int unique, f int);
+insert into t2 select * from t1;
+select a,b,c,d,e,f from t2;
+a b c d e f
+1 NULL NULL d blob 1 1
+1 NULL NULL d blob 11 1
+1 NULL NULL d blob 2 1
+1 NULL NULL d blob 3 1
+1 NULL NULL d blob 41 1
+truncate t2;
+insert into t2 (a,b,c,d,e,f) select a,b,c,d,e,f from t1;
+select a,b,c,d,e,f from t2;
+a b c d e f
+1 NULL 1 d blob 1 1
+1 NULL 2 d blob 11 1
+1 NULL 3 d blob 2 1
+1 NULL 4 d blob 3 1
+1 NULL 5 d blob 41 1
+truncate t2;
+drop table t1,t2;
+#some test related to creating view on table with invisible column;
+create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
+insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
+create view v as select * from t1;
+desc v;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+d blob YES NULL
+e int(11) YES NULL
+f int(11) YES NULL
+select * from v;
+a d e f
+1 d blob 1 1
+1 d blob 11 1
+1 d blob 2 1
+1 d blob 3 1
+1 d blob 41 1
+#v does not have invisible column;
+select a,b,c,d,e,f from v;
+ERROR 42S22: Unknown column 'b' in 'field list'
+insert into v values(1,21,32,4);
+select * from v;
+a d e f
+1 d blob 1 1
+1 d blob 11 1
+1 d blob 2 1
+1 d blob 3 1
+1 d blob 41 1
+1 21 32 4
+insert into v(a,b,c,d,e,f) values(1,12,3,4,5,6);
+ERROR 42S22: Unknown column 'b' in 'field list'
+drop view v;
+create view v as select a,b,c,d,e,f from t1;
+desc v;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b int(11) YES NULL
+c int(11) NO 0
+d blob YES NULL
+e int(11) YES NULL
+f int(11) YES NULL
+select * from v;
+a b c d e f
+1 NULL 1 d blob 1 1
+1 NULL 2 d blob 11 1
+1 NULL 3 d blob 2 1
+1 NULL 4 d blob 3 1
+1 NULL 5 d blob 41 1
+1 NULL 6 21 32 4
+#v does have invisible column but they aren't invisible anymore.
+select a,b,c,d,e,f from v;
+a b c d e f
+1 NULL 1 d blob 1 1
+1 NULL 2 d blob 11 1
+1 NULL 3 d blob 2 1
+1 NULL 4 d blob 3 1
+1 NULL 5 d blob 41 1
+1 NULL 6 21 32 4
+insert into v values(1,26,33,4,45,66);
+select a,b,c,d,e,f from v;
+a b c d e f
+1 NULL 1 d blob 1 1
+1 NULL 2 d blob 11 1
+1 NULL 3 d blob 2 1
+1 NULL 4 d blob 3 1
+1 NULL 5 d blob 41 1
+1 NULL 6 21 32 4
+1 26 33 4 45 66
+insert into v(a,b,c,d,e,f) values(1,32,31,41,5,6);
+select a,b,c,d,e,f from v;
+a b c d e f
+1 NULL 1 d blob 1 1
+1 NULL 2 d blob 11 1
+1 NULL 3 d blob 2 1
+1 NULL 4 d blob 3 1
+1 NULL 5 d blob 41 1
+1 NULL 6 21 32 4
+1 26 33 4 45 66
+1 32 31 41 5 6
+drop view v;
+drop table t1;
+#now invisible column in where and some join query
+create table t1 (a int unique , b int invisible unique, c int unique invisible);
+insert into t1(a,b,c) values(1,1,1);
+insert into t1(a,b,c) values(2,2,2);
+insert into t1(a,b,c) values(3,3,3);
+insert into t1(a,b,c) values(4,4,4);
+insert into t1(a,b,c) values(21,21,26);
+insert into t1(a,b,c) values(31,31,35);
+insert into t1(a,b,c) values(41,41,45);
+insert into t1(a,b,c) values(22,22,24);
+insert into t1(a,b,c) values(32,32,33);
+insert into t1(a,b,c) values(42,42,43);
+explain select * from t1 where b=3;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 const b b 5 const 1
+select * from t1 where b=3;
+a
+3
+explain select * from t1 where c=3;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 const c c 5 const 1
+select * from t1 where c=3;
+a
+3
+create table t2 as select a,b,c from t1;
+desc t2;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+b int(11) YES NULL
+c int(11) YES NULL
+explain select * from t1,t2 where t1.b = t2.c and t1.c = t2.b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 ALL NULL NULL NULL NULL 10
+1 SIMPLE t1 ALL b,c NULL NULL NULL 10 Using where; Using join buffer (flat, BNL join)
+select * from t1,t2 where t1.b = t2.c and t1.c = t2.b;
+a a b c
+1 1 1 1
+2 2 2 2
+3 3 3 3
+4 4 4 4
+drop table t1,t2;
+#Unhide invisible columns
+create table t1 (a int primary key, b int invisible, c int invisible unique);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) NOT NULL,
+ `b` int(11) INVISIBLE DEFAULT NULL,
+ `c` int(11) INVISIBLE DEFAULT NULL,
+ PRIMARY KEY (`a`),
+ UNIQUE KEY `c` (`c`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+desc t1;
+Field Type Null Key Default Extra
+a int(11) NO PRI NULL
+b int(11) YES NULL INVISIBLE
+c int(11) YES UNI NULL INVISIBLE
+alter table t1 modify column b int;
+desc t1;
+Field Type Null Key Default Extra
+a int(11) NO PRI NULL
+b int(11) YES NULL
+c int(11) YES UNI NULL INVISIBLE
+alter table t1 change column c d int;
+desc t1;
+Field Type Null Key Default Extra
+a int(11) NO PRI NULL
+b int(11) YES NULL
+d int(11) YES UNI NULL
+drop table t1;
+SHOW STATUS LIKE 'Feature_invisible_columns';
+Variable_name Value
+Feature_invisible_columns 52
+#invisible is non reserved
+create table t1(a int unique , invisible int invisible, c int );
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES UNI NULL
+invisible int(11) YES NULL INVISIBLE
+c int(11) YES NULL
+alter table t1 change column invisible hid int invisible;
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES UNI NULL
+hid int(11) YES NULL INVISIBLE
+c int(11) YES NULL
+drop table t1;
+CREATE TABLE t1 (b int);
+INSERT t1 values(1);
+INSERT t1 values(2);
+INSERT t1 values(3);
+INSERT t1 values(4);
+INSERT t1 values(5);
+CREATE TABLE t2 (a int invisible) SELECT * FROM t1;
+select * from t2 order by b;
+b
+1
+2
+3
+4
+5
+select a,b from t2 order by b;
+a b
+NULL 1
+NULL 2
+NULL 3
+NULL 4
+NULL 5
+CREATE TABLE t3 (b int, a int invisible) SELECT * FROM t1;
+select * from t3 order by b;
+b
+1
+2
+3
+4
+5
+select a,b from t3 order by b;
+a b
+NULL 1
+NULL 2
+NULL 3
+NULL 4
+NULL 5
+CREATE TABLE t4 (b int invisible) SELECT * FROM t1;
+ERROR 42000: A table must have at least 1 column
+CREATE TABLE t5 (a int invisible) SELECT b as a FROM t1;
+ERROR 42000: A table must have at least 1 column
+drop table t1,t2,t3;
+create table t1 (a int , b int invisible default 3, c int , d int invisible default 6);
+CREATE PROCEDURE
+insert_t1(a int, b int)
+MODIFIES SQL DATA
+insert into t1 values(a,b);
+//
+call insert_t1(1,1);
+call insert_t1(2,2);
+select * from t1 order by a;
+a c
+1 1
+2 2
+select a,b,c,d from t1 order by a;
+a b c d
+1 3 1 6
+2 3 2 6
+DROP PROCEDURE insert_t1;
+delete from t1;
+prepare insert_1 from "insert into t1 values(@a,@c)";
+prepare insert_2 from "insert into t1(a,b,c) values(@a,@b,@c)";
+set @a=1, @c=1;
+execute insert_1;
+set @a=2,@b=2, @c=2;
+execute insert_2;
+select a,b,c,d from t1 order by a;
+a b c d
+1 3 1 6
+2 2 2 6
+drop table t1;
+create table t1(a int default 5 invisible, b int);
+create table t2(a int default (b+11) invisible, b int);
+insert into t1 values(1);
+select a,b from t1;
+a b
+5 1
+insert into t2 values(1);
+select a,b from t2;
+a b
+12 1
+drop table t1,t2;
+create table t1 (a int invisible, b int, c int);
+create table t2 (a int, b int, d int);
+insert t1 (a,b,c) values (0,2,3), (10, 20, 30);
+insert t2 (a,b,d) values (1,2,4), (10, 30, 40);
+select * from t1 join t2 using (a);
+b c b d
+20 30 30 40
+select * from t1 natural join t2;
+b c a d
+2 3 1 4
+drop table t1, t2;
diff --git a/mysql-test/r/invisible_field_debug.result b/mysql-test/r/invisible_field_debug.result
new file mode 100644
index 00000000000..4c4ebffbdfc
--- /dev/null
+++ b/mysql-test/r/invisible_field_debug.result
@@ -0,0 +1,371 @@
+set @old_debug= @@debug_dbug;
+create table t_tmp(a int, b int);
+set debug_dbug= "+d,test_pseudo_invisible";
+create table t1(a int);
+set debug_dbug=@old_debug;
+insert into t1 values(1);
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+select a , invisible from t1;
+a invisible
+1 9
+insert into t1(a, invisible) values(99,99);
+ERROR 42S22: Unknown column 'invisible' in 'field list'
+insert into t1(invisible) values(99);
+ERROR 42S22: Unknown column 'invisible' in 'field list'
+insert into t_tmp select a, invisible from t1;
+insert into t1 select * from t_tmp;
+ERROR 21S01: Column count doesn't match value count at row 1
+insert into t1(a,invisible) select * from t_tmp;
+ERROR 42S22: Unknown column 'invisible' in 'field list'
+select a , invisible from t1;
+a invisible
+1 9
+insert into t1 values (5), (invisible+1);
+select a , invisible from t1;
+a invisible
+1 9
+5 9
+10 9
+delete from t1 where a > 1;
+update t1 set a = invisible where a=1;
+select a , invisible from t1;
+a invisible
+9 9
+update t1 set a = (select invisible+100 from t1 limit 1) where a=(select a from t1 limit 1);
+select a , invisible from t1;
+a invisible
+109 9
+update t1 set invisible = 23 where a=(select a from t1 limit 1);
+ERROR 42S22: Unknown column 'invisible' in 'field list'
+update t1 set invisible = 101 where a=(select a from t1 limit 1);
+ERROR 42S22: Unknown column 'invisible' in 'field list'
+update t1 set invisible = (select invisible+100 from t1 limit 1) where a=(select invisible from t1 limit 1);
+ERROR 42S22: Unknown column 'invisible' in 'field list'
+select a , invisible from t1;
+a invisible
+109 9
+set @a=12;
+update t1 set invisible = (select @a from dual) where a=(select a from t1 limit 1);
+ERROR 42S22: Unknown column 'invisible' in 'field list'
+select a , invisible from t1;
+a invisible
+109 9
+update t1 set invisible = (select invisible+100 from t1 limit 1) where a=(select a from t1 limit 1);
+ERROR 42S22: Unknown column 'invisible' in 'field list'
+select a , invisible from t1;
+a invisible
+109 9
+set @a=(select invisible from t1 limit 1);
+select @a from dual;
+@a
+9
+alter table t1 add constraint a check (invisible > 2);
+ERROR 42S22: Unknown column 'invisible' in 'CHECK'
+set debug_dbug= "+d,test_pseudo_invisible";
+create table t2(a int, b int as (invisible +2) virtual);
+ERROR 42S22: Unknown column 'invisible' in 'GENERATED ALWAYS AS'
+create table t2(a int , b int);
+insert into t2 values(2,2);
+insert into t2 select a, invisible from t1;
+set debug_dbug=@old_debug;
+select * from t1;
+a
+109
+select invisible ,a from t1;
+invisible a
+9 109
+drop table t1,t2,t_tmp;
+set debug_dbug= "+d,test_completely_invisible";
+create table t1(a int);
+set debug_dbug=@old_debug;
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+insert into t1 values(1);
+select * from t1;
+a
+1
+select invisible ,a from t1;
+ERROR 42S22: Unknown column 'invisible' in 'field list'
+set debug_dbug= "+d,test_completely_invisible";
+select invisible ,a from t1;
+invisible a
+9 1
+set debug_dbug=@old_debug;
+create table t2 (invisible int);
+select * from t1 join t2 using (invisible);
+ERROR 42S22: Unknown column 'invisible' in 'from clause'
+select * from t2 join t1 using (invisible);
+ERROR 42S22: Unknown column 'invisible' in 'from clause'
+insert t2 values (8),(9);
+select * from t1 natural join t2;
+a invisible
+1 8
+1 9
+select * from t2 natural join t1;
+invisible a
+8 1
+9 1
+drop table t1, t2;
+set debug_dbug= "+d,test_pseudo_invisible";
+create table t1(a int);
+set debug_dbug=@old_debug;
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+insert into t1 values(1);
+select * from t1;
+a
+1
+select invisible ,a from t1;
+invisible a
+9 1
+ALTER table t1 change invisible b int;
+ERROR 42S22: Unknown column 'invisible' in 't1'
+select * from t1;
+a
+1
+select invisible ,a from t1;
+invisible a
+9 1
+ALTER table t1 modify invisible char;
+ERROR 42S22: Unknown column 'invisible' in 't1'
+select * from t1;
+a
+1
+select invisible ,a from t1;
+invisible a
+9 1
+ALTER table t1 drop invisible;
+ERROR 42000: Can't DROP COLUMN `invisible`; check that it exists
+select * from t1;
+a
+1
+select invisible ,a from t1;
+invisible a
+9 1
+ALTER table t1 add invisible int;
+ERROR 42S21: Duplicate column name 'invisible'
+select * from t1;
+a
+1
+select invisible ,a from t1;
+invisible a
+9 1
+ALTER table t1 add invisible2 int default 2;
+select * from t1;
+a invisible2
+1 2
+select invisible ,a from t1;
+invisible a
+9 1
+create trigger trg before insert on t1 for each row set new.invisible=1;
+ERROR 42S22: Unknown column 'invisible' in 'NEW'
+create trigger trg before insert on t1 for each row set @a:=new.invisible;
+drop table t1;
+set debug_dbug= "+d,test_completely_invisible";
+create table t1(a int);
+set debug_dbug=@old_debug;
+create trigger trg before insert on t1 for each row set new.invisible=1;
+ERROR 42S22: Unknown column 'invisible' in 'NEW'
+create trigger trg before insert on t1 for each row set @a:=new.invisible;
+ERROR 42S22: Unknown column 'invisible' in 'NEW'
+set debug_dbug= "+d,test_completely_invisible";
+desc t1;
+Field Type Null Key Default Extra
+a int(11) YES NULL
+insert into t1 values(1);
+select * from t1;
+a
+1
+select invisible ,a from t1;
+invisible a
+9 1
+ALTER table t1 change invisible b int;
+ERROR 42S22: Unknown column 'invisible' in 't1'
+select * from t1;
+a
+1
+select invisible ,a from t1;
+invisible a
+9 1
+ALTER table t1 modify invisible char;
+ERROR 42S22: Unknown column 'invisible' in 't1'
+select * from t1;
+a
+1
+select invisible ,a from t1;
+invisible a
+9 1
+ALTER table t1 drop invisible;
+ERROR 42000: Can't DROP COLUMN `invisible`; check that it exists
+select * from t1;
+a
+1
+select invisible ,a from t1;
+invisible a
+9 1
+ALTER table t1 add invisible int;
+select * from t1;
+a invisible
+1 NULL
+select invisible1, invisible ,a from t1;
+invisible1 invisible a
+9 NULL 1
+ALTER table t1 add hid int default 2;
+select * from t1;
+a invisible hid
+1 NULL 2
+select invisible ,a from t1;
+invisible a
+NULL 1
+drop table t1;
+set debug_dbug=@old_debug;
+Create table t1( a int default(99) invisible, b int);
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t1 values(3);
+insert into t1 values(4);
+select * from t1 order by b;
+b
+1
+2
+3
+4
+alter table t1 add index(a);
+alter table t1 add index(a,b);
+show index from t1;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
+t1 1 a 1 a A NULL NULL NULL YES BTREE
+t1 1 a_2 1 a A NULL NULL NULL YES BTREE
+t1 1 a_2 2 b A NULL NULL NULL YES BTREE
+drop table t1;
+set debug_dbug= "+d,test_pseudo_invisible";
+Create table t1( a int default(99) invisible, b int);
+Create table t2( a int default(99) invisible, b int, unique(invisible));
+ERROR 42000: Key column 'invisible' doesn't exist in table
+set debug_dbug=@old_debug;
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t1 values(3);
+insert into t1 values(4);
+select * from t1 order by b;
+b
+1
+2
+3
+4
+select invisible, a, b from t1 order by b;
+invisible a b
+9 99 1
+9 99 2
+9 99 3
+9 99 4
+alter table t1 add index(invisible);
+ERROR 42000: Key column 'invisible' doesn't exist in table
+alter table t1 add index(b,invisible);
+ERROR 42000: Key column 'invisible' doesn't exist in table
+show index from t1;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
+drop table t1;
+set debug_dbug= "+d,test_completely_invisible";
+Create table t1( a int default(99) invisible, b int);
+Create table t2( a int default(99) invisible, b int, unique(invisible));
+ERROR 42000: Key column 'invisible' doesn't exist in table
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t1 values(3);
+insert into t1 values(4);
+select * from t1 order by b;
+b
+1
+2
+3
+4
+select invisible, a, b from t1 order by b;
+invisible a b
+9 99 1
+9 99 2
+9 99 3
+9 99 4
+set debug_dbug=@old_debug;
+alter table t1 add index(invisible);
+ERROR 42000: Key column 'invisible' doesn't exist in table
+alter table t1 add index(b,invisible);
+ERROR 42000: Key column 'invisible' doesn't exist in table
+show index from t1;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
+drop table t1;
+set debug_dbug= "+d,test_completely_invisible,test_invisible_index";
+Create table t1( a int default(99) , b int,c int, index(b));
+set debug_dbug=@old_debug;
+Show index from t1;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
+t1 1 b 1 b A NULL NULL NULL YES BTREE
+select * from INFORMATION_SCHEMA.STATISTICS where TABLE_SCHEMA ='test' and table_name='t1';
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT INDEX_COMMENT
+def test t1 1 test b 1 b A NULL NULL NULL YES BTREE
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT 99,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ KEY `b` (`b`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+insert into t1 values(1,1,1);
+insert into t1 values(2,2,2);
+insert into t1 values(3,3,3);
+insert into t1 values(4,4,4);
+set debug_dbug= "+d,test_completely_invisible,test_invisible_index";
+select invisible, a ,b from t1 order by b;
+invisible a b
+9 1 1
+9 2 2
+9 3 3
+9 4 4
+explain select * from t1 where invisible =9;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref invisible invisible 5 const 3
+alter table t1 add x int default 3;
+select invisible, a ,b from t1;
+invisible a b
+9 1 1
+9 2 2
+9 3 3
+9 4 4
+set debug_dbug=@old_debug;
+Show index from t1;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
+t1 1 b 1 b A NULL NULL NULL YES BTREE
+create index a1 on t1(invisible);
+ERROR 42000: Key column 'invisible' doesn't exist in table
+set debug_dbug= "+d,test_completely_invisible,test_invisible_index";
+drop index invisible on t1;
+ERROR 42000: Can't DROP INDEX `invisible`; check that it exists
+explain select * from t1 where invisible =9;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref invisible invisible 5 const 3
+create index invisible on t1(c);
+explain select * from t1 where invisible =9;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref invisible_2 invisible_2 5 const 3
+show indexes in t1;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
+t1 1 b 1 b A NULL NULL NULL YES BTREE
+t1 1 invisible 1 c A NULL NULL NULL YES BTREE
+t1 1 invisible_2 1 invisible A NULL NULL NULL YES BTREE
+drop table t1;
+set @old_debug= @@debug_dbug;
diff --git a/mysql-test/r/join.result b/mysql-test/r/join.result
index df48dbba605..046674d5569 100644
--- a/mysql-test/r/join.result
+++ b/mysql-test/r/join.result
@@ -762,6 +762,7 @@ user User def mysql 0 mysql PRIMARY 2 A NULL NULL BTREE def mysql '' NO char 8
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
drop table t1;
drop table t2;
drop table t3;
diff --git a/mysql-test/r/join_nested.result b/mysql-test/r/join_nested.result
index 917a31e2a79..708c72fffb5 100644
--- a/mysql-test/r/join_nested.result
+++ b/mysql-test/r/join_nested.result
@@ -1321,7 +1321,7 @@ c11 c21
5 NULL
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON c11=c21;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t2 system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON c21=c31) ON c11=c21;
c11 c21 c31
diff --git a/mysql-test/r/join_nested_jcl6.result b/mysql-test/r/join_nested_jcl6.result
index 1ffd94547cc..eb59531b7d2 100644
--- a/mysql-test/r/join_nested_jcl6.result
+++ b/mysql-test/r/join_nested_jcl6.result
@@ -1332,7 +1332,7 @@ c11 c21
5 NULL
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON c11=c21;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t2 system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON c21=c31) ON c11=c21;
c11 c21 c31
diff --git a/mysql-test/r/limit_rows_examined.result b/mysql-test/r/limit_rows_examined.result
index c94599235b1..7d1ca948c8b 100644
--- a/mysql-test/r/limit_rows_examined.result
+++ b/mysql-test/r/limit_rows_examined.result
@@ -98,11 +98,11 @@ create table t0 (c0 int);
explain
select * from t0 LIMIT ROWS EXAMINED 0;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t0 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t0 system NULL NULL NULL NULL 0 Const row not found
explain
select * from t0 LIMIT ROWS EXAMINED 1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t0 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t0 system NULL NULL NULL NULL 0 Const row not found
select * from t0 LIMIT ROWS EXAMINED 1;
c0
drop table t0;
@@ -592,7 +592,7 @@ create table t3_empty like t3;
explain
select max(c1) from t3_empty LIMIT ROWS EXAMINED 0;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t3_empty system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t3_empty system NULL NULL NULL NULL 0 Const row not found
select max(c1) from t3_empty LIMIT ROWS EXAMINED 0;
max(c1)
NULL
diff --git a/mysql-test/r/log_slow.result b/mysql-test/r/log_slow.result
index 510bb929d84..59149633b99 100644
--- a/mysql-test/r/log_slow.result
+++ b/mysql-test/r/log_slow.result
@@ -1,6 +1,6 @@
select @@log_slow_filter;
@@log_slow_filter
-admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
select @@log_slow_rate_limit;
@@log_slow_rate_limit
1
@@ -10,7 +10,8 @@ select @@log_slow_verbosity;
show variables like "log_slow%";
Variable_name Value
log_slow_admin_statements ON
-log_slow_filter admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+log_slow_disabled_statements sp
+log_slow_filter admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
log_slow_rate_limit 1
log_slow_slave_statements ON
log_slow_verbosity
diff --git a/mysql-test/r/log_tables_upgrade.result b/mysql-test/r/log_tables_upgrade.result
index a56d067c2cd..8f822d56020 100644
--- a/mysql-test/r/log_tables_upgrade.result
+++ b/mysql-test/r/log_tables_upgrade.result
@@ -42,6 +42,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
diff --git a/mysql-test/r/lowercase_table_grant.result b/mysql-test/r/lowercase_table_grant.result
index 009965c0c8e..9ba542ec22d 100644
--- a/mysql-test/r/lowercase_table_grant.result
+++ b/mysql-test/r/lowercase_table_grant.result
@@ -7,8 +7,8 @@ Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
select * from db where user = 'mysqltest_1';
-Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv
-localhost mysqltest mysqltest_1 Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y
+Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv Delete_history_priv
+localhost mysqltest mysqltest_1 Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y Y
update db set db = 'MYSQLtest' where db = 'mysqltest' and user = 'mysqltest_1' and host = 'localhost';
flush privileges;
show grants for mysqltest_1@localhost;
@@ -16,8 +16,8 @@ Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
select * from db where user = 'mysqltest_1';
-Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv
-localhost MYSQLtest mysqltest_1 Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y
+Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv Delete_history_priv
+localhost MYSQLtest mysqltest_1 Y Y Y Y Y Y N Y Y Y Y Y Y Y Y Y Y Y Y Y
delete from db where db = 'MYSQLtest' and user = 'mysqltest_1' and host = 'localhost';
flush privileges;
drop user mysqltest_1@localhost;
diff --git a/mysql-test/r/myisam_explain_non_select_all.result b/mysql-test/r/myisam_explain_non_select_all.result
index 12c5e627f7a..09e662f5d6a 100644
--- a/mysql-test/r/myisam_explain_non_select_all.result
+++ b/mysql-test/r/myisam_explain_non_select_all.result
@@ -2184,13 +2184,13 @@ INSERT INTO t1 VALUES (1, 1, 10), (2, 2, 20);
#
EXPLAIN UPDATE t1 LEFT JOIN t2 ON t1.c1 = t2.c1 SET t2.c2 = 10;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t2 system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
FLUSH STATUS;
FLUSH TABLES;
EXPLAIN EXTENDED UPDATE t1 LEFT JOIN t2 ON t1.c1 = t2.c1 SET t2.c2 = 10;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t2 system NULL NULL NULL NULL 0 0.00 Const row not found
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
# Status of EXPLAIN EXTENDED query
Variable_name Value
@@ -2199,7 +2199,7 @@ FLUSH STATUS;
FLUSH TABLES;
EXPLAIN EXTENDED SELECT * FROM t1 LEFT JOIN t2 ON t1.c1 = t2.c1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t2 system NULL NULL NULL NULL 0 0.00 Const row not found
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
Warnings:
Note 1003 select `test`.`t1`.`c1` AS `c1`,`test`.`t1`.`c2` AS `c2`,`test`.`t1`.`c3` AS `c3`,NULL AS `c1`,NULL AS `c2` from `test`.`t1`
@@ -2219,13 +2219,13 @@ Handler_read_rnd_next 4
#
EXPLAIN UPDATE t1 LEFT JOIN t2 ON t1.c1 = t2.c1 SET t2.c2 = 10 WHERE t1.c3 = 10;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t2 system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
FLUSH STATUS;
FLUSH TABLES;
EXPLAIN EXTENDED UPDATE t1 LEFT JOIN t2 ON t1.c1 = t2.c1 SET t2.c2 = 10 WHERE t1.c3 = 10;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t2 system NULL NULL NULL NULL 0 0.00 Const row not found
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
# Status of EXPLAIN EXTENDED query
Variable_name Value
@@ -2234,7 +2234,7 @@ FLUSH STATUS;
FLUSH TABLES;
EXPLAIN EXTENDED SELECT * FROM t1 LEFT JOIN t2 ON t1.c1 = t2.c1 WHERE t1.c3 = 10;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t2 system NULL NULL NULL NULL 0 0.00 Const row not found
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`c1` AS `c1`,`test`.`t1`.`c2` AS `c2`,`test`.`t1`.`c3` AS `c3`,NULL AS `c1`,NULL AS `c2` from `test`.`t1` where `test`.`t1`.`c3` = 10
@@ -2571,12 +2571,12 @@ CREATE VIEW v1 (x) AS SELECT b FROM t2;
#
EXPLAIN INSERT INTO v1 SELECT * FROM t1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
FLUSH STATUS;
FLUSH TABLES;
EXPLAIN EXTENDED INSERT INTO v1 SELECT * FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
# Status of EXPLAIN EXTENDED query
Variable_name Value
Handler_read_rnd_next 1
@@ -2584,7 +2584,7 @@ FLUSH STATUS;
FLUSH TABLES;
EXPLAIN EXTENDED SELECT * FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select NULL AS `a` from `test`.`t1`
# Status of EXPLAIN EXTENDED "equivalent" SELECT query execution
@@ -2781,7 +2781,7 @@ CREATE TABLE t2 (id INT);
INSERT INTO t1 VALUES (1), (2);
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 USING(id) GROUP BY t1.id;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 system NULL NULL NULL NULL 0 const row not found; Using temporary; Using filesort
+1 SIMPLE t2 system NULL NULL NULL NULL 0 Const row not found; Using temporary; Using filesort
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
DROP TABLE t1,t2;
#74
@@ -2879,7 +2879,7 @@ CALL p16();
DROP PROCEDURE p16;
CALL p15();
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
DROP PROCEDURE p15;
CALL p14();
DROP PROCEDURE p14;
diff --git a/mysql-test/r/mysql_client_test.result b/mysql-test/r/mysql_client_test.result
index 4ad07b20ab5..83ef8d442b3 100644
--- a/mysql-test/r/mysql_client_test.result
+++ b/mysql-test/r/mysql_client_test.result
@@ -1,6 +1,7 @@
SET @old_general_log= @@global.general_log;
SET @old_slow_query_log= @@global.slow_query_log;
call mtr.add_suppression(" Error reading file './client_test_db/test_frm_bug.frm'");
+call mtr.add_suppression(" IP address .* could not be resolved");
ok
# cat MYSQL_TMP_DIR/test_wl4435.out.log
diff --git a/mysql-test/r/mysql_client_test_comp.result b/mysql-test/r/mysql_client_test_comp.result
index b9cac467b92..096331db4f1 100644
--- a/mysql-test/r/mysql_client_test_comp.result
+++ b/mysql-test/r/mysql_client_test_comp.result
@@ -1,4 +1,5 @@
SET @old_slow_query_log= @@global.slow_query_log;
call mtr.add_suppression(" Error reading file './client_test_db/test_frm_bug.frm'");
+call mtr.add_suppression(" IP address .* could not be resolved");
ok
SET @@global.slow_query_log= @old_slow_query_log;
diff --git a/mysql-test/r/mysql_client_test_nonblock.result b/mysql-test/r/mysql_client_test_nonblock.result
index e37e2132b0c..391794f082f 100644
--- a/mysql-test/r/mysql_client_test_nonblock.result
+++ b/mysql-test/r/mysql_client_test_nonblock.result
@@ -1,6 +1,7 @@
SET @old_general_log= @@global.general_log;
SET @old_slow_query_log= @@global.slow_query_log;
call mtr.add_suppression(" Error reading file './client_test_db/test_frm_bug.frm'");
+call mtr.add_suppression(" IP address .* could not be resolved");
ok
SET @@global.general_log= @old_general_log;
SET @@global.slow_query_log= @old_slow_query_log;
diff --git a/mysql-test/r/mysql_upgrade-6984.result b/mysql-test/r/mysql_upgrade-6984.result
index 59c9a865b7c..6c711b4847f 100644
--- a/mysql-test/r/mysql_upgrade-6984.result
+++ b/mysql-test/r/mysql_upgrade-6984.result
@@ -33,6 +33,9 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry
+Error : Unknown storage engine 'InnoDB'
+error : Corrupt
mysql.user OK
Repairing tables
@@ -42,6 +45,9 @@ error : Corrupt
mysql.innodb_table_stats
Error : Unknown storage engine 'InnoDB'
error : Corrupt
+mysql.transaction_registry
+Error : Unknown storage engine 'InnoDB'
+error : Corrupt
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
Phase 4/7: Running 'mysql_fix_privilege_tables'
diff --git a/mysql-test/r/mysql_upgrade.result b/mysql-test/r/mysql_upgrade.result
index a6a5da8f8c8..08efe0e8bc8 100644
--- a/mysql-test/r/mysql_upgrade.result
+++ b/mysql-test/r/mysql_upgrade.result
@@ -30,6 +30,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -78,6 +79,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -126,6 +128,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -179,6 +182,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -233,6 +237,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -290,6 +295,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -342,6 +348,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views... Skipped
@@ -386,6 +393,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -451,6 +459,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -533,6 +542,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -552,7 +562,7 @@ OK
# Should return 2
SELECT count(*) FROM information_schema.tables where ENGINE="InnoDB";
count(*)
-2
+3
SHOW CREATE TABLE test.t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -561,3 +571,22 @@ t1 CREATE TABLE `t1` (
DROP TABLE test.t1;
SET GLOBAL enforce_storage_engine=NULL;
End of 10.1 tests
+Start of 10.3 tests
+#
+# Ensure that mysql_upgrade correctly sets truncate_versioning_priv
+# on upgrade from 10.2
+#
+flush privileges;
+CREATE USER 'user3'@'%';
+GRANT USAGE ON *.* TO 'user3'@'%';
+GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%';
+alter table mysql.user drop column Delete_history_priv;
+alter table mysql.db drop column Delete_history_priv;
+Run mysql_upgrade with all privileges on a user
+flush privileges;
+SHOW GRANTS FOR 'user3'@'%';
+Grants for user3@%
+GRANT USAGE ON *.* TO 'user3'@'%'
+GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%'
+DROP USER 'user3'@'%';
+update mysql.db set Delete_history_priv='Y' where db like 'test%';
diff --git a/mysql-test/r/mysql_upgrade_no_innodb.result b/mysql-test/r/mysql_upgrade_no_innodb.result
index 6ad818278f8..8e051bb7c16 100644
--- a/mysql-test/r/mysql_upgrade_no_innodb.result
+++ b/mysql-test/r/mysql_upgrade_no_innodb.result
@@ -33,6 +33,9 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry
+Error : Unknown storage engine 'InnoDB'
+error : Corrupt
mysql.user OK
Repairing tables
@@ -42,6 +45,9 @@ error : Corrupt
mysql.innodb_table_stats
Error : Unknown storage engine 'InnoDB'
error : Corrupt
+mysql.transaction_registry
+Error : Unknown storage engine 'InnoDB'
+error : Corrupt
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views... Skipped
Phase 4/7: Running 'mysql_fix_privilege_tables'
diff --git a/mysql-test/r/mysql_upgrade_noengine.result b/mysql-test/r/mysql_upgrade_noengine.result
index 09e705abb69..7b3b1610ee0 100644
--- a/mysql-test/r/mysql_upgrade_noengine.result
+++ b/mysql-test/r/mysql_upgrade_noengine.result
@@ -2,7 +2,7 @@ install soname 'ha_blackhole';
install soname 'ha_archive';
create table t1 (a int) engine=blackhole;
create table t2 (a int) engine=archive;
-select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t1';
table_catalog def
table_schema test
table_name t1
@@ -12,6 +12,7 @@ row_format Fixed
table_rows 0
data_length 0
table_comment
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t2';
table_catalog def
table_schema test
table_name t2
@@ -24,7 +25,7 @@ table_comment
flush tables;
uninstall plugin blackhole;
uninstall plugin archive;
-select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t1';
table_catalog def
table_schema test
table_name t1
@@ -34,6 +35,11 @@ row_format NULL
table_rows NULL
data_length NULL
table_comment Unknown storage engine 'BLACKHOLE'
+Warnings:
+Level Warning
+Code 1286
+Message Unknown storage engine 'BLACKHOLE'
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t2';
table_catalog def
table_schema test
table_name t2
@@ -46,9 +52,6 @@ table_comment Unknown storage engine 'ARCHIVE'
Warnings:
Level Warning
Code 1286
-Message Unknown storage engine 'BLACKHOLE'
-Level Warning
-Code 1286
Message Unknown storage engine 'ARCHIVE'
Phase 1/7: Checking and upgrading mysql database
Processing databases
@@ -80,6 +83,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -109,7 +113,7 @@ Error : Unknown storage engine 'ARCHIVE'
error : Corrupt
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK
-select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t1';
table_catalog def
table_schema test
table_name t1
@@ -119,6 +123,11 @@ row_format NULL
table_rows NULL
data_length NULL
table_comment Unknown storage engine 'BLACKHOLE'
+Warnings:
+Level Warning
+Code 1286
+Message Unknown storage engine 'BLACKHOLE'
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t2';
table_catalog def
table_schema test
table_name t2
@@ -131,9 +140,6 @@ table_comment Unknown storage engine 'ARCHIVE'
Warnings:
Level Warning
Code 1286
-Message Unknown storage engine 'BLACKHOLE'
-Level Warning
-Code 1286
Message Unknown storage engine 'ARCHIVE'
alter table mysql.user drop column default_role, drop column max_statement_time;
Phase 1/7: Checking and upgrading mysql database
@@ -166,6 +172,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
@@ -195,7 +202,7 @@ Error : Unknown storage engine 'ARCHIVE'
error : Corrupt
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK
-select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t1';
table_catalog def
table_schema test
table_name t1
@@ -205,6 +212,11 @@ row_format NULL
table_rows NULL
data_length NULL
table_comment Unknown storage engine 'BLACKHOLE'
+Warnings:
+Level Warning
+Code 1286
+Message Unknown storage engine 'BLACKHOLE'
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t2';
table_catalog def
table_schema test
table_name t2
@@ -217,9 +229,6 @@ table_comment Unknown storage engine 'ARCHIVE'
Warnings:
Level Warning
Code 1286
-Message Unknown storage engine 'BLACKHOLE'
-Level Warning
-Code 1286
Message Unknown storage engine 'ARCHIVE'
alter table mysql.user drop column default_role, drop column max_statement_time;
Phase 1/7: Checking and upgrading mysql database
@@ -252,12 +261,13 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Upgrading from a version before MariaDB-10.1
Phase 2/7: Installing used storage engines
Checking for tables with unknown storage engine
-installing plugin for 'blackhole' storage engine
installing plugin for 'archive' storage engine
+installing plugin for 'blackhole' storage engine
Phase 3/7: Fixing views
Phase 4/7: Running 'mysql_fix_privilege_tables'
Phase 5/7: Fixing table and database names
@@ -273,7 +283,7 @@ test.t1 OK
test.t2 OK
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK
-select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t1';
table_catalog def
table_schema test
table_name t1
@@ -283,6 +293,7 @@ row_format Fixed
table_rows 0
data_length 0
table_comment
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t2';
table_catalog def
table_schema test
table_name t2
diff --git a/mysql-test/r/mysql_upgrade_ssl.result b/mysql-test/r/mysql_upgrade_ssl.result
index 918a24ffc71..172a1401cdb 100644
--- a/mysql-test/r/mysql_upgrade_ssl.result
+++ b/mysql-test/r/mysql_upgrade_ssl.result
@@ -31,6 +31,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
diff --git a/mysql-test/r/mysql_upgrade_view.result b/mysql-test/r/mysql_upgrade_view.result
index dc31592566a..813138b57a8 100644
--- a/mysql-test/r/mysql_upgrade_view.result
+++ b/mysql-test/r/mysql_upgrade_view.result
@@ -97,6 +97,9 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry
+Error : Unknown storage engine 'InnoDB'
+error : Corrupt
mysql.user OK
Repairing tables
@@ -106,6 +109,9 @@ error : Corrupt
mysql.innodb_table_stats
Error : Unknown storage engine 'InnoDB'
error : Corrupt
+mysql.transaction_registry
+Error : Unknown storage engine 'InnoDB'
+error : Corrupt
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
test.v1 OK
@@ -241,6 +247,9 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry
+Error : Unknown storage engine 'InnoDB'
+error : Corrupt
mysql.user OK
Repairing tables
@@ -250,6 +259,9 @@ error : Corrupt
mysql.innodb_table_stats
Error : Unknown storage engine 'InnoDB'
error : Corrupt
+mysql.transaction_registry
+Error : Unknown storage engine 'InnoDB'
+error : Corrupt
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views from mysql
test.v1 OK
@@ -360,6 +372,9 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry
+Error : Unknown storage engine 'InnoDB'
+error : Corrupt
mysql.user OK
Repairing tables
@@ -369,6 +384,9 @@ error : Corrupt
mysql.innodb_table_stats
Error : Unknown storage engine 'InnoDB'
error : Corrupt
+mysql.transaction_registry
+Error : Unknown storage engine 'InnoDB'
+error : Corrupt
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views from mysql
test.v1 OK
diff --git a/mysql-test/r/mysqlbinlog_row_compressed.result b/mysql-test/r/mysqlbinlog_row_compressed.result
index 705683322f8..cbea1cf9def 100644
--- a/mysql-test/r/mysqlbinlog_row_compressed.result
+++ b/mysql-test/r/mysqlbinlog_row_compressed.result
@@ -61,7 +61,7 @@ BEGIN
#Q> INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "")
#<date> server id 1 end_log_pos 899 CRC32 XXX Table_map: `test`.`t1` mapped to number num
# at 899
-#<date> server id 1 end_log_pos 967 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
+#<date> server id 1 end_log_pos 967 CRC32 XXX Write_compressed_rows: table id 31 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -90,7 +90,7 @@ BEGIN
#Q> INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL)
#<date> server id 1 end_log_pos 1214 CRC32 XXX Table_map: `test`.`t1` mapped to number num
# at 1214
-#<date> server id 1 end_log_pos 1281 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
+#<date> server id 1 end_log_pos 1281 CRC32 XXX Write_compressed_rows: table id 31 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=11 /* INT meta=0 nullable=0 is_null=0 */
@@ -119,7 +119,7 @@ BEGIN
#Q> INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A")
#<date> server id 1 end_log_pos 1530 CRC32 XXX Table_map: `test`.`t1` mapped to number num
# at 1530
-#<date> server id 1 end_log_pos 1596 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
+#<date> server id 1 end_log_pos 1596 CRC32 XXX Write_compressed_rows: table id 31 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=12 /* INT meta=0 nullable=0 is_null=0 */
@@ -148,7 +148,7 @@ BEGIN
#Q> INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A")
#<date> server id 1 end_log_pos 1842 CRC32 XXX Table_map: `test`.`t1` mapped to number num
# at 1842
-#<date> server id 1 end_log_pos 1909 CRC32 XXX Write_compressed_rows: table id 30 flags: STMT_END_F
+#<date> server id 1 end_log_pos 1909 CRC32 XXX Write_compressed_rows: table id 31 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=13 /* INT meta=0 nullable=0 is_null=0 */
@@ -177,7 +177,7 @@ BEGIN
#Q> INSERT INTO t2 SELECT * FROM t1
#<date> server id 1 end_log_pos 2134 CRC32 XXX Table_map: `test`.`t2` mapped to number num
# at 2134
-#<date> server id 1 end_log_pos 2225 CRC32 XXX Write_compressed_rows: table id 31 flags: STMT_END_F
+#<date> server id 1 end_log_pos 2225 CRC32 XXX Write_compressed_rows: table id 32 flags: STMT_END_F
### INSERT INTO `test`.`t2`
### SET
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -239,7 +239,7 @@ BEGIN
#Q> UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL
#<date> server id 1 end_log_pos 2462 CRC32 XXX Table_map: `test`.`t2` mapped to number num
# at 2462
-#<date> server id 1 end_log_pos 2561 CRC32 XXX Update_compressed_rows: table id 31 flags: STMT_END_F
+#<date> server id 1 end_log_pos 2561 CRC32 XXX Update_compressed_rows: table id 32 flags: STMT_END_F
### UPDATE `test`.`t2`
### WHERE
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -320,7 +320,7 @@ BEGIN
#Q> DELETE FROM t1
#<date> server id 1 end_log_pos 2769 CRC32 XXX Table_map: `test`.`t1` mapped to number num
# at 2769
-#<date> server id 1 end_log_pos 2861 CRC32 XXX Delete_compressed_rows: table id 30 flags: STMT_END_F
+#<date> server id 1 end_log_pos 2861 CRC32 XXX Delete_compressed_rows: table id 31 flags: STMT_END_F
### DELETE FROM `test`.`t1`
### WHERE
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -382,7 +382,7 @@ BEGIN
#Q> DELETE FROM t2
#<date> server id 1 end_log_pos 3069 CRC32 XXX Table_map: `test`.`t2` mapped to number num
# at 3069
-#<date> server id 1 end_log_pos 3154 CRC32 XXX Delete_compressed_rows: table id 31 flags: STMT_END_F
+#<date> server id 1 end_log_pos 3154 CRC32 XXX Delete_compressed_rows: table id 32 flags: STMT_END_F
### DELETE FROM `test`.`t2`
### WHERE
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
diff --git a/mysql-test/r/mysqlbinlog_row_minimal.result b/mysql-test/r/mysqlbinlog_row_minimal.result
index a030f202f45..6417a528638 100644
--- a/mysql-test/r/mysqlbinlog_row_minimal.result
+++ b/mysql-test/r/mysqlbinlog_row_minimal.result
@@ -59,7 +59,7 @@ BEGIN
#Q> INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "")
#<date> server id 1 end_log_pos 946 CRC32 XXX Table_map: `test`.`t1` mapped to number num
# at 946
-#<date> server id 1 end_log_pos 1015 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
+#<date> server id 1 end_log_pos 1015 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -88,7 +88,7 @@ BEGIN
#Q> INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL)
#<date> server id 1 end_log_pos 1262 CRC32 XXX Table_map: `test`.`t1` mapped to number num
# at 1262
-#<date> server id 1 end_log_pos 1330 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
+#<date> server id 1 end_log_pos 1330 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=11 /* INT meta=0 nullable=0 is_null=0 */
@@ -117,7 +117,7 @@ BEGIN
#Q> INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A")
#<date> server id 1 end_log_pos 1579 CRC32 XXX Table_map: `test`.`t1` mapped to number num
# at 1579
-#<date> server id 1 end_log_pos 1646 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
+#<date> server id 1 end_log_pos 1646 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=12 /* INT meta=0 nullable=0 is_null=0 */
@@ -146,7 +146,7 @@ BEGIN
#Q> INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A")
#<date> server id 1 end_log_pos 1892 CRC32 XXX Table_map: `test`.`t1` mapped to number num
# at 1892
-#<date> server id 1 end_log_pos 1962 CRC32 XXX Write_rows: table id 30 flags: STMT_END_F
+#<date> server id 1 end_log_pos 1962 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
### INSERT INTO `test`.`t1`
### SET
### @1=13 /* INT meta=0 nullable=0 is_null=0 */
@@ -175,7 +175,7 @@ BEGIN
#Q> INSERT INTO t2 SELECT * FROM t1
#<date> server id 1 end_log_pos 2187 CRC32 XXX Table_map: `test`.`t2` mapped to number num
# at 2187
-#<date> server id 1 end_log_pos 2354 CRC32 XXX Write_rows: table id 31 flags: STMT_END_F
+#<date> server id 1 end_log_pos 2354 CRC32 XXX Write_rows: table id 32 flags: STMT_END_F
### INSERT INTO `test`.`t2`
### SET
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -237,7 +237,7 @@ BEGIN
#Q> UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL
#<date> server id 1 end_log_pos 2591 CRC32 XXX Table_map: `test`.`t2` mapped to number num
# at 2591
-#<date> server id 1 end_log_pos 2665 CRC32 XXX Update_rows: table id 31 flags: STMT_END_F
+#<date> server id 1 end_log_pos 2665 CRC32 XXX Update_rows: table id 32 flags: STMT_END_F
### UPDATE `test`.`t2`
### WHERE
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -273,7 +273,7 @@ BEGIN
#Q> DELETE FROM t1
#<date> server id 1 end_log_pos 2873 CRC32 XXX Table_map: `test`.`t1` mapped to number num
# at 2873
-#<date> server id 1 end_log_pos 2927 CRC32 XXX Delete_rows: table id 30 flags: STMT_END_F
+#<date> server id 1 end_log_pos 2927 CRC32 XXX Delete_rows: table id 31 flags: STMT_END_F
### DELETE FROM `test`.`t1`
### WHERE
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
@@ -303,7 +303,7 @@ BEGIN
#Q> DELETE FROM t2
#<date> server id 1 end_log_pos 3135 CRC32 XXX Table_map: `test`.`t2` mapped to number num
# at 3135
-#<date> server id 1 end_log_pos 3189 CRC32 XXX Delete_rows: table id 31 flags: STMT_END_F
+#<date> server id 1 end_log_pos 3189 CRC32 XXX Delete_rows: table id 32 flags: STMT_END_F
### DELETE FROM `test`.`t2`
### WHERE
### @1=10 /* INT meta=0 nullable=0 is_null=0 */
diff --git a/mysql-test/r/mysqlcheck.result b/mysql-test/r/mysqlcheck.result
index ff9cc5d5c81..7259b68be50 100644
--- a/mysql-test/r/mysqlcheck.result
+++ b/mysql-test/r/mysqlcheck.result
@@ -31,6 +31,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
mtr.global_suppressions Table is already up to date
mtr.test_suppressions Table is already up to date
@@ -65,6 +66,9 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry
+note : Table does not support optimize, doing recreate + analyze instead
+status : OK
mysql.user OK
mysql.column_stats OK
mysql.columns_priv OK
@@ -93,6 +97,7 @@ mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
+mysql.transaction_registry OK
mysql.user OK
mysql.column_stats Table is already up to date
mysql.columns_priv Table is already up to date
@@ -125,6 +130,9 @@ mysql.time_zone_leap_second Table is already up to date
mysql.time_zone_name Table is already up to date
mysql.time_zone_transition Table is already up to date
mysql.time_zone_transition_type Table is already up to date
+mysql.transaction_registry
+note : Table does not support optimize, doing recreate + analyze instead
+status : OK
mysql.user Table is already up to date
create table t1 (a int) engine=myisam;
create view v1 as select * from t1;
@@ -447,6 +455,7 @@ mysql.time_zone_leap_second Table is already up to date
mysql.time_zone_name Table is already up to date
mysql.time_zone_transition Table is already up to date
mysql.time_zone_transition_type Table is already up to date
+mysql.transaction_registry OK
mysql.user Table is already up to date
mysqltest1.t1
warning : Table is marked as crashed
diff --git a/mysql-test/r/mysqld--help,win.rdiff b/mysql-test/r/mysqld--help,win.rdiff
index b061b7fbe66..33374105fb5 100644
--- a/mysql-test/r/mysqld--help,win.rdiff
+++ b/mysql-test/r/mysqld--help,win.rdiff
@@ -1,6 +1,6 @@
--- a/mysql-test/r/mysqld--help.result
+++ b/mysql-test/r/mysqld--help.result
-@@ -334,7 +334,6 @@
+@@ -381,7 +381,6 @@ The following options may be given as the first argument:
The number of segments in a key cache
-L, --language=name Client error messages in given language. May be given as
a full path. Deprecated. Use --lc-messages-dir instead.
@@ -8,7 +8,7 @@
--lc-messages=name Set the language used for the error messages.
-L, --lc-messages-dir=name
Directory where error messages are
-@@ -543,6 +542,7 @@
+@@ -603,6 +602,7 @@ The following options may be given as the first argument:
Use MySQL-5.6 (instead of MariaDB-5.3) format for TIME,
DATETIME, TIMESTAMP columns.
(Defaults to on; use --skip-mysql56-temporal-format to disable.)
@@ -16,7 +16,7 @@
--net-buffer-length=#
Buffer length for TCP/IP and socket communication
--net-read-timeout=#
-@@ -957,6 +957,9 @@
+@@ -1048,6 +1048,9 @@ The following options may be given as the first argument:
characteristics (isolation level, read only/read
write,snapshot - but not any work done / data modified
within the transaction).
@@ -26,7 +26,7 @@
--show-slave-auth-info
Show user and password in SHOW SLAVE HOSTS on this
master.
-@@ -1069,6 +1072,10 @@
+@@ -1171,6 +1174,10 @@ The following options may be given as the first argument:
Log slow queries to given log file. Defaults logging to
'hostname'-slow.log. Must be enabled to activate other
slow log options
@@ -37,15 +37,15 @@
--socket=name Socket file to use for connection
--sort-buffer-size=#
Each thread that needs to do a sort allocates a buffer of
-@@ -1087,6 +1094,7 @@
- NO_ENGINE_SUBSTITUTION, PAD_CHAR_TO_FULL_LENGTH
+@@ -1190,6 +1197,7 @@ The following options may be given as the first argument:
+ EMPTY_STRING_IS_NULL
--stack-trace Print a symbolic stack trace on failure
(Defaults to on; use --skip-stack-trace to disable.)
+ --standalone Dummy option to start as a standalone program (NT).
--standard-compliant-cte
Allow only CTEs compliant to SQL standard
(Defaults to on; use --skip-standard-compliant-cte to disable.)
-@@ -1134,6 +1142,11 @@
+@@ -1261,6 +1269,11 @@ The following options may be given as the first argument:
--thread-pool-max-threads=#
Maximum allowed number of worker threads in the thread
pool
@@ -57,7 +57,7 @@
--thread-pool-oversubscribe=#
How many additional active worker threads in a group are
allowed.
-@@ -1172,8 +1185,8 @@
+@@ -1299,8 +1312,8 @@ The following options may be given as the first argument:
automatically convert it to an on-disk MyISAM or Aria
table.
-t, --tmpdir=name Path for temporary files. Several paths may be specified,
@@ -68,7 +68,7 @@
--transaction-alloc-block-size=#
Allocation block size for transactions to be stored in
binary log
-@@ -1298,7 +1311,6 @@
+@@ -1434,7 +1447,6 @@ key-cache-block-size 1024
key-cache-division-limit 100
key-cache-file-hash-size 512
key-cache-segments 0
@@ -76,7 +76,7 @@
lc-messages en_US
lc-messages-dir MYSQL_SHAREDIR/
lc-time-names en_US
-@@ -1368,6 +1380,7 @@
+@@ -1506,6 +1518,7 @@ myisam-sort-buffer-size 134216704
myisam-stats-method NULLS_UNEQUAL
myisam-use-mmap FALSE
mysql56-temporal-format TRUE
@@ -84,16 +84,16 @@
net-buffer-length 16384
net-read-timeout 30
net-retry-count 10
-@@ -1469,6 +1482,8 @@
+@@ -1616,6 +1629,8 @@ session-track-schema TRUE
session-track-state-change FALSE
- session-track-system-variables
+ session-track-system-variables autocommit,character_set_client,character_set_connection,character_set_results,time_zone
session-track-transaction-info OFF
+shared-memory FALSE
+shared-memory-base-name MYSQL
show-slave-auth-info FALSE
silent-startup FALSE
skip-grant-tables TRUE
-@@ -1493,6 +1508,7 @@
+@@ -1642,6 +1657,7 @@ slave-transaction-retry-interval 0
slave-type-conversions
slow-launch-time 2
slow-query-log FALSE
@@ -101,10 +101,10 @@
sort-buffer-size 2097152
sql-mode STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
stack-trace TRUE
-@@ -1506,14 +1522,16 @@
- sync-relay-log 10000
- sync-relay-log-info 10000
+@@ -1657,9 +1673,9 @@ sync-relay-log-info 10000
sysdate-is-now FALSE
+ system-versioning-alter-history ERROR
+ system-versioning-innodb-algorithm-simple TRUE
-table-cache 431
+table-cache 2000
table-definition-cache 400
@@ -112,6 +112,8 @@
+table-open-cache 2000
table-open-cache-instances 8
tc-heuristic-recover OFF
+ tcp-keepalive-interval 0
+@@ -1668,6 +1684,8 @@ tcp-keepalive-time 0
thread-cache-size 151
thread-pool-idle-timeout 60
thread-pool-max-threads 65536
diff --git a/mysql-test/r/mysqld--help.result b/mysql-test/r/mysqld--help.result
index 1f9850191d9..ca773364c1d 100644
--- a/mysql-test/r/mysqld--help.result
+++ b/mysql-test/r/mysqld--help.result
@@ -67,6 +67,8 @@ The following options may be given as the first argument:
--binlog-do-db=name Tells the master it should log updates for the specified
database, and exclude all others not explicitly
mentioned.
+ --binlog-file-cache-size=#
+ The size of file cache for the binary log
--binlog-format=name
What form of binary logging the master will use: either
ROW for row-based binary logging, STATEMENT for
@@ -125,6 +127,35 @@ The following options may be given as the first argument:
-r, --chroot=name Chroot mysqld daemon during startup.
--collation-server=name
Set the default collation.
+ --column-compression-threshold=#
+ Minimum column data length eligible for compression
+ --column-compression-zlib-level=#
+ zlib compression level (1 gives best speed, 9 gives best
+ compression)
+ --column-compression-zlib-strategy=name
+ The strategy parameter is used to tune the compression
+ algorithm. Use the value DEFAULT_STRATEGY for normal
+ data, FILTERED for data produced by a filter (or
+ predictor), HUFFMAN_ONLY to force Huffman encoding only
+ (no string match), or RLE to limit match distances to one
+ (run-length encoding). Filtered data consists mostly of
+ small values with a somewhat random distribution. In this
+ case, the compression algorithm is tuned to compress them
+ better. The effect of FILTERED is to force more Huffman
+ coding and less string matching; it is somewhat
+ intermediate between DEFAULT_STRATEGY and HUFFMAN_ONLY.
+ RLE is designed to be almost as fast as HUFFMAN_ONLY, but
+ give better compression for PNG image data. The strategy
+ parameter only affects the compression ratio but not the
+ correctness of the compressed output even if it is not
+ set appropriately. FIXED prevents the use of dynamic
+ Huffman codes, allowing for a simpler decoder for special
+ applications.
+ --column-compression-zlib-wrap
+ Generate zlib header and trailer and compute adler32
+ check value. It can be used with storage engines that
+ don't provide data integrity verification to detect data
+ corruption.
--completion-type=name
The transaction completion type. One of: NO_CHAIN, CHAIN,
RELEASE
@@ -211,7 +242,7 @@ The following options may be given as the first argument:
This option causes CREATE TABLE to create all TIMESTAMP
columns as NULL with DEFAULT NULL attribute, Without this
option, TIMESTAMP columns are NOT NULL and have implicit
- DEFAULT clauses. The old behavior is deprecated.
+ DEFAULT clauses.
--external-locking Use system (external) locking (disabled by default).
With this option enabled you can run myisamchk to test
(not repair) tables while the MySQL server is running.
@@ -269,6 +300,13 @@ The following options may be given as the first argument:
applied; this means it is the responsibility of the user
to ensure that GTID sequence numbers are strictly
increasing.
+ --gtid-pos-auto-engines=name
+ List of engines for which to automatically create a
+ mysql.gtid_slave_pos_ENGINE table, if a transaction using
+ that engine is replicated. This can be used to avoid
+ introducing cross-engine transactions, if engines are
+ used different from that used by table
+ mysql.gtid_slave_pos
--gtid-strict-mode Enforce strict seq_no ordering of events in the binary
log. Slave stops with an error if it encounters an event
that would cause it to generate an out-of-order binlog if
@@ -283,6 +321,15 @@ The following options may be given as the first argument:
height-balanced.
--host-cache-size=# How many host names should be cached to avoid resolving.
(Automatically configured unless set explicitly)
+ --idle-readonly-transaction-timeout=#
+ The number of seconds the server waits for read-only idle
+ transaction
+ --idle-transaction-timeout=#
+ The number of seconds the server waits for idle
+ transaction
+ --idle-write-transaction-timeout=#
+ The number of seconds the server waits for write idle
+ transaction
--ignore-builtin-innodb
Disable initialization of builtin InnoDB plugin
--ignore-db-dirs=name
@@ -375,6 +422,9 @@ The following options may be given as the first argument:
ALWAYS use row-based binary logging, the security issues
do not exist and the binary logging cannot break, so you
can safely set this to TRUE
+ --log-disabled-statements=name
+ Don't log certain types of statements to general log. Any
+ combination of: slave, sp
--log-error[=name] Log errors to file (instead of stdout). If file name is
not specified then 'datadir'/'log-basename'.err or the
'pid-file' path with extension .err is used
@@ -383,7 +433,8 @@ The following options may be given as the first argument:
FILE, TABLE
--log-queries-not-using-indexes
Log queries that are executed without benefit of any
- index to the slow log if it is open
+ index to the slow log if it is open. Same as
+ log_slow_filter='not_using_index'
--log-short-format Don't log extra information to update and slow-query
logs.
--log-slave-updates Tells the slave to log the updates from the slave thread
@@ -391,12 +442,20 @@ The following options may be given as the first argument:
plan to daisy-chain the slaves.
--log-slow-admin-statements
Log slow OPTIMIZE, ANALYZE, ALTER and other
- administrative statements to the slow log if it is open.
- (Defaults to on; use --skip-log-slow-admin-statements to disable.)
+ administrative statements to the slow log if it is open.
+ Resets or sets the option 'admin' in
+ log_slow_disabled_statements
+ --log-slow-disabled-statements=name
+ Don't log certain types of statements to slow log. Any
+ combination of: admin, call, slave, sp
--log-slow-filter=name
- Log only certain types of queries. Any combination of:
- admin, filesort, filesort_on_disk, full_join, full_scan,
- query_cache, query_cache_miss, tmp_table,
+ Log only certain types of queries to the slow log. If
+ variable empty alll kind of queries are logged. All
+ types are bound by slow_query_time, except
+ 'not_using_index' which is always logged if enabled. Any
+ combination of: admin, filesort, filesort_on_disk,
+ filesort_priority_queue, full_join, full_scan,
+ not_using_index, query_cache, query_cache_miss, tmp_table,
tmp_table_on_disk
--log-slow-rate-limit=#
Write to slow log every #th slow query. Set to 1 to log
@@ -404,8 +463,8 @@ The following options may be given as the first argument:
the performance impact of slow logging
--log-slow-slave-statements
Log slow statements executed by slave thread to the slow
- log if it is open.
- (Defaults to on; use --skip-log-slow-slave-statements to disable.)
+ log if it is open. Resets or sets the option 'slave' in
+ log_slow_disabled_statements
--log-slow-verbosity=name
Verbosity level for the slow log. Any combination of:
innodb, query_plan, explain
@@ -606,7 +665,7 @@ The following options may be given as the first argument:
join_cache_hashed, join_cache_bka,
optimize_join_buffer_size, table_elimination,
extended_keys, exists_to_in, orderby_uses_equalities,
- condition_pushdown_for_derived, split_grouping_derived
+ condition_pushdown_for_derived, split_materialized
--optimizer-use-condition-selectivity=#
Controls selectivity of which conditions the optimizer
takes into account to calculate cardinality of a partial
@@ -782,6 +841,14 @@ The following options may be given as the first argument:
Seconds between sending progress reports to the client
for time-consuming statements. Set to 0 to disable
progress reporting.
+ --proxy-protocol-networks=name
+ Enable proxy protocol for these source networks. The
+ syntax is a comma separated list of IPv4 and IPv6
+ networks. If the network doesn't contain mask, it is
+ considered to be a single host. "*" represents all
+ networks and must the only directive on the line. String
+ "localhost" represents non-TCP local connections (Unix
+ domain socket, Windows named pipe or shared memory).
--query-alloc-block-size=#
Allocation block size for query parsing and execution
--query-cache-limit=#
@@ -927,6 +994,33 @@ The following options may be given as the first argument:
--rowid-merge-buff-size=#
The size of the buffers used [NOT] IN evaluation via
partial matching
+ --rpl-semi-sync-master-enabled
+ Enable semi-synchronous replication master (disabled by
+ default).
+ --rpl-semi-sync-master-timeout=#
+ The timeout value (in ms) for semi-synchronous
+ replication in the master
+ --rpl-semi-sync-master-trace-level=#
+ The tracing level for semi-sync replication.
+ --rpl-semi-sync-master-wait-no-slave
+ Wait until timeout when no semi-synchronous replication
+ slave available (enabled by default).
+ (Defaults to on; use --skip-rpl-semi-sync-master-wait-no-slave to disable.)
+ --rpl-semi-sync-master-wait-point=name
+ Should transaction wait for semi-sync ack after having
+ synced binlog, or after having committed in storage
+ engine.. One of: AFTER_SYNC, AFTER_COMMIT
+ --rpl-semi-sync-slave-delay-master
+ Only write master info file when ack is needed.
+ --rpl-semi-sync-slave-enabled
+ Enable semi-synchronous replication slave (disabled by
+ default).
+ --rpl-semi-sync-slave-kill-conn-timeout[=#]
+ Timeout for the mysql connection used to kill the slave
+ io_thread's connection on master. This timeout comes into
+ play when stop slave is executed.
+ --rpl-semi-sync-slave-trace-level=#
+ The tracing level for semi-sync replication.
--safe-mode Skip some optimize stages (for testing). Deprecated.
--safe-user-create Don't allow new user creation by the user who has no
write privileges to the mysql.user table.
@@ -944,11 +1038,7 @@ The following options may be given as the first argument:
--session-track-state-change
Track changes to the session state.
--session-track-system-variables=name
- Track changes in registered system variables. For
- compatibility with MySQL defaults this variable should be
- set to "autocommit, character_set_client,
- character_set_connection, character_set_results,
- time_zone"
+ Track changes in registered system variables.
--session-track-transaction-info=name
Track changes to the transaction attributes. OFF to
disable; STATE to track just transaction state (Is there
@@ -1051,8 +1141,19 @@ The following options may be given as the first argument:
(Defaults to on; use --skip-slave-sql-verify-checksum to disable.)
--slave-transaction-retries=#
Number of times the slave SQL thread will retry a
- transaction in case it failed with a deadlock or elapsed
- lock wait timeout, before giving up and stopping
+ transaction in case it failed with a deadlock, elapsed
+ lock wait timeout or listed in
+ slave_transaction_retry_errors, before giving up and
+ stopping
+ --slave-transaction-retry-errors=name
+ Tells the slave thread to retry transaction for
+ replication when a query event returns an error from the
+ provided list. Deadlock and elapsed lock wait timeout
+ errors are automatically added to this list
+ --slave-transaction-retry-interval=#
+ Interval of the slave SQL thread will retry a transaction
+ in case it failed with a deadlock or elapsed lock wait
+ timeout or listed in slave_transaction_retry_errors
--slave-type-conversions=name
Set of slave type conversions that are enabled. If the
variable is empty, no conversions are allowed and it is
@@ -1086,7 +1187,7 @@ The following options may be given as the first argument:
ERROR_FOR_DIVISION_BY_ZERO, TRADITIONAL,
NO_AUTO_CREATE_USER, HIGH_NOT_PRECEDENCE,
NO_ENGINE_SUBSTITUTION, PAD_CHAR_TO_FULL_LENGTH,
- EMPTY_STRING_IS_NULL
+ EMPTY_STRING_IS_NULL, SIMULTANEOUS_ASSIGNMENT
--stack-trace Print a symbolic stack trace on failure
(Defaults to on; use --skip-stack-trace to disable.)
--standard-compliant-cte
@@ -1118,6 +1219,14 @@ The following options may be given as the first argument:
safe-replicable. Since 5.0, SYSDATE() returns a `dynamic'
value different for different invocations, even within
the same statement.
+ --system-versioning-alter-history=name
+ Versioning ALTER TABLE mode. ERROR: Fail ALTER with
+ error; KEEP: Keep historical system rows and subject them
+ to ALTER;
+ --system-versioning-innodb-algorithm-simple
+ Use simple algorithm of timestamp handling in InnoDB
+ instead of TRX_SEES
+ (Defaults to on; use --skip-system-versioning-innodb-algorithm-simple to disable.)
--table-cache=# Deprecated; use --table-open-cache instead.
--table-definition-cache=#
The number of cached table definitions
@@ -1128,6 +1237,21 @@ The following options may be given as the first argument:
--tc-heuristic-recover=name
Decision to use in heuristic recover process. One of: OFF,
COMMIT, ROLLBACK
+ --tcp-keepalive-interval=#
+ The interval, in seconds, between when successive
+ keep-alive packets are sent if no acknowledgement is
+ received.If set to 0, system dependent default is used.
+ (Automatically configured unless set explicitly)
+ --tcp-keepalive-probes=#
+ The number of unacknowledged probes to send before
+ considering the connection dead and notifying the
+ application layer.If set to 0, system dependent default
+ is used. (Automatically configured unless set explicitly)
+ --tcp-keepalive-time=#
+ Timeout, in milliseconds, with no activity until the
+ first TCP keep-alive packet is sent.If set to 0, system
+ dependent default is used. (Automatically configured
+ unless set explicitly)
--thread-cache-size=#
How many threads we should keep in a cache for reuse.
These are freed after 5 minutes of idle time
@@ -1225,6 +1349,7 @@ binlog-checksum CRC32
binlog-commit-wait-count 0
binlog-commit-wait-usec 100000
binlog-direct-non-transactional-updates FALSE
+binlog-file-cache-size 16384
binlog-format MIXED
binlog-optimize-thread-scheduling TRUE
binlog-row-event-max-size 8192
@@ -1235,6 +1360,10 @@ character-set-client-handshake TRUE
character-set-filesystem binary
character-sets-dir MYSQL_CHARSETSDIR/
chroot (No default value)
+column-compression-threshold 100
+column-compression-zlib-level 6
+column-compression-zlib-strategy DEFAULT_STRATEGY
+column-compression-zlib-wrap FALSE
completion-type NO_CHAIN
concurrent-insert AUTO
console TRUE
@@ -1279,11 +1408,15 @@ getopt-prefix-matching FALSE
group-concat-max-len 1048576
gtid-domain-id 0
gtid-ignore-duplicates FALSE
+gtid-pos-auto-engines
gtid-strict-mode FALSE
help TRUE
histogram-size 0
histogram-type SINGLE_PREC_HB
host-cache-size 279
+idle-readonly-transaction-timeout 0
+idle-transaction-timeout 0
+idle-write-transaction-timeout 0
ignore-builtin-innodb FALSE
ignore-db-dirs
init-connect
@@ -1312,6 +1445,7 @@ log-bin-compress FALSE
log-bin-compress-min-len 256
log-bin-index (No default value)
log-bin-trust-function-creators FALSE
+log-disabled-statements sp
log-error
log-isam myisam.log
log-output FILE
@@ -1319,7 +1453,8 @@ log-queries-not-using-indexes FALSE
log-short-format FALSE
log-slave-updates FALSE
log-slow-admin-statements TRUE
-log-slow-filter admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+log-slow-disabled-statements sp
+log-slow-filter admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
log-slow-rate-limit 1
log-slow-slave-statements TRUE
log-slow-verbosity
@@ -1383,7 +1518,7 @@ old-style-user-limits FALSE
optimizer-prune-level 1
optimizer-search-depth 62
optimizer-selectivity-sampling-limit 100
-optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
optimizer-use-condition-selectivity 1
performance-schema FALSE
performance-schema-accounts-size -1
@@ -1430,13 +1565,13 @@ performance-schema-session-connect-attrs-size -1
performance-schema-setup-actors-size 100
performance-schema-setup-objects-size 100
performance-schema-users-size -1
-plugin-maturity unknown
port 3306
port-open-timeout 0
preload-buffer-size 32768
profiling-history-size 15
progress-report-time 5
protocol-version 10
+proxy-protocol-networks
query-alloc-block-size 16384
query-cache-limit 1048576
query-cache-min-res-unit 4096
@@ -1464,13 +1599,22 @@ report-password (No default value)
report-port 0
report-user (No default value)
rowid-merge-buff-size 8388608
+rpl-semi-sync-master-enabled FALSE
+rpl-semi-sync-master-timeout 10000
+rpl-semi-sync-master-trace-level 32
+rpl-semi-sync-master-wait-no-slave TRUE
+rpl-semi-sync-master-wait-point AFTER_COMMIT
+rpl-semi-sync-slave-delay-master FALSE
+rpl-semi-sync-slave-enabled FALSE
+rpl-semi-sync-slave-kill-conn-timeout 5
+rpl-semi-sync-slave-trace-level 32
safe-user-create FALSE
secure-auth TRUE
secure-file-priv (No default value)
server-id 1
session-track-schema TRUE
session-track-state-change FALSE
-session-track-system-variables
+session-track-system-variables autocommit,character_set_client,character_set_connection,character_set_results,time_zone
session-track-transaction-info OFF
show-slave-auth-info FALSE
silent-startup FALSE
@@ -1490,9 +1634,11 @@ slave-parallel-mode conservative
slave-parallel-threads 0
slave-parallel-workers 0
slave-run-triggers-for-rbr NO
-slave-skip-errors (No default value)
+slave-skip-errors OFF
slave-sql-verify-checksum TRUE
slave-transaction-retries 10
+slave-transaction-retry-errors 1213,1205
+slave-transaction-retry-interval 0
slave-type-conversions
slow-launch-time 2
slow-query-log FALSE
@@ -1509,11 +1655,16 @@ sync-master-info 10000
sync-relay-log 10000
sync-relay-log-info 10000
sysdate-is-now FALSE
+system-versioning-alter-history ERROR
+system-versioning-innodb-algorithm-simple TRUE
table-cache 431
table-definition-cache 400
table-open-cache 431
table-open-cache-instances 8
tc-heuristic-recover OFF
+tcp-keepalive-interval 0
+tcp-keepalive-probes 0
+tcp-keepalive-time 0
thread-cache-size 151
thread-pool-idle-timeout 60
thread-pool-max-threads 65536
diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result
index ba19bd2e65c..a1e206dffd7 100644
--- a/mysql-test/r/mysqldump.result
+++ b/mysql-test/r/mysqldump.result
@@ -1917,7 +1917,7 @@ drop table t1, t2, t3;
# Bug#21288 mysqldump segmentation fault when using --where
#
create table t1 (a int);
-mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `t1` WHERE xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx': You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' at line 1 (1064)
+mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ `a` FROM `t1` WHERE xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx': You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' at line 1 (1064)
mysqldump: Got error: 1064: "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' at line 1" when retrieving data from server
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
@@ -5648,3 +5648,183 @@ DELIMITER ;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
DROP TABLE t1;
+#
+# Test for Invisible columns
+#
+create database d;
+use d;
+# Invisble field table
+create table t1(a int , b int invisible);
+insert into t1 values(1);
+insert into t1(a,b) values(1,2);
+# not invisible field table --complete-insert wont be used
+create table t2(a int , b int);
+insert into t2(a,b) values(1,2);
+insert into t2(a,b) values(1,2);
+# Invisble field table
+create table t3(invisible int , `a b c & $!@#$%^&*( )` int invisible default 4, `ds=~!@ \# $% ^ & * ( ) _ - = +` int invisible default 5);
+insert into t3 values(1);
+insert into t3 values(5);
+insert into t3 values(2);
+insert into t3(`invisible`, `a b c & $!@#$%^&*( )`, `ds=~!@ \# $% ^ & * ( ) _ - = +` ) values(1,2,3);
+CREATE TABLE t4(ËÃÃŒÃÎËÃ1 INT);
+insert into t4 values(1);
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) INVISIBLE DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+INSERT INTO `t1` (`a`, `b`) VALUES (1,NULL),(1,2);
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `t2` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+INSERT INTO `t2` VALUES (1,2),(1,2);
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `t3` (
+ `invisible` int(11) DEFAULT NULL,
+ `a b c & $!@#$%^&*( )` int(11) INVISIBLE DEFAULT 4,
+ `ds=~!@ \# $% ^ & * ( ) _ - = +` int(11) INVISIBLE DEFAULT 5
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+INSERT INTO `t3` (`invisible`, `a b c & $!@#$%^&*( )`, `ds=~!@ \# $% ^ & * ( ) _ - = +`) VALUES (1,4,5),(5,4,5),(2,4,5),(1,2,3);
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `t4` (
+ `ËÃÃŒÃÎËÃ1` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+INSERT INTO `t4` VALUES (1);
+#Check side effect on --complete insert
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) INVISIBLE DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+INSERT INTO `t1` (`a`, `b`) VALUES (1,NULL),(1,2);
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `t2` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+INSERT INTO `t2` (`a`, `b`) VALUES (1,2),(1,2);
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `t3` (
+ `invisible` int(11) DEFAULT NULL,
+ `a b c & $!@#$%^&*( )` int(11) INVISIBLE DEFAULT 4,
+ `ds=~!@ \# $% ^ & * ( ) _ - = +` int(11) INVISIBLE DEFAULT 5
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+INSERT INTO `t3` (`invisible`, `a b c & $!@#$%^&*( )`, `ds=~!@ \# $% ^ & * ( ) _ - = +`) VALUES (1,4,5),(5,4,5),(2,4,5),(1,2,3);
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `t4` (
+ `ËÃÃŒÃÎËÃ1` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+INSERT INTO `t4` (`ËÃÃŒÃÎËÃ1`) VALUES (1);
+#Check xml
+<?xml version="1.0"?>
+<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<database name="d">
+ <table_structure name="t1">
+ <field Field="a" Type="int(11)" Null="YES" Key="" Default="NULL" Extra="" Comment="" />
+ <field Field="b" Type="int(11)" Null="YES" Key="" Default="NULL" Extra="INVISIBLE" Comment="" />
+ </table_structure>
+ <table_data name="t1">
+ <row>
+ <field name="a">1</field>
+ <field name="b" xsi:nil="true" />
+ </row>
+ <row>
+ <field name="a">1</field>
+ <field name="b">2</field>
+ </row>
+ </table_data>
+ <table_structure name="t2">
+ <field Field="a" Type="int(11)" Null="YES" Key="" Default="NULL" Extra="" Comment="" />
+ <field Field="b" Type="int(11)" Null="YES" Key="" Default="NULL" Extra="" Comment="" />
+ </table_structure>
+ <table_data name="t2">
+ <row>
+ <field name="a">1</field>
+ <field name="b">2</field>
+ </row>
+ <row>
+ <field name="a">1</field>
+ <field name="b">2</field>
+ </row>
+ </table_data>
+ <table_structure name="t3">
+ <field Field="invisible" Type="int(11)" Null="YES" Key="" Default="NULL" Extra="" Comment="" />
+ <field Field="a b c &amp; $!@#$%^&amp;*( )" Type="int(11)" Null="YES" Key="" Default="4" Extra="INVISIBLE" Comment="" />
+ <field Field="ds=~!@ \# $% ^ &amp; * ( ) _ - = +" Type="int(11)" Null="YES" Key="" Default="5" Extra="INVISIBLE" Comment="" />
+ </table_structure>
+ <table_data name="t3">
+ <row>
+ <field name="invisible">1</field>
+ <field name="a b c &amp; $!@#$%^&amp;*( )">4</field>
+ <field name="ds=~!@ \# $% ^ &amp; * ( ) _ - = +">5</field>
+ </row>
+ <row>
+ <field name="invisible">5</field>
+ <field name="a b c &amp; $!@#$%^&amp;*( )">4</field>
+ <field name="ds=~!@ \# $% ^ &amp; * ( ) _ - = +">5</field>
+ </row>
+ <row>
+ <field name="invisible">2</field>
+ <field name="a b c &amp; $!@#$%^&amp;*( )">4</field>
+ <field name="ds=~!@ \# $% ^ &amp; * ( ) _ - = +">5</field>
+ </row>
+ <row>
+ <field name="invisible">1</field>
+ <field name="a b c &amp; $!@#$%^&amp;*( )">2</field>
+ <field name="ds=~!@ \# $% ^ &amp; * ( ) _ - = +">3</field>
+ </row>
+ </table_data>
+ <table_structure name="t4">
+ <field Field="ËÃÃŒÃÎËÃ1" Type="int(11)" Null="YES" Key="" Default="NULL" Extra="" Comment="" />
+ </table_structure>
+ <table_data name="t4">
+ <row>
+ <field name="ËÃÃŒÃÎËÃ1">1</field>
+ </row>
+ </table_data>
+</database>
+</mysqldump>
+DROP table t1,t2,t3;
+select * from t1;
+a
+1
+1
+select a,b from t1;
+a b
+1 NULL
+1 2
+select * from t2;
+a b
+1 2
+1 2
+select * from t3;
+invisible
+1
+5
+2
+1
+desc t3;
+Field Type Null Key Default Extra
+invisible int(11) YES NULL
+a b c & $!@#$%^&*( ) int(11) YES 4 INVISIBLE
+ds=~!@ \# $% ^ & * ( ) _ - = + int(11) YES 5 INVISIBLE
+drop database d;
diff --git a/mysql-test/r/no_password_column-mdev-11170.result b/mysql-test/r/no_password_column-mdev-11170.result
index 81eecc95558..6195100436d 100644
--- a/mysql-test/r/no_password_column-mdev-11170.result
+++ b/mysql-test/r/no_password_column-mdev-11170.result
@@ -42,6 +42,7 @@ Create_user_priv enum('N','Y') NO N
Event_priv enum('N','Y') NO N
Trigger_priv enum('N','Y') NO N
Create_tablespace_priv enum('N','Y') NO N
+Delete_history_priv enum('N','Y') NO N
ssl_type enum('','ANY','X509','SPECIFIED') NO
ssl_cipher blob NO NULL
x509_issuer blob NO NULL
diff --git a/mysql-test/r/opt_tvc.result b/mysql-test/r/opt_tvc.result
new file mode 100644
index 00000000000..f06669fdf85
--- /dev/null
+++ b/mysql-test/r/opt_tvc.result
@@ -0,0 +1,640 @@
+create table t1 (a int, b int);
+insert into t1
+values (1,2), (4,6), (9,7),
+(1,1), (2,5), (7,8);
+create table t2 (a int, b int, c int);
+insert into t2
+values (1,2,3), (5,1,2), (4,3,7),
+(8,9,0), (10,7,1), (5,5,1);
+create table t3 (a int, b varchar(16), index idx(a));
+insert into t3 values
+(1, "abc"), (3, "egh"), (8, "axxx"), (10, "abc"),
+(2, "ccw"), (8, "wqqe"), (7, "au"), (9, "waa"),
+(3, "rass"), (9, "ert"), (9, "lok"), (8, "aww"),
+(1, "todd"), (3, "rew"), (8, "aww"), (3, "sw"),
+(11, "llk"), (7, "rbw"), (1, "sm"), (2, "jyp"),
+(4, "yq"), (5, "pled"), (12, "ligin"), (12, "toww"),
+(6, "mxm"), (15, "wanone"), (9, "sunqq"), (2, "abe");
+# optimization is not used
+select * from t1 where a in (1,2);
+a b
+1 2
+1 1
+2 5
+explain extended select * from t1 where a in (1,2);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`a` in (1,2)
+# set minimum number of values in VALUEs list when optimization works to 2
+set @@in_predicate_conversion_threshold= 2;
+# single IN-predicate in WHERE-part
+select * from t1 where a in (1,2);
+a b
+1 2
+1 1
+2 5
+select * from t1
+where a in
+(
+select *
+from (values (1),(2)) as tvc_0
+);
+a b
+1 2
+1 1
+2 5
+explain extended select * from t1 where a in (1,2);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+explain extended select * from t1
+where a in
+(
+select *
+from (values (1),(2)) as tvc_0
+);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+# AND-condition with IN-predicates in WHERE-part
+select * from t1
+where a in (1,2) and
+b in (1,5);
+a b
+1 1
+2 5
+select * from t1
+where a in
+(
+select *
+from (values (1),(2)) as tvc_0
+)
+and b in
+(
+select *
+from (values (1),(5)) as tvc_1
+);
+a b
+1 1
+2 5
+explain extended select * from t1
+where a in (1,2) and
+b in (1,5);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery4> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
+4 MATERIALIZED <derived5> ALL NULL NULL NULL NULL 2 100.00
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+5 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) semi join ((values (1),(5)) `tvc_1`) where `test`.`t1`.`b` = `tvc_1`.`1`
+explain extended select * from t1
+where a in
+(
+select *
+from (values (1),(2)) as tvc_0
+)
+and b in
+(
+select *
+from (values (1),(5)) as tvc_1
+);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery4> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
+4 MATERIALIZED <derived5> ALL NULL NULL NULL NULL 2 100.00
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+5 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) semi join ((values (1),(5)) `tvc_1`) where `test`.`t1`.`b` = `tvc_1`.`1`
+# subquery with IN-predicate
+select * from t1
+where a in
+(
+select a
+from t2 where b in (3,4)
+);
+a b
+4 6
+select * from t1
+where a in
+(
+select a from t2
+where b in
+(
+select *
+from (values (3),(4)) as tvc_0
+)
+);
+a b
+4 6
+explain extended select * from t1
+where a in
+(
+select a
+from t2 where b in (3,4)
+);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
+2 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
+2 MATERIALIZED t2 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (3),(4)) `tvc_0` join `test`.`t2`) where `test`.`t2`.`b` = `tvc_0`.`3`
+explain extended select * from t1
+where a in
+(
+select a from t2
+where b in
+(
+select *
+from (values (3),(4)) as tvc_0
+)
+);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
+2 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
+2 MATERIALIZED t2 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (3),(4)) `tvc_0` join `test`.`t2`) where `test`.`t2`.`b` = `tvc_0`.`3`
+# derived table with IN-predicate
+select * from
+(
+select *
+from t1
+where a in (1,2)
+) as dr_table;
+a b
+1 2
+1 1
+2 5
+select * from
+(
+select *
+from t1
+where a in
+(
+select *
+from (values (1),(2))
+as tvc_0
+)
+) as dr_table;
+a b
+1 2
+1 1
+2 5
+explain extended select * from
+(
+select *
+from t1
+where a in (1,2)
+) as dr_table;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+explain extended select * from
+(
+select *
+from t1
+where a in
+(
+select *
+from (values (1),(2))
+as tvc_0
+)
+) as dr_table;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+# non-recursive CTE with IN-predicate
+with tvc_0 as
+(
+select *
+from t1
+where a in (1,2)
+)
+select * from tvc_0;
+a b
+1 2
+1 1
+2 5
+select * from
+(
+select *
+from t1
+where a in
+(
+select *
+from (values (1),(2))
+as tvc_0
+)
+) as dr_table;
+a b
+1 2
+1 1
+2 5
+explain extended with tvc_0 as
+(
+select *
+from t1
+where a in (1,2)
+)
+select * from tvc_0;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 with tvc_0 as (/* select#2 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` in (1,2))/* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+explain extended select * from
+(
+select *
+from t1
+where a in
+(
+select *
+from (values (1),(2))
+as tvc_0
+)
+) as dr_table;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+# VIEW with IN-predicate
+create view v1 as
+select *
+from t1
+where a in (1,2);
+create view v2 as
+select *
+from t1
+where a in
+(
+select *
+from (values (1),(2))
+as tvc_0
+)
+;
+select * from v1;
+a b
+1 2
+1 1
+2 5
+select * from v2;
+a b
+1 2
+1 1
+2 5
+explain extended select * from v1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+explain extended select * from v2;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+drop view v1,v2;
+# subselect defined by derived table with IN-predicate
+select * from t1
+where a in
+(
+select 1
+from
+(
+select *
+from t1
+where a in (1,2)
+)
+as dr_table
+);
+a b
+1 2
+1 1
+select * from t1
+where a in
+(
+select 1
+from
+(
+select *
+from t1
+where a in
+(
+select *
+from (values (1),(2))
+as tvc_0
+)
+)
+as dr_table
+);
+a b
+1 2
+1 1
+explain extended select * from t1
+where a in
+(
+select 1
+from
+(
+select *
+from t1
+where a in (1,2)
+)
+as dr_table
+);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
+2 MATERIALIZED <derived5> ALL NULL NULL NULL NULL 2 100.00
+2 MATERIALIZED t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+5 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0` join `test`.`t1`) where `test`.`t1`.`a` = 1 and `test`.`t1`.`a` = `tvc_0`.`1`
+explain extended select * from t1
+where a in
+(
+select 1
+from
+(
+select *
+from t1
+where a in
+(
+select *
+from (values (1),(2))
+as tvc_0
+)
+)
+as dr_table
+);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
+2 MATERIALIZED <derived5> ALL NULL NULL NULL NULL 2 100.00
+2 MATERIALIZED t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+5 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0` join `test`.`t1`) where `test`.`t1`.`a` = 1 and `test`.`t1`.`a` = `tvc_0`.`1`
+# derived table with IN-predicate and group by
+select * from
+(
+select max(a),b
+from t1
+where b in (3,5)
+group by b
+) as dr_table;
+max(a) b
+2 5
+select * from
+(
+select max(a),b
+from t1
+where b in
+(
+select *
+from (values (3),(5))
+as tvc_0
+)
+group by b
+) as dr_table;
+max(a) b
+2 5
+explain extended select * from
+(
+select max(a),b
+from t1
+where b in (3,5)
+group by b
+) as dr_table;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 12 100.00
+2 DERIVED t1 ALL NULL NULL NULL NULL 6 100.00 Using temporary; Using filesort
+2 DERIVED <subquery3> eq_ref distinct_key distinct_key 4 func 1 100.00
+3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `dr_table`.`max(a)` AS `max(a)`,`dr_table`.`b` AS `b` from (/* select#2 */ select max(`test`.`t1`.`a`) AS `max(a)`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (3),(5)) `tvc_0`) where 1 group by `test`.`t1`.`b`) `dr_table`
+explain extended select * from
+(
+select max(a),b
+from t1
+where b in
+(
+select *
+from (values (3),(5))
+as tvc_0
+)
+group by b
+) as dr_table;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 12 100.00
+2 DERIVED t1 ALL NULL NULL NULL NULL 6 100.00 Using temporary; Using filesort
+2 DERIVED <subquery3> eq_ref distinct_key distinct_key 4 func 1 100.00
+3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `dr_table`.`max(a)` AS `max(a)`,`dr_table`.`b` AS `b` from (/* select#2 */ select max(`test`.`t1`.`a`) AS `max(a)`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (3),(5)) `tvc_0`) where 1 group by `test`.`t1`.`b`) `dr_table`
+# prepare statement
+prepare stmt from "select * from t1 where a in (1,2)";
+execute stmt;
+a b
+1 2
+1 1
+2 5
+execute stmt;
+a b
+1 2
+1 1
+2 5
+deallocate prepare stmt;
+# use inside out access from tvc rows
+set @@in_predicate_conversion_threshold= default;
+select * from t3 where a in (1,4,10);
+a b
+1 abc
+1 todd
+1 sm
+4 yq
+10 abc
+explain extended select * from t3 where a in (1,4,10);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t3 range idx idx 5 NULL 5 100.00 Using index condition
+Warnings:
+Note 1003 select `test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t3` where `test`.`t3`.`a` in (1,4,10)
+set @@in_predicate_conversion_threshold= 2;
+select * from t3 where a in (1,4,10);
+a b
+1 abc
+1 todd
+1 sm
+4 yq
+10 abc
+explain extended select * from t3 where a in (1,4,10);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t3 ref idx idx 5 tvc_0.1 3 100.00
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t3` semi join ((values (1),(4),(10)) `tvc_0`) where `test`.`t3`.`a` = `tvc_0`.`1`
+# use vectors in IN predeicate
+set @@in_predicate_conversion_threshold= 4;
+select * from t1 where (a,b) in ((1,2),(3,4));
+a b
+1 2
+explain extended select * from t1 where (a,b) in ((1,2),(3,4));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1,2),(3,4)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1` and `test`.`t1`.`b` = `tvc_0`.`2`
+set @@in_predicate_conversion_threshold= 2;
+# trasformation works for the one IN predicate and doesn't work for the other
+set @@in_predicate_conversion_threshold= 5;
+select * from t2
+where (a,b) in ((1,2),(8,9)) and
+(a,c) in ((1,3),(8,0),(5,1));
+a b c
+1 2 3
+8 9 0
+explain extended select * from t2
+where (a,b) in ((1,2),(8,9)) and
+(a,c) in ((1,3),(8,0),(5,1));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t2 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` semi join ((values (1,3),(8,0),(5,1)) `tvc_0`) where `test`.`t2`.`a` = `tvc_0`.`1` and `test`.`t2`.`c` = `tvc_0`.`3` and (`tvc_0`.`1`,`test`.`t2`.`b`) in (<cache>((1,2)),<cache>((8,9)))
+set @@in_predicate_conversion_threshold= 2;
+#
+# mdev-14281: conversion of NOT IN predicate into subquery predicate
+#
+select * from t1
+where (a,b) not in ((1,2),(8,9), (5,1));
+a b
+4 6
+9 7
+1 1
+2 5
+7 8
+select * from t1
+where (a,b) not in (select * from (values (1,2),(8,9), (5,1)) as tvc_0);
+a b
+4 6
+9 7
+1 1
+2 5
+7 8
+explain extended select * from t1
+where (a,b) not in ((1,2),(8,9), (5,1));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),(`test`.`t1`.`a`,`test`.`t1`.`b`) in ( <materialize> (/* select#2 */ select `tvc_0`.`1`,`tvc_0`.`2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`1` and `test`.`t1`.`b` = `<subquery2>`.`2`))))
+explain extended select * from t1
+where (a,b) not in (select * from (values (1,2),(8,9), (5,1)) as tvc_0);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),(`test`.`t1`.`a`,`test`.`t1`.`b`) in ( <materialize> (/* select#2 */ select `tvc_0`.`1`,`tvc_0`.`2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`1` and `test`.`t1`.`b` = `<subquery2>`.`2`))))
+select * from t1
+where b < 7 and (a,b) not in ((1,2),(8,9), (5,1));
+a b
+4 6
+1 1
+2 5
+explain extended select * from t1
+where b < 7 and (a,b) not in ((1,2),(8,9), (5,1));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`b` < 7 and !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),(`test`.`t1`.`a`,`test`.`t1`.`b`) in ( <materialize> (/* select#2 */ select `tvc_0`.`1`,`tvc_0`.`2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`1` and `test`.`t1`.`b` = `<subquery2>`.`2`))))
+select * from t2
+where (a,c) not in ((1,2),(8,9), (5,1));
+a b c
+1 2 3
+5 1 2
+4 3 7
+8 9 0
+10 7 1
+explain extended select * from t2
+where (a,c) not in ((1,2),(8,9), (5,1));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t2 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where !<expr_cache><`test`.`t2`.`a`,`test`.`t2`.`c`>(<in_optimizer>((`test`.`t2`.`a`,`test`.`t2`.`c`),(`test`.`t2`.`a`,`test`.`t2`.`c`) in ( <materialize> (/* select#2 */ select `tvc_0`.`1`,`tvc_0`.`2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t2`.`a` in <temporary table> on distinct_key where `test`.`t2`.`a` = `<subquery2>`.`1` and `test`.`t2`.`c` = `<subquery2>`.`2`))))
+drop table t1, t2, t3;
+set @@in_predicate_conversion_threshold= default;
+#
+# MDEV-14947: conversion of TVC with only NULL values
+#
+CREATE TABLE t1 (i INT);
+INSERT INTO t1 VALUES (3), (2), (7);
+SELECT * FROM t1 WHERE i IN (NULL, NULL, NULL, NULL, NULL);
+i
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE i IN (NULL, NULL, NULL, NULL, NULL);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`i` AS `i` from `test`.`t1` where `test`.`t1`.`i` in (NULL,NULL,NULL,NULL,NULL)
+SET in_predicate_conversion_threshold= 5;
+SELECT * FROM t1 WHERE i IN (NULL, NULL, NULL, NULL, NULL);
+i
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE i IN (NULL, NULL, NULL, NULL, NULL);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
+1 PRIMARY <derived3> ALL NULL NULL NULL NULL 2 100.00 Using where; FirstMatch(t1); Using join buffer (flat, BNL join)
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`i` AS `i` from `test`.`t1` semi join ((values (NULL),(NULL),(NULL),(NULL),(NULL)) `tvc_0`) where `test`.`t1`.`i` = `tvc_0`.`NULL`
+SET in_predicate_conversion_threshold= default;
+DROP TABLE t1;
diff --git a/mysql-test/r/order_by.result b/mysql-test/r/order_by.result
index 1ca3034c610..e2b05ccec9e 100644
--- a/mysql-test/r/order_by.result
+++ b/mysql-test/r/order_by.result
@@ -2635,7 +2635,7 @@ SELECT t1.*, t2.* FROM t1 JOIN t2 ON t1.i1 = t2.i2
LEFT JOIN t3 ON t2.i2 = t3.i3
ORDER BY t1.i1 LIMIT 5;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t3 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t3 system NULL NULL NULL NULL 0 0.00 Const row not found
1 SIMPLE t1 index PRIMARY PRIMARY 4 NULL 5 100.00 Using index
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.i1 1 100.00 Using index
Warnings:
diff --git a/mysql-test/r/outfile.result b/mysql-test/r/outfile.result
index cafa9d9db4d..4c439c37e4d 100644
--- a/mysql-test/r/outfile.result
+++ b/mysql-test/r/outfile.result
Binary files differ
diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result
index d8cc53ee976..fd76da09d78 100644
--- a/mysql-test/r/partition.result
+++ b/mysql-test/r/partition.result
@@ -513,6 +513,9 @@ COUNT(*)
SELECT SUM(c) FROM t1 WHERE b NOT IN ( 1,2,6,7,9,10,11 );
SUM(c)
400
+SELECT SUM(c+0.0) FROM t1 WHERE b NOT IN ( 1,2,6,7,9,10,11 );
+SUM(c+0.0)
+400.0
ALTER TABLE t1 DROP INDEX b;
SELECT COUNT(*) FROM t1 WHERE b NOT IN ( 1,2,6,7,9,10,11 );
COUNT(*)
diff --git a/mysql-test/r/partition_alter.result b/mysql-test/r/partition_alter.result
index 6aa0039c8d2..e42604ba056 100644
--- a/mysql-test/r/partition_alter.result
+++ b/mysql-test/r/partition_alter.result
@@ -120,3 +120,10 @@ t1 CREATE TABLE `t1` (
PARTITION `p02` ENGINE = MyISAM,
PARTITION `p03` ENGINE = MyISAM)
drop table t1;
+create or replace table t1 (x int) partition by hash (x) (partition p1, partition p2);
+lock table t1 write;
+alter table t1 add partition (partition p1);
+ERROR HY000: Duplicate partition name p1
+alter table t1 add partition (partition p1);
+ERROR HY000: Duplicate partition name p1
+drop table t1;
diff --git a/mysql-test/r/partition_exchange.result b/mysql-test/r/partition_exchange.result
index f37ba183560..3bce5aec8e2 100644
--- a/mysql-test/r/partition_exchange.result
+++ b/mysql-test/r/partition_exchange.result
@@ -40,7 +40,8 @@ Create Table CREATE TABLE `t2` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE InnoDB
@@ -76,7 +77,8 @@ Create Table CREATE TABLE `t2` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE InnoDB
@@ -124,7 +126,8 @@ Create Table CREATE TABLE `t2` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE InnoDB
@@ -184,7 +187,8 @@ Create Table CREATE TABLE `t2` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE InnoDB
@@ -244,7 +248,8 @@ Create Table CREATE TABLE `t2` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE InnoDB
@@ -304,7 +309,8 @@ Create Table CREATE TABLE `t2` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE InnoDB
@@ -361,7 +367,8 @@ Create Table CREATE TABLE `t2` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE InnoDB
@@ -418,7 +425,8 @@ Create Table CREATE TABLE `t2` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE InnoDB
diff --git a/mysql-test/r/partition_innodb.result b/mysql-test/r/partition_innodb.result
index 1d8e11d9796..d27abc07984 100644
--- a/mysql-test/r/partition_innodb.result
+++ b/mysql-test/r/partition_innodb.result
@@ -29,7 +29,7 @@ Table Op Msg_type Msg_text
test.t1 analyze status OK
EXPLAIN SELECT b FROM t1 WHERE b between 'L' and 'N' AND a > -100;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 range PRIMARY,b b 67 NULL 18 Using where; Using index
+1 SIMPLE t1 range PRIMARY,b b 67 NULL 34 Using where; Using index
DROP TABLE t1;
#
# Bug#13007154: Crash in keys_to_use_for_scanning with ORDER BY
@@ -663,7 +663,7 @@ EXPLAIN SELECT * FROM t1 WHERE col1 = 1 AND col2 = 2
AND col3 BETWEEN '2013-03-08 00:00:00' AND '2013-03-12 12:00:00'
GROUP BY 1, 2, 3;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index_merge PRIMARY,col1,col2 col1,col2 8,8 NULL # Using intersect(col1,col2); Using where; Using index; Using filesort
+1 SIMPLE t1 range PRIMARY,col1,col2 PRIMARY 5 NULL # Using where; Using filesort
SELECT * FROM t1 USE INDEX () WHERE col1 = 1 AND col2 = 2
AND col3 BETWEEN '2013-03-08 00:00:00' AND '2013-03-12 12:00:00'
GROUP BY 1, 2, 3;
@@ -852,8 +852,6 @@ SUBPARTITION BY KEY(f6) SUBPARTITIONS 4 (
PARTITION p0 VALUES IN (1,3,9,null),
PARTITION p1 VALUES IN (2,4,0)
);
-Warnings:
-Warning 1071 Specified key was too long; max key length is 767 bytes
INSERT INTO t2 VALUES
('k','s',3,'b','j'),('a','b',NULL,'v','j'),('c','m',9,'t',NULL),
('b','l',9,'b',NULL),('i','y',3,'o','w'),('c','m',NULL,'a','m'),
diff --git a/mysql-test/r/partition_pruning.result b/mysql-test/r/partition_pruning.result
index 0fb24b74218..422132dd1c3 100644
--- a/mysql-test/r/partition_pruning.result
+++ b/mysql-test/r/partition_pruning.result
@@ -18,7 +18,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
# # # # # # # # # 3 #
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 7;
id select_type table partitions type possible_keys key key_len ref rows Extra
-# # # # # # # # # 10 #
+# # # # # # # # # 9 #
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 1;
id select_type table partitions type possible_keys key key_len ref rows Extra
# # # # # # # # # 3 #
@@ -105,7 +105,7 @@ a
6
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 7;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 10 Using where; Using index
+1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max range PRIMARY PRIMARY 4 NULL 9 Using where; Using index
SELECT * FROM t1 WHERE a <= 1;
a
-1
@@ -168,7 +168,7 @@ a
6
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 6;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 10 Using where; Using index
+1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max range PRIMARY PRIMARY 4 NULL 9 Using where; Using index
SELECT * FROM t1 WHERE a <= 7;
a
-1
@@ -182,7 +182,7 @@ a
7
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 7;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max index PRIMARY PRIMARY 4 NULL 10 Using where; Using index
+1 SIMPLE t1 p0,p1,p2,p3,p4,p5,max range PRIMARY PRIMARY 4 NULL 9 Using where; Using index
SELECT * FROM t1 WHERE a = 1;
a
1
@@ -424,7 +424,7 @@ a
5
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 6;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0,p1,p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 9 Using where; Using index
+1 SIMPLE t1 p0,p1,p2,p3,p4,max range PRIMARY PRIMARY 4 NULL 8 Using where; Using index
SELECT * FROM t1 WHERE a <= 1;
a
-1
@@ -474,7 +474,7 @@ a
5
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 5;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0,p1,p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 9 Using where; Using index
+1 SIMPLE t1 p0,p1,p2,p3,p4,max range PRIMARY PRIMARY 4 NULL 8 Using where; Using index
SELECT * FROM t1 WHERE a <= 6;
a
-1
@@ -487,7 +487,7 @@ a
6
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 6;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0,p1,p2,p3,p4,max index PRIMARY PRIMARY 4 NULL 9 Using where; Using index
+1 SIMPLE t1 p0,p1,p2,p3,p4,max range PRIMARY PRIMARY 4 NULL 8 Using where; Using index
SELECT * FROM t1 WHERE a = 1;
a
1
@@ -744,13 +744,13 @@ a
1001-01-01
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
+1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 3 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
+1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 3 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 range a a 4 NULL 3 Using where; Using index
+1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 range a a 4 NULL 4 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pNULL,p2001-01-01 range a a 4 NULL 3 Using where; Using index
@@ -759,26 +759,26 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p1001-01-01 system a NULL NULL NULL 1
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1001-00-00';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
+1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 3 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-00-00';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
+1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 3 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-00-00';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 range a a 4 NULL 3 Using where; Using index
+1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 range a a 4 NULL 4 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a > '1001-00-00';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 range a a 4 NULL 3 Using where; Using index
+1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 range a a 4 NULL 4 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a = '1001-00-00';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pNULL ref a a 4 const 1 Using index
# Disabling warnings for the invalid date
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1999-02-31';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 range a a 4 NULL 4 Using where; Using index
+1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 range a a 4 NULL 5 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 range a a 4 NULL 4 Using where; Using index
+1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 range a a 4 NULL 5 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pNULL,p2001-01-01 index a a 4 NULL 4 Using where; Using index
@@ -790,16 +790,16 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pNULL ref a a 4 const 1 Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 range a a 4 NULL 4 Using where; Using index
+1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01,p2001-01-01 range a a 4 NULL 5 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
+1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 3 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 index a a 4 NULL 5 Using where; Using index
+1 SIMPLE t1 pNULL,p1001-01-01,p2001-01-01 range a a 4 NULL 3 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-01' AND '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 index a a 4 NULL 6 Using where; Using index
+1 SIMPLE t1 pNULL,p0001-01-01,p1001-01-01 range a a 4 NULL 3 Using where; Using index
# test without index
ALTER TABLE t1 DROP KEY a;
SELECT * FROM t1 WHERE a < '1001-01-01';
@@ -1076,7 +1076,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 range a a 4 NULL 3 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 3 Using where; Using index
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 range a a 4 NULL 4 Using where; Using index
@@ -1104,10 +1104,10 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
# Disabling warnings for the invalid date
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1999-02-31';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
@@ -1119,10 +1119,10 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pNULL ref a a 4 const 1 Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 3 Using where; Using index
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pNULL,p1001-01-01 index a a 4 NULL 4 Using where; Using index
@@ -1405,7 +1405,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02 range a a 4 NULL 3 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 3 Using where; Using index
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p2001-01-01,pNULL,p1001-01-01 range a a 4 NULL 4 Using where; Using index
@@ -1433,10 +1433,10 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
# Disabling warnings for the invalid date
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < '1999-02-31';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= '1999-02-31';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a >= '1999-02-31';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p2001-01-01,pNULL index a a 4 NULL 4 Using where; Using index
@@ -1448,10 +1448,10 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pNULL ref a a 4 const 1 Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1002-00-00';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 5 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0000-00-00' AND '1001-01-01';
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 3 Using where; Using index
+1 SIMPLE t1 p0001-01-01,pNULL,p0000-01-02,p1001-01-01 range a a 4 NULL 4 Using where; Using index
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a BETWEEN '0001-01-02' AND '1002-00-00';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pNULL,p1001-01-01 index a a 4 NULL 4 Using where; Using index
@@ -2867,18 +2867,18 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1,p2 ALL NULL NULL NULL NULL 510 Using where
explain partitions select * from t2 where b = 4;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 p0,p1,p2,p3,p4 ref b b 5 const 96
+1 SIMPLE t2 p0,p1,p2,p3,p4 ref b b 5 const 76
explain extended select * from t2 where b = 6;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 ref b b 5 const 96 100.00
+1 SIMPLE t2 ref b b 5 const 76 100.00
Warnings:
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where `test`.`t2`.`b` = 6
explain partitions select * from t2 where b = 6;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 p0,p1,p2,p3,p4 ref b b 5 const 96
+1 SIMPLE t2 p0,p1,p2,p3,p4 ref b b 5 const 76
explain extended select * from t2 where b in (1,3,5);
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 ALL b NULL NULL NULL 910 51.65 Using where
+1 SIMPLE t2 ALL b NULL NULL NULL 910 40.66 Using where
Warnings:
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where `test`.`t2`.`b` in (1,3,5)
explain partitions select * from t2 where b in (1,3,5);
@@ -2886,7 +2886,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL b NULL NULL NULL 910 Using where
explain extended select * from t2 where b in (2,4,6);
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 ALL b NULL NULL NULL 910 31.65 Using where
+1 SIMPLE t2 ALL b NULL NULL NULL 910 25.05 Using where
Warnings:
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where `test`.`t2`.`b` in (2,4,6)
explain partitions select * from t2 where b in (2,4,6);
@@ -2894,7 +2894,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL b NULL NULL NULL 910 Using where
explain extended select * from t2 where b in (7,8,9);
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 ALL b NULL NULL NULL 910 19.12 Using where
+1 SIMPLE t2 ALL b NULL NULL NULL 910 36.70 Using where
Warnings:
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where `test`.`t2`.`b` in (7,8,9)
explain partitions select * from t2 where b in (7,8,9);
@@ -2902,7 +2902,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL b NULL NULL NULL 910 Using where
explain extended select * from t2 where b > 5;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 ALL b NULL NULL NULL 910 29.23 Using where
+1 SIMPLE t2 ALL b NULL NULL NULL 910 44.84 Using where
Warnings:
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where `test`.`t2`.`b` > 5
explain partitions select * from t2 where b > 5;
@@ -2910,7 +2910,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL b NULL NULL NULL 910 Using where
explain extended select * from t2 where b > 5 and b < 8;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 ALL b NULL NULL NULL 910 28.13 Using where
+1 SIMPLE t2 ALL b NULL NULL NULL 910 22.09 Using where
Warnings:
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where `test`.`t2`.`b` > 5 and `test`.`t2`.`b` < 8
explain partitions select * from t2 where b > 5 and b < 8;
@@ -2918,15 +2918,15 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1,p2,p3,p4 ALL b NULL NULL NULL 910 Using where
explain extended select * from t2 where b > 5 and b < 7;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 range b b 5 NULL 96 100.00 Using where
+1 SIMPLE t2 range b b 5 NULL 76 100.00 Using where
Warnings:
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where `test`.`t2`.`b` > 5 and `test`.`t2`.`b` < 7
explain partitions select * from t2 where b > 5 and b < 7;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 p0,p1,p2,p3,p4 range b b 5 NULL 96 Using where
+1 SIMPLE t2 p0,p1,p2,p3,p4 range b b 5 NULL 76 Using where
explain extended select * from t2 where b > 0 and b < 5;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 ALL b NULL NULL NULL 910 53.19 Using where
+1 SIMPLE t2 ALL b NULL NULL NULL 910 41.65 Using where
Warnings:
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where `test`.`t2`.`b` > 0 and `test`.`t2`.`b` < 5
explain partitions select * from t2 where b > 0 and b < 5;
@@ -2960,10 +2960,10 @@ flush status;
delete from t2 where b = 7;
show status like 'Handler_read_rnd_next';
Variable_name Value
-Handler_read_rnd_next 915
+Handler_read_rnd_next 0
show status like 'Handler_read_key';
Variable_name Value
-Handler_read_key 0
+Handler_read_key 5
flush status;
delete from t2 where b > 5;
show status like 'Handler_read_rnd_next';
@@ -3136,7 +3136,7 @@ drop table t2;
create table t1 (s1 int);
explain partitions select 1 from t1 union all select 2;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 NULL system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 NULL system NULL NULL NULL NULL 0 Const row not found
2 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
drop table t1;
create table t1 (a bigint unsigned not null) partition by range(a) (
diff --git a/mysql-test/r/partition_range.result b/mysql-test/r/partition_range.result
index dd9e074db0c..7ae029d488c 100644
--- a/mysql-test/r/partition_range.result
+++ b/mysql-test/r/partition_range.result
@@ -961,7 +961,7 @@ INSERT INTO t2 SELECT * FROM t1;
# plans should be identical
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 range a a 5 NULL 1 Using where; Using index for group-by
+1 SIMPLE t1 range a a 5 NULL 2 Using where; Using index
EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 range a a 5 NULL 2 Using where; Using index for group-by
@@ -972,7 +972,7 @@ a MAX(b)
# Should be no more than 4 reads.
SHOW status LIKE 'handler_read_key';
Variable_name Value
-Handler_read_key 4
+Handler_read_key 2
FLUSH status;
SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a;
a MAX(b)
diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result
index 4da54e6d9aa..45e3f60e431 100644
--- a/mysql-test/r/ps.result
+++ b/mysql-test/r/ps.result
@@ -1207,22 +1207,25 @@ SET @aux= "SELECT COUNT(*)
prepare my_stmt from @aux;
execute my_stmt;
COUNT(*)
-46
+47
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
execute my_stmt;
COUNT(*)
-46
+47
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
execute my_stmt;
COUNT(*)
-46
+47
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
deallocate prepare my_stmt;
drop procedure if exists p1|
drop table if exists t1|
@@ -4810,7 +4813,7 @@ EXECUTE IMMEDIATE MAX('SELECT 1 AS c');
ERROR HY000: Invalid use of group function
EXECUTE IMMEDIATE DEFAULT(a);
ERROR 42S22: Unknown column 'a' in 'field list'
-EXECUTE IMMEDIATE VALUES(a);
+EXECUTE IMMEDIATE VALUE(a);
ERROR 42S22: Unknown column 'a' in 'field list'
CREATE FUNCTION f1() RETURNS VARCHAR(64) RETURN 't1';
EXECUTE IMMEDIATE f1();
diff --git a/mysql-test/r/query_cache.result b/mysql-test/r/query_cache.result
index eb9b1d16011..bb8703b4185 100644
--- a/mysql-test/r/query_cache.result
+++ b/mysql-test/r/query_cache.result
@@ -235,7 +235,7 @@ select benchmark(1,1) from t1;
benchmark(1,1)
explain extended select benchmark(1,1) from t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select benchmark(1,1) AS `benchmark(1,1)` from `test`.`t1`
show status like "Qcache_queries_in_cache";
diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result
index 735a0069ba0..e2996b963bc 100644
--- a/mysql-test/r/range.result
+++ b/mysql-test/r/range.result
@@ -1,4 +1,3 @@
-drop table if exists t1, t2, t3, t10, t100;
CREATE TABLE t1 (
event_date date DEFAULT '0000-00-00' NOT NULL,
type int(11) DEFAULT '0' NOT NULL,
@@ -1063,7 +1062,9 @@ set @b= concat("explain ", @a);
prepare stmt1 from @b;
execute stmt1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 index a a 5 NULL 1003 Using where; Using index
+1 PRIMARY t2 index NULL a 5 NULL 1003 Using where; Using index
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
prepare stmt1 from @a;
execute stmt1;
a
@@ -2283,7 +2284,7 @@ explain extended select * from t2 where (b > 25 and b < 15) or (a>55 and a<44);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
-Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where 0
+Note 1003 select 44 AS `a`,15 AS `b`,NULL AS `c` from `test`.`t2` where 0
drop table t1,t2;
#
# Start of 10.1 tests
diff --git a/mysql-test/r/range_mrr_icp.result b/mysql-test/r/range_mrr_icp.result
index afce3c66c21..629d183bee7 100644
--- a/mysql-test/r/range_mrr_icp.result
+++ b/mysql-test/r/range_mrr_icp.result
@@ -1,6 +1,5 @@
set @mrr_icp_extra_tmp=@@optimizer_switch;
set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on';
-drop table if exists t1, t2, t3, t10, t100;
CREATE TABLE t1 (
event_date date DEFAULT '0000-00-00' NOT NULL,
type int(11) DEFAULT '0' NOT NULL,
@@ -1065,7 +1064,9 @@ set @b= concat("explain ", @a);
prepare stmt1 from @b;
execute stmt1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 index a a 5 NULL 1003 Using where; Using index
+1 PRIMARY t2 index NULL a 5 NULL 1003 Using where; Using index
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
prepare stmt1 from @a;
execute stmt1;
a
@@ -2285,7 +2286,7 @@ explain extended select * from t2 where (b > 25 and b < 15) or (a>55 and a<44);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
-Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where 0
+Note 1003 select 44 AS `a`,15 AS `b`,NULL AS `c` from `test`.`t2` where 0
drop table t1,t2;
#
# Start of 10.1 tests
diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result
index 713f9e4d0d7..9b6a570717b 100644
--- a/mysql-test/r/select.result
+++ b/mysql-test/r/select.result
@@ -2330,7 +2330,7 @@ insert into t4 values (1,1);
explain select * from t1 left join t2 on id1 = id2 left join t3 on id1 = id3
left join t4 on id3 = id4 where id2 = 1 or id4 = 1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t3 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t3 system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t4 const id4 NULL NULL NULL 1
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
1 SIMPLE t2 ALL NULL NULL NULL NULL 1 Using where
@@ -4660,17 +4660,17 @@ DROP TABLE t1;
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL);
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND c=c) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a AND b=b) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND a=a) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
DROP TABLE t1;
@@ -5482,7 +5482,7 @@ WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
-Note 1003 select 1 AS `i1`,8 AS `j1`,`test`.`t2`.`i2` AS `i2` from `test`.`t2` where 0
+Note 1003 select 1 AS `i1`,8 AS `j1`,NULL AS `i2` from `test`.`t2` where 0
SELECT * FROM t1, t2
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
i1 j1 i2
diff --git a/mysql-test/r/select_found.result b/mysql-test/r/select_found.result
index 8462e19fda8..2c37c2d28d8 100644
--- a/mysql-test/r/select_found.result
+++ b/mysql-test/r/select_found.result
@@ -83,7 +83,7 @@ UNIQUE KEY e_n (email,name)
);
EXPLAIN SELECT SQL_CALC_FOUND_ROWS DISTINCT email FROM t2 LEFT JOIN t1 ON kid = t2.id WHERE t1.id IS NULL LIMIT 10;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system PRIMARY,kid NULL NULL NULL 0 const row not found; Using temporary
+1 SIMPLE t1 system PRIMARY,kid NULL NULL NULL 0 Const row not found; Using temporary
1 SIMPLE t2 ALL NULL NULL NULL NULL 200
SELECT SQL_CALC_FOUND_ROWS DISTINCT email FROM t2 LEFT JOIN t1 ON kid = t2.id WHERE t1.id IS NULL LIMIT 10;
email
diff --git a/mysql-test/r/select_jcl6.result b/mysql-test/r/select_jcl6.result
index ffd1d4d5088..d78fad15da1 100644
--- a/mysql-test/r/select_jcl6.result
+++ b/mysql-test/r/select_jcl6.result
@@ -2341,7 +2341,7 @@ insert into t4 values (1,1);
explain select * from t1 left join t2 on id1 = id2 left join t3 on id1 = id3
left join t4 on id3 = id4 where id2 = 1 or id4 = 1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t3 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t3 system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t4 const id4 NULL NULL NULL 1
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
1 SIMPLE t2 hash_ALL NULL #hash#$hj 4 test.t1.id1 1 Using where; Using join buffer (flat, BNLH join)
@@ -4671,17 +4671,17 @@ DROP TABLE t1;
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL);
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND c=c) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a AND b=b) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND a=a) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
DROP TABLE t1;
@@ -5493,7 +5493,7 @@ WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
-Note 1003 select 1 AS `i1`,8 AS `j1`,`test`.`t2`.`i2` AS `i2` from `test`.`t2` where 0
+Note 1003 select 1 AS `i1`,8 AS `j1`,NULL AS `i2` from `test`.`t2` where 0
SELECT * FROM t1, t2
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
i1 j1 i2
diff --git a/mysql-test/r/select_pkeycache.result b/mysql-test/r/select_pkeycache.result
index 713f9e4d0d7..9b6a570717b 100644
--- a/mysql-test/r/select_pkeycache.result
+++ b/mysql-test/r/select_pkeycache.result
@@ -2330,7 +2330,7 @@ insert into t4 values (1,1);
explain select * from t1 left join t2 on id1 = id2 left join t3 on id1 = id3
left join t4 on id3 = id4 where id2 = 1 or id4 = 1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t3 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t3 system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t4 const id4 NULL NULL NULL 1
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
1 SIMPLE t2 ALL NULL NULL NULL NULL 1 Using where
@@ -4660,17 +4660,17 @@ DROP TABLE t1;
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL);
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND c=c) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a AND b=b) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND a=a) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
DROP TABLE t1;
@@ -5482,7 +5482,7 @@ WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
-Note 1003 select 1 AS `i1`,8 AS `j1`,`test`.`t2`.`i2` AS `i2` from `test`.`t2` where 0
+Note 1003 select 1 AS `i1`,8 AS `j1`,NULL AS `i2` from `test`.`t2` where 0
SELECT * FROM t1, t2
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
i1 j1 i2
diff --git a/mysql-test/r/selectivity.result b/mysql-test/r/selectivity.result
index 79b46183b60..9cb6ee3e9bf 100644
--- a/mysql-test/r/selectivity.result
+++ b/mysql-test/r/selectivity.result
@@ -141,7 +141,7 @@ order by s_suppkey;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY supplier ALL PRIMARY NULL NULL NULL 10 100.00 Using filesort
1 PRIMARY <derived3> ref key0 key0 5 dbt3_s001.supplier.s_suppkey 10 100.00 Using where
-3 LATERAL DERIVED lineitem range i_l_shipdate,i_l_suppkey i_l_shipdate 4 NULL 268 75.00 Using where
+3 DERIVED lineitem range i_l_shipdate,i_l_suppkey i_l_shipdate 4 NULL 268 100.00 Using where; Using temporary; Using filesort
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 268 100.00
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 268 100.00 Using where; Using temporary; Using filesort
Warnings:
@@ -162,7 +162,7 @@ order by s_suppkey;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY supplier ALL PRIMARY NULL NULL NULL 10 100.00 Using filesort
1 PRIMARY <derived3> ref key0 key0 5 dbt3_s001.supplier.s_suppkey 10 100.00 Using where
-3 LATERAL DERIVED lineitem range i_l_shipdate,i_l_suppkey i_l_shipdate 4 NULL 268 100.00 Using where
+3 DERIVED lineitem range i_l_shipdate,i_l_suppkey i_l_shipdate 4 NULL 268 100.00 Using where; Using temporary; Using filesort
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 268 100.00
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 268 100.00 Using where; Using temporary; Using filesort
Warnings:
@@ -400,7 +400,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 SUBQUERY customer ALL NULL NULL NULL NULL 150 100.00 Using where
Warnings:
Note 1276 Field or reference 'dbt3_s001.customer.c_custkey' of SELECT #4 was resolved in SELECT #2
-Note 1003 /* select#1 */ select substr(`dbt3_s001`.`customer`.`c_phone`,1,2) AS `cntrycode`,count(0) AS `numcust`,sum(`dbt3_s001`.`customer`.`c_acctbal`) AS `totacctbal` from `dbt3_s001`.`customer` where substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25') and `dbt3_s001`.`customer`.`c_acctbal` > (/* select#3 */ select avg(`dbt3_s001`.`customer`.`c_acctbal`) from `dbt3_s001`.`customer` where `dbt3_s001`.`customer`.`c_acctbal` > 0.00 and substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25')) and !<in_optimizer>(1,exists(/* select#4 */ select 1 from `dbt3_s001`.`orders` where `dbt3_s001`.`orders`.`o_custkey` = `dbt3_s001`.`customer`.`c_custkey`)) group by substr(`dbt3_s001`.`customer`.`c_phone`,1,2) order by substr(`dbt3_s001`.`customer`.`c_phone`,1,2)
+Note 1003 /* select#1 */ select substr(`dbt3_s001`.`customer`.`c_phone`,1,2) AS `cntrycode`,count(0) AS `numcust`,sum(`dbt3_s001`.`customer`.`c_acctbal`) AS `totacctbal` from `dbt3_s001`.`customer` where substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25') and `dbt3_s001`.`customer`.`c_acctbal` > (/* select#3 */ select avg(`dbt3_s001`.`customer`.`c_acctbal`) from `dbt3_s001`.`customer` where `dbt3_s001`.`customer`.`c_acctbal` > 0.00 and substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25')) and !<in_optimizer>(1,<expr_cache><`dbt3_s001`.`customer`.`c_custkey`>(exists(/* select#4 */ select 1 from `dbt3_s001`.`orders` where `dbt3_s001`.`orders`.`o_custkey` = `dbt3_s001`.`customer`.`c_custkey`))) group by substr(`dbt3_s001`.`customer`.`c_phone`,1,2) order by substr(`dbt3_s001`.`customer`.`c_phone`,1,2)
select cntrycode, count(*) as numcust, sum(c_acctbal) as totacctbal
from (
select substr(c_phone, 1, 2) as cntrycode, c_acctbal
@@ -441,7 +441,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 SUBQUERY customer ALL NULL NULL NULL NULL 150 91.00 Using where
Warnings:
Note 1276 Field or reference 'dbt3_s001.customer.c_custkey' of SELECT #4 was resolved in SELECT #2
-Note 1003 /* select#1 */ select substr(`dbt3_s001`.`customer`.`c_phone`,1,2) AS `cntrycode`,count(0) AS `numcust`,sum(`dbt3_s001`.`customer`.`c_acctbal`) AS `totacctbal` from `dbt3_s001`.`customer` where substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25') and `dbt3_s001`.`customer`.`c_acctbal` > (/* select#3 */ select avg(`dbt3_s001`.`customer`.`c_acctbal`) from `dbt3_s001`.`customer` where `dbt3_s001`.`customer`.`c_acctbal` > 0.00 and substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25')) and !<in_optimizer>(1,exists(/* select#4 */ select 1 from `dbt3_s001`.`orders` where `dbt3_s001`.`orders`.`o_custkey` = `dbt3_s001`.`customer`.`c_custkey`)) group by substr(`dbt3_s001`.`customer`.`c_phone`,1,2) order by substr(`dbt3_s001`.`customer`.`c_phone`,1,2)
+Note 1003 /* select#1 */ select substr(`dbt3_s001`.`customer`.`c_phone`,1,2) AS `cntrycode`,count(0) AS `numcust`,sum(`dbt3_s001`.`customer`.`c_acctbal`) AS `totacctbal` from `dbt3_s001`.`customer` where substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25') and `dbt3_s001`.`customer`.`c_acctbal` > (/* select#3 */ select avg(`dbt3_s001`.`customer`.`c_acctbal`) from `dbt3_s001`.`customer` where `dbt3_s001`.`customer`.`c_acctbal` > 0.00 and substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25')) and !<in_optimizer>(1,<expr_cache><`dbt3_s001`.`customer`.`c_custkey`>(exists(/* select#4 */ select 1 from `dbt3_s001`.`orders` where `dbt3_s001`.`orders`.`o_custkey` = `dbt3_s001`.`customer`.`c_custkey`))) group by substr(`dbt3_s001`.`customer`.`c_phone`,1,2) order by substr(`dbt3_s001`.`customer`.`c_phone`,1,2)
select cntrycode, count(*) as numcust, sum(c_acctbal) as totacctbal
from (
select substr(c_phone, 1, 2) as cntrycode, c_acctbal
@@ -784,7 +784,7 @@ select * from t1 where a < 1 and a > 7;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
-Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 0
+Note 1003 select 7 AS `a` from `test`.`t1` where 0
select * from t1 where a < 1 and a > 7;
a
drop table t1;
@@ -1508,7 +1508,7 @@ select * from t2 where col1 < 'b' and col1 > 'd';
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
-Note 1003 select `test`.`t2`.`col1` AS `col1` from `test`.`t2` where 0
+Note 1003 select 'd' AS `col1` from `test`.`t2` where 0
drop table t1,t2;
set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity;
set use_stat_tables=@save_use_stat_tables;
diff --git a/mysql-test/r/selectivity_innodb.result b/mysql-test/r/selectivity_innodb.result
index 71657288c66..236647c6091 100644
--- a/mysql-test/r/selectivity_innodb.result
+++ b/mysql-test/r/selectivity_innodb.result
@@ -144,7 +144,7 @@ order by s_suppkey;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY supplier index PRIMARY PRIMARY 4 NULL 10 100.00
1 PRIMARY <derived3> ref key0 key0 5 dbt3_s001.supplier.s_suppkey 10 100.00 Using where
-3 LATERAL DERIVED lineitem range i_l_shipdate,i_l_suppkey i_l_shipdate 4 NULL 229 75.11 Using where
+3 DERIVED lineitem range i_l_shipdate,i_l_suppkey i_l_shipdate 4 NULL 229 100.00 Using where; Using temporary; Using filesort
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 229 100.00
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 229 100.00 Using where; Using temporary; Using filesort
Warnings:
@@ -165,7 +165,7 @@ order by s_suppkey;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY supplier index PRIMARY PRIMARY 4 NULL 10 100.00
1 PRIMARY <derived3> ref key0 key0 5 dbt3_s001.supplier.s_suppkey 10 100.00 Using where
-3 LATERAL DERIVED lineitem range i_l_shipdate,i_l_suppkey i_l_shipdate 4 NULL 229 100.00 Using where
+3 DERIVED lineitem range i_l_shipdate,i_l_suppkey i_l_shipdate 4 NULL 229 100.00 Using where; Using temporary; Using filesort
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 228 100.00
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 229 100.00 Using where; Using temporary; Using filesort
Warnings:
@@ -403,7 +403,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 SUBQUERY customer ALL NULL NULL NULL NULL 150 100.00 Using where
Warnings:
Note 1276 Field or reference 'dbt3_s001.customer.c_custkey' of SELECT #4 was resolved in SELECT #2
-Note 1003 /* select#1 */ select substr(`dbt3_s001`.`customer`.`c_phone`,1,2) AS `cntrycode`,count(0) AS `numcust`,sum(`dbt3_s001`.`customer`.`c_acctbal`) AS `totacctbal` from `dbt3_s001`.`customer` where substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25') and `dbt3_s001`.`customer`.`c_acctbal` > (/* select#3 */ select avg(`dbt3_s001`.`customer`.`c_acctbal`) from `dbt3_s001`.`customer` where `dbt3_s001`.`customer`.`c_acctbal` > 0.00 and substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25')) and !<in_optimizer>(1,exists(/* select#4 */ select 1 from `dbt3_s001`.`orders` where `dbt3_s001`.`orders`.`o_custkey` = `dbt3_s001`.`customer`.`c_custkey`)) group by substr(`dbt3_s001`.`customer`.`c_phone`,1,2) order by substr(`dbt3_s001`.`customer`.`c_phone`,1,2)
+Note 1003 /* select#1 */ select substr(`dbt3_s001`.`customer`.`c_phone`,1,2) AS `cntrycode`,count(0) AS `numcust`,sum(`dbt3_s001`.`customer`.`c_acctbal`) AS `totacctbal` from `dbt3_s001`.`customer` where substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25') and `dbt3_s001`.`customer`.`c_acctbal` > (/* select#3 */ select avg(`dbt3_s001`.`customer`.`c_acctbal`) from `dbt3_s001`.`customer` where `dbt3_s001`.`customer`.`c_acctbal` > 0.00 and substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25')) and !<in_optimizer>(1,<expr_cache><`dbt3_s001`.`customer`.`c_custkey`>(exists(/* select#4 */ select 1 from `dbt3_s001`.`orders` where `dbt3_s001`.`orders`.`o_custkey` = `dbt3_s001`.`customer`.`c_custkey`))) group by substr(`dbt3_s001`.`customer`.`c_phone`,1,2) order by substr(`dbt3_s001`.`customer`.`c_phone`,1,2)
select cntrycode, count(*) as numcust, sum(c_acctbal) as totacctbal
from (
select substr(c_phone, 1, 2) as cntrycode, c_acctbal
@@ -444,7 +444,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 SUBQUERY customer ALL NULL NULL NULL NULL 150 91.00 Using where
Warnings:
Note 1276 Field or reference 'dbt3_s001.customer.c_custkey' of SELECT #4 was resolved in SELECT #2
-Note 1003 /* select#1 */ select substr(`dbt3_s001`.`customer`.`c_phone`,1,2) AS `cntrycode`,count(0) AS `numcust`,sum(`dbt3_s001`.`customer`.`c_acctbal`) AS `totacctbal` from `dbt3_s001`.`customer` where substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25') and `dbt3_s001`.`customer`.`c_acctbal` > (/* select#3 */ select avg(`dbt3_s001`.`customer`.`c_acctbal`) from `dbt3_s001`.`customer` where `dbt3_s001`.`customer`.`c_acctbal` > 0.00 and substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25')) and !<in_optimizer>(1,exists(/* select#4 */ select 1 from `dbt3_s001`.`orders` where `dbt3_s001`.`orders`.`o_custkey` = `dbt3_s001`.`customer`.`c_custkey`)) group by substr(`dbt3_s001`.`customer`.`c_phone`,1,2) order by substr(`dbt3_s001`.`customer`.`c_phone`,1,2)
+Note 1003 /* select#1 */ select substr(`dbt3_s001`.`customer`.`c_phone`,1,2) AS `cntrycode`,count(0) AS `numcust`,sum(`dbt3_s001`.`customer`.`c_acctbal`) AS `totacctbal` from `dbt3_s001`.`customer` where substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25') and `dbt3_s001`.`customer`.`c_acctbal` > (/* select#3 */ select avg(`dbt3_s001`.`customer`.`c_acctbal`) from `dbt3_s001`.`customer` where `dbt3_s001`.`customer`.`c_acctbal` > 0.00 and substr(`dbt3_s001`.`customer`.`c_phone`,1,2) in ('10','20','14','19','11','28','25')) and !<in_optimizer>(1,<expr_cache><`dbt3_s001`.`customer`.`c_custkey`>(exists(/* select#4 */ select 1 from `dbt3_s001`.`orders` where `dbt3_s001`.`orders`.`o_custkey` = `dbt3_s001`.`customer`.`c_custkey`))) group by substr(`dbt3_s001`.`customer`.`c_phone`,1,2) order by substr(`dbt3_s001`.`customer`.`c_phone`,1,2)
select cntrycode, count(*) as numcust, sum(c_acctbal) as totacctbal
from (
select substr(c_phone, 1, 2) as cntrycode, c_acctbal
@@ -791,7 +791,7 @@ select * from t1 where a < 1 and a > 7;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
-Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 0
+Note 1003 select 7 AS `a` from `test`.`t1` where 0
select * from t1 where a < 1 and a > 7;
a
drop table t1;
@@ -1518,7 +1518,7 @@ select * from t2 where col1 < 'b' and col1 > 'd';
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
-Note 1003 select `test`.`t2`.`col1` AS `col1` from `test`.`t2` where 0
+Note 1003 select 'd' AS `col1` from `test`.`t2` where 0
drop table t1,t2;
set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity;
set use_stat_tables=@save_use_stat_tables;
diff --git a/mysql-test/r/set_statement.result b/mysql-test/r/set_statement.result
index 406ca99a5ea..5bcf8252aae 100644
--- a/mysql-test/r/set_statement.result
+++ b/mysql-test/r/set_statement.result
@@ -1047,7 +1047,7 @@ set statement long_query_time=default for select @@long_query_time;
10.000000
set statement log_slow_filter=default for select @@log_slow_filter;
@@log_slow_filter
-admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
set statement log_slow_verbosity=default for select @@log_slow_verbosity;
@@log_slow_verbosity
diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result
index 83eaec2e18e..b86d72acb84 100644
--- a/mysql-test/r/show_check.result
+++ b/mysql-test/r/show_check.result
@@ -1208,26 +1208,6 @@ DROP TABLE t1;
DROP VIEW v1;
DROP PROCEDURE p1;
DROP FUNCTION f1;
-set names koi8r;
-DROP DATABASE IF EXISTS mysqltest1;
-CREATE DATABASE mysqltest1;
-use mysqltest1;
-CREATE TABLE t1(ËÏÌÏÎËÁ1 INT);
-
----> Dumping mysqltest1 to outfile1
-
-
-DROP DATABASE mysqltest1;
-
-
----> Restoring mysqltest1...
-SHOW CREATE TABLE mysqltest1.t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `ËÏÌÏÎËÁ1` int(11) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-DROP DATABASE mysqltest1;
-use test;
flush status;
show variables like "log_queries_not_using_indexes";
Variable_name Value
@@ -1238,7 +1218,7 @@ select 1 from information_schema.tables limit 1;
show status like 'slow_queries';
Variable_name Value
Slow_queries 1
-set global log_queries_not_using_indexes=OFF;
+set session log_queries_not_using_indexes=OFF;
show variables like "log_queries_not_using_indexes";
Variable_name Value
log_queries_not_using_indexes OFF
@@ -1248,7 +1228,7 @@ select 1 from information_schema.tables limit 1;
show status like 'slow_queries';
Variable_name Value
Slow_queries 1
-set global log_queries_not_using_indexes=ON;
+set session log_queries_not_using_indexes=ON;
show variables like "log_queries_not_using_indexes";
Variable_name Value
log_queries_not_using_indexes ON
@@ -1275,8 +1255,8 @@ PRIMARY KEY (Codigo)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
show create table t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def Table 253 64 2 N 1 39 7
-def Create Table 253 1024 458 N 1 39 7
+def Table 253 192 2 N 1 39 33
+def Create Table 253 3072 458 N 1 39 33
Table Create Table
t1 CREATE TABLE `t1` (
`Codigo` int(10) unsigned NOT NULL AUTO_INCREMENT,
diff --git a/mysql-test/r/simultaneous_assignment.result b/mysql-test/r/simultaneous_assignment.result
new file mode 100644
index 00000000000..67cb58ba6af
--- /dev/null
+++ b/mysql-test/r/simultaneous_assignment.result
@@ -0,0 +1,222 @@
+SET sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,SIMULTANEOUS_ASSIGNMENT';
+#
+# MDEV-13417 UPDATE produces wrong values if an UPDATEd column is later used as an UPDATE source
+#
+CREATE TABLE t1 (c1 INTEGER, c2 INTEGER, c3 INTEGER) ENGINE=InnoDb;
+INSERT INTO t1(c1,c2,c3) VALUES (1,1,1);
+CREATE TABLE t2 (c1 INTEGER, c2 INTEGER, c3 INTEGER) ENGINE=InnoDb;
+INSERT INTO t2(c1,c2,c3) VALUES (1,1,1);
+#
+# Check that a column is only updated once.
+#
+UPDATE t1
+SET c1 = 1,
+c1 = 2;
+ERROR HY000: The column `t1`.`c1` cannot be changed more than once in a single UPDATE statement
+UPDATE t1, t2
+SET t1.c1 = t1.c1 + 1,
+t1.c2 = t1.c1 + 1,
+t2.c2 = t1.c2 + 1,
+t2.c2 = t1.c2 + 1;
+ERROR HY000: The column `t2`.`c2` cannot be changed more than once in a single UPDATE statement
+#
+# Check standard update
+#
+UPDATE t1
+SET c1 = c1+1,
+c2 = c1+1,
+c3 = c2+1
+WHERE c1=10;
+START TRANSACTION;
+UPDATE t1
+SET c1 = c1+1,
+c2 = c1+1,
+c3 = c2+1;
+SELECT * FROM t1;
+c1 c2 c3
+2 2 2
+ROLLBACK;
+#
+# Check update through a single view
+#
+CREATE VIEW v1 (a, b) AS SELECT c1, c2 FROM t1;
+UPDATE v1
+SET a = 10,
+a = b+1;
+ERROR HY000: The column `t1`.`c1` cannot be changed more than once in a single UPDATE statement
+SELECT * FROM t1;
+c1 c2 c3
+1 1 1
+DROP VIEW v1;
+CREATE VIEW v1 (a, b) AS SELECT c2, c2 FROM t1;
+UPDATE v1
+SET a = 10,
+b = 20;
+ERROR HY000: The column `t1`.`c2` cannot be changed more than once in a single UPDATE statement
+SELECT * FROM t1;
+c1 c2 c3
+1 1 1
+DROP VIEW v1;
+#
+# Check update through a multi table view
+#
+CREATE VIEW v1 (a, b) AS SELECT t1.c1, t2.c1 FROM t1, t2 WHERE t1.c1=t2.c1;
+UPDATE v1
+SET a = 10,
+b = 20;
+ERROR HY000: Can not modify more than one base table through a join view 'test.v1'
+START TRANSACTION;
+UPDATE v1
+SET a = 10;
+ROLLBACK;
+UPDATE v1
+SET a = 10,
+a = a + 1;
+ERROR HY000: The column `t1`.`c1` cannot be changed more than once in a single UPDATE statement
+DROP VIEW v1;
+#
+# Check multi update
+#
+START TRANSACTION;
+UPDATE t1, t2
+SET t1.c1 = t1.c1 + 1,
+t1.c2 = t1.c1 + 1,
+t2.c2 = t1.c2 + 1,
+t2.c3 = t2.c2 + 1
+WHERE t1.c1=t2.c1;
+SELECT * FROM t1;
+c1 c2 c3
+2 2 1
+SELECT * FROM t2;
+c1 c2 c3
+1 2 2
+ROLLBACK;
+CREATE TRIGGER tr1 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+INSERT INTO t2 VALUES(10+old.c1,10+old.c2,10+old.c3);
+INSERT INTO t2 VALUES(20+new.c1,10+new.c2,10+new.c3);
+END;
+/
+START TRANSACTION;
+UPDATE t1
+SET c1 = c1+1,
+c2 = c1+1,
+c3 = c2+1;
+SELECT * FROM t1;
+c1 c2 c3
+2 2 2
+SELECT * FROM t2;
+c1 c2 c3
+1 1 1
+11 11 11
+22 12 12
+ROLLBACK;
+DROP TABLE t1;
+DROP TABLE t2;
+#
+# Check update fired by INSERT ... ON DUPLICATE KEY UPDATE
+#
+CREATE TABLE t1 (
+id INT(11) NOT NULL AUTO_INCREMENT,
+name VARCHAR(60) NOT NULL,
+nb_visits INT NOT NULL,
+nb_visits_prev INT NOT NULL default 0,
+PRIMARY KEY (id),
+UNIQUE KEY name (name)
+) ENGINE=InnoDB AUTO_INCREMENT=1;
+INSERT INTO t1(name, nb_visits) VALUES('nico', 1)
+ON DUPLICATE KEY UPDATE nb_visits = nb_visits + 1;
+SELECT * FROM t1;
+id name nb_visits nb_visits_prev
+1 nico 1 0
+INSERT INTO t1(name, nb_visits) VALUES('nico', 1)
+ON DUPLICATE KEY UPDATE nb_visits = nb_visits + 1, nb_visits_prev=nb_visits;
+SELECT * FROM t1;
+id name nb_visits nb_visits_prev
+1 nico 2 1
+DROP TABLE t1;
+#
+# Update table with virtual column
+#
+CREATE TABLE t1 (c1 INTEGER, c2 INTEGER, c3 INTEGER AS (c1 MOD 10) VIRTUAL, c4 INTEGER AS (c1+c2 MOD 5) PERSISTENT ) ENGINE=InnoDb;
+INSERT INTO t1(c1,c2) VALUES (1,1);
+SELECT * FROM t1;
+c1 c2 c3 c4
+1 1 1 2
+UPDATE t1 SET c2 = 10, c1 = c2;
+SELECT * FROM t1;
+c1 c2 c3 c4
+1 10 1 1
+UPDATE t1 SET c2 = 4, c1 = c2;
+SELECT * FROM t1;
+c1 c2 c3 c4
+10 4 0 14
+DROP TABLE t1;
+#
+# Update dynamic column
+#
+SET @@local.character_set_connection='latin1';
+CREATE TABLE assets (
+item_name VARCHAR(32) PRIMARY KEY,
+dynamic_col1 BLOB,
+dynamic_col2 BLOB
+);
+INSERT INTO assets VALUES ('Thinkpad Laptop', COLUMN_CREATE('color', 'black', 'price', 500),COLUMN_CREATE('CPU', 'Core I7', 'memory', '8Go'));
+INSERT INTO assets VALUES ('Thinkpad Laptop2', COLUMN_CREATE('color', 'yellow', 'price', 700),COLUMN_CREATE('CPU', 'Core I7', 'memory', '16Go'));
+SELECT item_name, COLUMN_GET(dynamic_col1, 'color' as char) AS color1,
+COLUMN_GET(dynamic_col2, 'color' as char) AS color2
+FROM assets;
+item_name color1 color2
+Thinkpad Laptop black NULL
+Thinkpad Laptop2 yellow NULL
+UPDATE assets
+SET dynamic_col1=COLUMN_ADD(dynamic_col1, 'warranty', '3 years'),
+dynamic_col2=dynamic_col1
+WHERE item_name LIKE 'Thinkpad Laptop%';
+SELECT item_name, COLUMN_GET(dynamic_col1, 'warranty' as char) AS waranty1,
+COLUMN_GET(dynamic_col2, 'warranty' as char) AS waranty2,
+COLUMN_GET(dynamic_col2, 'color' as char) AS color2
+FROM assets;
+item_name waranty1 waranty2 color2
+Thinkpad Laptop 3 years NULL black
+Thinkpad Laptop2 3 years NULL yellow
+DROP TABLE assets;
+#
+# Update TEXT column
+#
+CREATE TABLE ft2(copy TEXT,copy2 TEXT,FULLTEXT(copy)) ENGINE=MyISAM;
+INSERT INTO ft2(copy) VALUES
+('MySQL vs MariaDB database'),
+('Oracle vs MariaDB database'),
+('PostgreSQL vs MariaDB database'),
+('MariaDB overview'),
+('Foreign keys'),
+('Primary keys'),
+('Indexes'),
+('Transactions'),
+('Triggers');
+SELECT * FROM ft2;
+copy copy2
+MySQL vs MariaDB database NULL
+Oracle vs MariaDB database NULL
+PostgreSQL vs MariaDB database NULL
+MariaDB overview NULL
+Foreign keys NULL
+Primary keys NULL
+Indexes NULL
+Transactions NULL
+Triggers NULL
+UPDATE ft2 SET copy = UPPER(copy),
+copy2= copy;
+SELECT * FROM ft2;
+copy copy2
+MYSQL VS MARIADB DATABASE MySQL vs MariaDB database
+ORACLE VS MARIADB DATABASE Oracle vs MariaDB database
+POSTGRESQL VS MARIADB DATABASE PostgreSQL vs MariaDB database
+MARIADB OVERVIEW MariaDB overview
+FOREIGN KEYS Foreign keys
+PRIMARY KEYS Primary keys
+INDEXES Indexes
+TRANSACTIONS Transactions
+TRIGGERS Triggers
+DROP TABLE ft2;
diff --git a/mysql-test/r/sp-big.result b/mysql-test/r/sp-big.result
index 9765508859c..e12136eb36d 100644
--- a/mysql-test/r/sp-big.result
+++ b/mysql-test/r/sp-big.result
@@ -1,5 +1,3 @@
-drop procedure if exists test.longprocedure;
-drop table if exists t1;
create table t1 (a int);
insert into t1 values (1),(2),(3);
length
@@ -60,3 +58,30 @@ f1
This is a test case for for Bug#9819
drop procedure p1;
drop table t1, t2;
+create table t1 (
+`id1` int unsigned not null default '0',
+`id2` int unsigned not null default '0',
+`link_type` int unsigned not null default '0',
+`visibility` tinyint not null default '0',
+`data` varchar(255) not null default '',
+`time` int unsigned not null default '0',
+`version` int unsigned not null default '0',
+primary key (id1, link_type, visibility, id2)
+) default collate=latin1_bin;
+create procedure select_test()
+begin
+declare id1_cond int;
+set id1_cond = 1;
+while id1_cond <= 10000 do
+select count(*) as cnt from (select id1 from t1 force index (primary) where id1 = id1_cond and link_type = 1 and visibility = 1 order by id2 desc) as t into @cnt;
+set id1_cond = id1_cond + 1;
+end while;
+end//
+insert t1 select seq, seq, 1, 1, seq, seq, seq from seq_1_to_2000;
+set @before=unix_timestamp();
+call select_test();
+select unix_timestamp() - @before < 60;
+unix_timestamp() - @before < 60
+1
+drop procedure select_test;
+drop table t1;
diff --git a/mysql-test/r/sp-destruct.result b/mysql-test/r/sp-destruct.result
index 5bb3b17d4b8..112fdb3978d 100644
--- a/mysql-test/r/sp-destruct.result
+++ b/mysql-test/r/sp-destruct.result
@@ -1,4 +1,4 @@
-call mtr.add_suppression("Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted");
+call mtr.add_suppression("Column count of mysql.proc is wrong. Expected 21, found 20. The table is probably corrupted");
call mtr.add_suppression("Stored routine .test...bug14233_[123].: invalid value in column mysql.proc");
flush table mysql.proc;
use test;
@@ -14,13 +14,13 @@ create table t1 (id int);
create trigger t1_ai after insert on t1 for each row call bug14233();
alter table mysql.proc drop security_type;
call bug14233();
-ERROR HY000: Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
+ERROR HY000: Column count of mysql.proc is wrong. Expected 21, found 20. The table is probably corrupted
create view v1 as select bug14233_f();
-ERROR HY000: Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
+ERROR HY000: Column count of mysql.proc is wrong. Expected 21, found 20. The table is probably corrupted
insert into t1 values (0);
-ERROR HY000: Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
+ERROR HY000: Column count of mysql.proc is wrong. Expected 21, found 20. The table is probably corrupted
show procedure status;
-ERROR HY000: Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
+ERROR HY000: Column count of mysql.proc is wrong. Expected 21, found 20. The table is probably corrupted
flush table mysql.proc;
call bug14233();
ERROR HY000: Incorrect information in file: './mysql/proc.frm'
@@ -146,7 +146,7 @@ alter table mysql.proc drop column security_type;
# The below statement should not cause assertion failure.
drop database mysqltest;
Warnings:
-Error 1805 Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
+Error 1805 Column count of mysql.proc is wrong. Expected 21, found 20. The table is probably corrupted
# Restore mysql.proc.
drop table mysql.proc;
#
diff --git a/mysql-test/r/sp-error.result b/mysql-test/r/sp-error.result
index 7c72764e48c..fc43bdf17e9 100644
--- a/mysql-test/r/sp-error.result
+++ b/mysql-test/r/sp-error.result
@@ -1212,7 +1212,7 @@ ERROR 42S02: Unknown table 'c' in field list
drop procedure bug15091;
drop function if exists bug16896;
create aggregate function bug16896() returns int return 1;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '() returns int return 1' at line 1
+ERROR HY000: Aggregate specific instruction(FETCH GROUP NEXT ROW) missing from the aggregate function
DROP PROCEDURE IF EXISTS bug14702;
CREATE IF NOT EXISTS PROCEDURE bug14702()
BEGIN
diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result
index ca6a3b495aa..0aa56291690 100644
--- a/mysql-test/r/sp.result
+++ b/mysql-test/r/sp.result
@@ -4440,7 +4440,7 @@ create table t3 (id int not null primary key, county varchar(25))|
insert into t3 (id, county) values (1, 'York')|
create procedure bug15441(c varchar(25))
begin
-update t3 set id=2, county=values(c);
+update t3 set id=2, county=value(c);
end|
call bug15441('county')|
ERROR 42S22: Unknown column 'c' in 'field list'
@@ -4451,7 +4451,7 @@ declare c varchar(25) default "hello";
insert into t3 (id, county) values (1, county)
on duplicate key update county= values(county);
select * from t3;
-update t3 set id=2, county=values(id);
+update t3 set id=2, county=value(id);
select * from t3;
end|
call bug15441('Yale')|
@@ -4810,8 +4810,8 @@ select routine_name,routine_schema from information_schema.routines where
routine_schema like 'bug18344%'|
routine_name routine_schema
bug18344 bug18344_012345678901
-bug18344_2 bug18344_012345678901
bug18344 bug18344_0123456789012
+bug18344_2 bug18344_012345678901
bug18344_2 bug18344_0123456789012
drop database bug18344_012345678901|
drop database bug18344_0123456789012|
@@ -5324,7 +5324,7 @@ DROP PROCEDURE bug21414|
set names utf8|
drop database if exists това_е_дълго_име_за_база_данни_нали|
create database това_е_дълго_име_за_база_данни_нали|
-INSERT INTO mysql.proc VALUES ('това_е_дълго_име_за_база_данни_нали','това_е_процедура_Ñ_доÑта_дълго_име_нали_и_още_по_дълго','PROCEDURE','това_е_процедура_Ñ_доÑта_дълго_име_нали_и_още_по_дълго','SQL','CONTAINS_SQL','NO','DEFINER','','','bad_body','root@localhost',now(), now(),'','', 'utf8', 'utf8_general_ci', 'utf8_general_ci', 'n/a')|
+INSERT INTO mysql.proc VALUES ('това_е_дълго_име_за_база_данни_нали','това_е_процедура_Ñ_доÑта_дълго_име_нали_и_още_по_дълго','PROCEDURE','това_е_процедура_Ñ_доÑта_дълго_име_нали_и_още_по_дълго','SQL','CONTAINS_SQL','NO','DEFINER','','','bad_body','root@localhost',now(), now(),'','', 'utf8', 'utf8_general_ci', 'utf8_general_ci', 'n/a', 'NONE')|
call това_е_дълго_име_за_база_данни_нали.това_е_процедура_Ñ_доÑта_дълго_име_нали_и_още_по_дълго()|
ERROR HY000: Failed to load routine това_е_дълго_име_за_база_данни_нали.това_е_процедура_Ñ_доÑта_дълго_име_нали_и_още_по_дълго. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6)
drop database това_е_дълго_име_за_база_данни_нали|
@@ -5742,7 +5742,7 @@ SELECT @@max_sp_recursion_depth|
CALL bug23760_test_row_count2(2)|
SELECT ROW_COUNT()|
ROW_COUNT()
-1
+16
SELECT * FROM bug23760_log ORDER BY id|
id reason ammount
1 Test is working 7
@@ -8538,3 +8538,28 @@ DROP FUNCTION f1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
+# Test affected rows from an sp
+create table t1 (a int);
+create procedure p1()
+begin
+insert into t1 values(1);
+insert into t1 values(2);
+end;
+$$
+create procedure p2()
+begin
+insert into t1 values(1);
+call p1();
+select row_count();
+insert into t1 values(2);
+insert into t1 values(2);
+end;
+$$
+CALL p2();
+row_count()
+2
+affected rows: 1
+affected rows: 5
+DROP PROCEDURE p1;
+DROP PROCEDURE p2;
+drop table t1;
diff --git a/mysql-test/r/sql_mode.result b/mysql-test/r/sql_mode.result
index c6c241413d6..02574c1c545 100644
--- a/mysql-test/r/sql_mode.result
+++ b/mysql-test/r/sql_mode.result
@@ -75,7 +75,7 @@ t1 CREATE TABLE `t1` (
set sql_mode="postgresql,oracle,mssql,db2,maxdb";
select @@sql_mode;
@@sql_mode
-PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
+PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT
show create table t1;
Table Create Table
t1 CREATE TABLE "t1" (
@@ -475,8 +475,8 @@ set sql_mode=16384+(65536*4);
select @@sql_mode;
@@sql_mode
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_TABLE_OPTIONS,ANSI
-set sql_mode=2147483648*2*2;
-ERROR 42000: Variable 'sql_mode' can't be set to the value of '8589934592'
+set sql_mode=2147483648*2*2*2;
+ERROR 42000: Variable 'sql_mode' can't be set to the value of '17179869184'
select @@sql_mode;
@@sql_mode
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_TABLE_OPTIONS,ANSI
@@ -531,7 +531,7 @@ SET SESSION SQL_MODE = @OLD_SQL_MODE;
DROP USER 'user_no_PCTFL'@'localhost';
FLUSH PRIVILEGES;
SELECT * FROM mysql.db WHERE Host = 'localhost' AND User LIKE 'user_%PCTFL';
-Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv
+Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv Delete_history_priv
SELECT * FROM mysql.tables_priv WHERE Host = 'localhost' AND User LIKE 'user_%PCTFL';
Host Db User Table_name Grantor Timestamp Table_priv Column_priv
SELECT * FROM mysql.columns_priv WHERE Host = 'localhost' AND User LIKE 'user_%PCTFL';
diff --git a/mysql-test/r/status.result b/mysql-test/r/status.result
index 9a8a5bd8f93..18cde57b295 100644
--- a/mysql-test/r/status.result
+++ b/mysql-test/r/status.result
@@ -386,6 +386,46 @@ Handler_tmp_write 2
Handler_update 0
Handler_write 0
drop table t1;
+#
+# MDEV-11153 - Introduce status variables for table cache monitoring and
+# tuning
+#
+SET @old_table_open_cache= @@table_open_cache;
+SET @@global.table_open_cache=10;
+FLUSH TABLES;
+FLUSH STATUS;
+SHOW STATUS LIKE 'Table_open_cache%';
+Variable_name Value
+Table_open_cache_active_instances 1
+Table_open_cache_hits 0
+Table_open_cache_misses 0
+Table_open_cache_overflows 0
+SHOW STATUS LIKE 'Table_open_cache%';
+Variable_name Value
+Table_open_cache_active_instances 1
+Table_open_cache_hits 30
+Table_open_cache_misses 15
+Table_open_cache_overflows 5
+FLUSH TABLES;
+FLUSH STATUS;
+SET @@global.table_open_cache= @old_table_open_cache;
+#
+# MDEV-14505 - Threads_running becomes scalability bottleneck
+#
+# Session status for Threads_running is currently always 1.
+SHOW STATUS LIKE 'Threads_running';
+Variable_name Value
+Threads_running 1
+SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='THREADS_RUNNING';
+VARIABLE_VALUE
+1
+FLUSH STATUS;
+SHOW STATUS LIKE 'Threads_running';
+Variable_name Value
+Threads_running 1
+SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='THREADS_RUNNING';
+VARIABLE_VALUE
+1
connection default;
set @@global.concurrent_insert= @old_concurrent_insert;
SET GLOBAL log_output = @old_log_output;
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result
index 38d0336772e..1c087a3199c 100644
--- a/mysql-test/r/subselect.result
+++ b/mysql-test/r/subselect.result
@@ -1161,20 +1161,20 @@ drop table t1;
CREATE TABLE t1 (a int(1));
EXPLAIN EXTENDED SELECT (SELECT RAND() FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select rand() from `test`.`t1`) AS `(SELECT RAND() FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT ENCRYPT('test') FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select encrypt('test') from `test`.`t1`) AS `(SELECT ENCRYPT('test') FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT BENCHMARK(1,1) FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select benchmark(1,1) from `test`.`t1`) AS `(SELECT BENCHMARK(1,1) FROM t1)` from `test`.`t1`
drop table t1;
@@ -1644,7 +1644,7 @@ a
explain extended select * from t3 where a >= all (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2);
@@ -1652,7 +1652,7 @@ a
explain extended select * from t3 where a >= some (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= all (select b from t2 group by 1);
@@ -1663,7 +1663,7 @@ a
explain extended select * from t3 where a >= all (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2 group by 1);
@@ -1671,7 +1671,7 @@ a
explain extended select * from t3 where a >= some (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where NULL >= any (select b from t2);
@@ -3734,7 +3734,7 @@ from t1' at line 1
explain select * from t1 where not exists
((select t11.i from t1 t11) union (select t12.i from t1 t12));
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL no matching row in const table
3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
@@ -6120,7 +6120,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 Const row not found
SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
@@ -6134,7 +6134,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 Const row not found
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
@@ -6720,7 +6720,7 @@ CREATE TABLE t2 (b INT);
EXPLAIN
SELECT SUM(a) AS f1, a AS f2 FROM (t1, t2) HAVING f2 >= ALL (SELECT 4 UNION SELECT 5) AND f1 = 7;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t2 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t2 system NULL NULL NULL NULL 0 Const row not found
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
diff --git a/mysql-test/r/subselect4.result b/mysql-test/r/subselect4.result
index 6126a7ed3f5..d3f46429cf7 100644
--- a/mysql-test/r/subselect4.result
+++ b/mysql-test/r/subselect4.result
@@ -21,7 +21,7 @@ ORDER BY count(*);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 index NULL a 5 NULL 2 Using index
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
-3 DEPENDENT SUBQUERY t3 system NULL NULL NULL NULL 0 const row not found
+3 DEPENDENT SUBQUERY t3 system NULL NULL NULL NULL 0 Const row not found
# should not crash the next statement
SELECT 1 FROM t1
WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE 1 = (SELECT MIN(t2.b) FROM t3))
@@ -1261,7 +1261,7 @@ SET optimizer_switch='materialization=off';
EXPLAIN
SELECT * FROM t1 RIGHT JOIN t2 ON t1.c1 WHERE 's' IN (SELECT c1 FROM t2);
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; FirstMatch(t1)
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
SELECT * FROM t1 RIGHT JOIN t2 ON t1.c1 WHERE 's' IN (SELECT c1 FROM t2);
@@ -1269,7 +1269,7 @@ c1 c1
EXPLAIN
SELECT * FROM t2 LEFT JOIN t1 ON t1.c1 WHERE 's' IN (SELECT c1 FROM t2);
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; FirstMatch(t1)
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
SELECT * FROM t2 LEFT JOIN t1 ON t1.c1 WHERE 's' IN (SELECT c1 FROM t2);
@@ -1278,7 +1278,7 @@ SET optimizer_switch='materialization=on';
EXPLAIN
SELECT * FROM (t2 LEFT JOIN t1 ON t1.c1) LEFT JOIN t3 on t3.c1 WHERE 's' IN (SELECT c1 FROM t2);
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
@@ -2191,7 +2191,7 @@ INSERT INTO t2 VALUES (1);
EXPLAIN
SELECT MAX(a), ( SELECT 1 FROM t2 ) AS bb FROM t1;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 SUBQUERY t2 system NULL NULL NULL NULL 1
SELECT MAX(a), ( SELECT 1 FROM t2 ) AS bb FROM t1;
MAX(a) bb
@@ -2199,7 +2199,7 @@ NULL 1
EXPLAIN
SELECT MAX(a), 1 in ( SELECT b FROM t2 ) AS bb FROM t1;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 SUBQUERY t2 system NULL NULL NULL NULL 1
SELECT MAX(a), 1 in ( SELECT b FROM t2 ) AS bb FROM t1;
MAX(a) bb
@@ -2207,7 +2207,7 @@ NULL 1
EXPLAIN
SELECT MAX(a), 1 >= ALL ( SELECT b FROM t2 ) AS bb FROM t1;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
SELECT MAX(a), 1 >= ALL ( SELECT b FROM t2 ) AS bb FROM t1;
MAX(a) bb
@@ -2215,7 +2215,7 @@ NULL 1
EXPLAIN
SELECT MAX(a), ( SELECT 1 FROM t2 where b = a) AS bb FROM t1;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
SELECT MAX(a), ( SELECT 1 FROM t2 where b = a) AS bb FROM t1;
MAX(a) bb
@@ -2223,7 +2223,7 @@ NULL NULL
EXPLAIN
SELECT MAX(a), a in ( SELECT b FROM t2 ) AS bb FROM t1;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 1
SELECT MAX(a), a in ( SELECT b FROM t2 ) AS bb FROM t1;
MAX(a) bb
@@ -2231,7 +2231,7 @@ NULL NULL
EXPLAIN
SELECT MAX(a), a >= ALL ( SELECT b FROM t2 ) AS bb FROM t1;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 1
SELECT MAX(a), a >= ALL ( SELECT b FROM t2 ) AS bb FROM t1;
MAX(a) bb
diff --git a/mysql-test/r/subselect_mat.result b/mysql-test/r/subselect_mat.result
index 350275d2463..6b5db62093e 100644
--- a/mysql-test/r/subselect_mat.result
+++ b/mysql-test/r/subselect_mat.result
@@ -2544,7 +2544,7 @@ SELECT i FROM t1 LEFT JOIN t2 ON (j) IN (SELECT k FROM t3);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 system NULL NULL NULL NULL 1
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where
-2 MATERIALIZED t3 system NULL NULL NULL NULL 0 const row not found
+2 MATERIALIZED t3 system NULL NULL NULL NULL 0 Const row not found
SELECT i FROM t1 LEFT JOIN t2 ON (j) IN (SELECT k FROM t3);
i
10
@@ -2553,7 +2553,7 @@ SELECT i FROM t1 LEFT JOIN t2 ON (j) IN (SELECT max(k) FROM t3);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 system NULL NULL NULL NULL 1
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where
-2 MATERIALIZED t3 system NULL NULL NULL NULL 0 const row not found
+2 MATERIALIZED t3 system NULL NULL NULL NULL 0 Const row not found
SELECT i FROM t1 LEFT JOIN t2 ON (j) IN (SELECT max(k) FROM t3);
i
10
diff --git a/mysql-test/r/subselect_mat_cost_bugs.result b/mysql-test/r/subselect_mat_cost_bugs.result
index b4feb8de200..125da8da517 100644
--- a/mysql-test/r/subselect_mat_cost_bugs.result
+++ b/mysql-test/r/subselect_mat_cost_bugs.result
@@ -162,7 +162,7 @@ EXPLAIN
SELECT * FROM (SELECT * FROM t2) AS a2
WHERE (SELECT distinct SUM(distinct f3 ) FROM t1);
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 Const row not found
3 SUBQUERY t1 index NULL f3 5 NULL 2 Using index
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
insert into t2 values (1),(2);
diff --git a/mysql-test/r/subselect_no_exists_to_in.result b/mysql-test/r/subselect_no_exists_to_in.result
index b45e59f9ad8..eb912d9e331 100644
--- a/mysql-test/r/subselect_no_exists_to_in.result
+++ b/mysql-test/r/subselect_no_exists_to_in.result
@@ -1165,20 +1165,20 @@ drop table t1;
CREATE TABLE t1 (a int(1));
EXPLAIN EXTENDED SELECT (SELECT RAND() FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select rand() from `test`.`t1`) AS `(SELECT RAND() FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT ENCRYPT('test') FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select encrypt('test') from `test`.`t1`) AS `(SELECT ENCRYPT('test') FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT BENCHMARK(1,1) FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select benchmark(1,1) from `test`.`t1`) AS `(SELECT BENCHMARK(1,1) FROM t1)` from `test`.`t1`
drop table t1;
@@ -1648,7 +1648,7 @@ a
explain extended select * from t3 where a >= all (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2);
@@ -1656,7 +1656,7 @@ a
explain extended select * from t3 where a >= some (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= all (select b from t2 group by 1);
@@ -1667,7 +1667,7 @@ a
explain extended select * from t3 where a >= all (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2 group by 1);
@@ -1675,7 +1675,7 @@ a
explain extended select * from t3 where a >= some (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where NULL >= any (select b from t2);
@@ -3737,7 +3737,7 @@ from t1' at line 1
explain select * from t1 where not exists
((select t11.i from t1 t11) union (select t12.i from t1 t12));
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL no matching row in const table
3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
@@ -6120,7 +6120,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 Const row not found
SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
@@ -6134,7 +6134,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 Const row not found
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
@@ -6720,7 +6720,7 @@ CREATE TABLE t2 (b INT);
EXPLAIN
SELECT SUM(a) AS f1, a AS f2 FROM (t1, t2) HAVING f2 >= ALL (SELECT 4 UNION SELECT 5) AND f1 = 7;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t2 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t2 system NULL NULL NULL NULL 0 Const row not found
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
diff --git a/mysql-test/r/subselect_no_mat.result b/mysql-test/r/subselect_no_mat.result
index d365a0932e6..72f30bbd21f 100644
--- a/mysql-test/r/subselect_no_mat.result
+++ b/mysql-test/r/subselect_no_mat.result
@@ -1168,20 +1168,20 @@ drop table t1;
CREATE TABLE t1 (a int(1));
EXPLAIN EXTENDED SELECT (SELECT RAND() FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select rand() from `test`.`t1`) AS `(SELECT RAND() FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT ENCRYPT('test') FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select encrypt('test') from `test`.`t1`) AS `(SELECT ENCRYPT('test') FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT BENCHMARK(1,1) FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select benchmark(1,1) from `test`.`t1`) AS `(SELECT BENCHMARK(1,1) FROM t1)` from `test`.`t1`
drop table t1;
@@ -1651,7 +1651,7 @@ a
explain extended select * from t3 where a >= all (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2);
@@ -1659,7 +1659,7 @@ a
explain extended select * from t3 where a >= some (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= all (select b from t2 group by 1);
@@ -1670,7 +1670,7 @@ a
explain extended select * from t3 where a >= all (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2 group by 1);
@@ -1678,7 +1678,7 @@ a
explain extended select * from t3 where a >= some (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where NULL >= any (select b from t2);
@@ -3737,7 +3737,7 @@ from t1' at line 1
explain select * from t1 where not exists
((select t11.i from t1 t11) union (select t12.i from t1 t12));
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL no matching row in const table
3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
@@ -6115,7 +6115,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 Const row not found
SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
@@ -6129,7 +6129,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 Const row not found
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
@@ -6715,7 +6715,7 @@ CREATE TABLE t2 (b INT);
EXPLAIN
SELECT SUM(a) AS f1, a AS f2 FROM (t1, t2) HAVING f2 >= ALL (SELECT 4 UNION SELECT 5) AND f1 = 7;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t2 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t2 system NULL NULL NULL NULL 0 Const row not found
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
diff --git a/mysql-test/r/subselect_no_opts.result b/mysql-test/r/subselect_no_opts.result
index 491e4f91804..de075d3245f 100644
--- a/mysql-test/r/subselect_no_opts.result
+++ b/mysql-test/r/subselect_no_opts.result
@@ -1164,20 +1164,20 @@ drop table t1;
CREATE TABLE t1 (a int(1));
EXPLAIN EXTENDED SELECT (SELECT RAND() FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select rand() from `test`.`t1`) AS `(SELECT RAND() FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT ENCRYPT('test') FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select encrypt('test') from `test`.`t1`) AS `(SELECT ENCRYPT('test') FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT BENCHMARK(1,1) FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select benchmark(1,1) from `test`.`t1`) AS `(SELECT BENCHMARK(1,1) FROM t1)` from `test`.`t1`
drop table t1;
@@ -1647,7 +1647,7 @@ a
explain extended select * from t3 where a >= all (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2);
@@ -1655,7 +1655,7 @@ a
explain extended select * from t3 where a >= some (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= all (select b from t2 group by 1);
@@ -1666,7 +1666,7 @@ a
explain extended select * from t3 where a >= all (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2 group by 1);
@@ -1674,7 +1674,7 @@ a
explain extended select * from t3 where a >= some (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where NULL >= any (select b from t2);
@@ -3733,7 +3733,7 @@ from t1' at line 1
explain select * from t1 where not exists
((select t11.i from t1 t11) union (select t12.i from t1 t12));
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL no matching row in const table
3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
@@ -6111,7 +6111,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 Const row not found
SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
@@ -6125,7 +6125,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 Const row not found
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
@@ -6711,7 +6711,7 @@ CREATE TABLE t2 (b INT);
EXPLAIN
SELECT SUM(a) AS f1, a AS f2 FROM (t1, t2) HAVING f2 >= ALL (SELECT 4 UNION SELECT 5) AND f1 = 7;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t2 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t2 system NULL NULL NULL NULL 0 Const row not found
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
diff --git a/mysql-test/r/subselect_no_scache.result b/mysql-test/r/subselect_no_scache.result
index 61f2154e984..a594f5f85b9 100644
--- a/mysql-test/r/subselect_no_scache.result
+++ b/mysql-test/r/subselect_no_scache.result
@@ -1167,20 +1167,20 @@ drop table t1;
CREATE TABLE t1 (a int(1));
EXPLAIN EXTENDED SELECT (SELECT RAND() FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select rand() from `test`.`t1`) AS `(SELECT RAND() FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT ENCRYPT('test') FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select encrypt('test') from `test`.`t1`) AS `(SELECT ENCRYPT('test') FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT BENCHMARK(1,1) FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select benchmark(1,1) from `test`.`t1`) AS `(SELECT BENCHMARK(1,1) FROM t1)` from `test`.`t1`
drop table t1;
@@ -1650,7 +1650,7 @@ a
explain extended select * from t3 where a >= all (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2);
@@ -1658,7 +1658,7 @@ a
explain extended select * from t3 where a >= some (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= all (select b from t2 group by 1);
@@ -1669,7 +1669,7 @@ a
explain extended select * from t3 where a >= all (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2 group by 1);
@@ -1677,7 +1677,7 @@ a
explain extended select * from t3 where a >= some (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where NULL >= any (select b from t2);
@@ -3740,7 +3740,7 @@ from t1' at line 1
explain select * from t1 where not exists
((select t11.i from t1 t11) union (select t12.i from t1 t12));
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL no matching row in const table
3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
@@ -6126,7 +6126,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 Const row not found
SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
@@ -6140,7 +6140,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 Const row not found
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
@@ -6726,7 +6726,7 @@ CREATE TABLE t2 (b INT);
EXPLAIN
SELECT SUM(a) AS f1, a AS f2 FROM (t1, t2) HAVING f2 >= ALL (SELECT 4 UNION SELECT 5) AND f1 = 7;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t2 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t2 system NULL NULL NULL NULL 0 Const row not found
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
diff --git a/mysql-test/r/subselect_no_semijoin.result b/mysql-test/r/subselect_no_semijoin.result
index d6d411c9fad..e068b28b017 100644
--- a/mysql-test/r/subselect_no_semijoin.result
+++ b/mysql-test/r/subselect_no_semijoin.result
@@ -1164,20 +1164,20 @@ drop table t1;
CREATE TABLE t1 (a int(1));
EXPLAIN EXTENDED SELECT (SELECT RAND() FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select rand() from `test`.`t1`) AS `(SELECT RAND() FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT ENCRYPT('test') FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select encrypt('test') from `test`.`t1`) AS `(SELECT ENCRYPT('test') FROM t1)` from `test`.`t1`
EXPLAIN EXTENDED SELECT (SELECT BENCHMARK(1,1) FROM t1) FROM t1;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select (/* select#2 */ select benchmark(1,1) from `test`.`t1`) AS `(SELECT BENCHMARK(1,1) FROM t1)` from `test`.`t1`
drop table t1;
@@ -1647,7 +1647,7 @@ a
explain extended select * from t3 where a >= all (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2);
@@ -1655,7 +1655,7 @@ a
explain extended select * from t3 where a >= some (select b from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= all (select b from t2 group by 1);
@@ -1666,7 +1666,7 @@ a
explain extended select * from t3 where a >= all (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select max(NULL) from `test`.`t2`) > <cache>(`test`.`t3`.`a`)))
select * from t3 where a >= some (select b from t2 group by 1);
@@ -1674,7 +1674,7 @@ a
explain extended select * from t3 where a >= some (select b from t2 group by 1);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
-2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 const row not found
+2 SUBQUERY t2 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>(<in_optimizer>(`test`.`t3`.`a`,(/* select#2 */ select min(NULL) from `test`.`t2`) <= <cache>(`test`.`t3`.`a`)))
select * from t3 where NULL >= any (select b from t2);
@@ -3733,7 +3733,7 @@ from t1' at line 1
explain select * from t1 where not exists
((select t11.i from t1 t11) union (select t12.i from t1 t12));
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 Const row not found
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL no matching row in const table
3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
@@ -6111,7 +6111,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE sq4_alias1 system NULL NULL NULL NULL 0 Const row not found
SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
@@ -6125,7 +6125,7 @@ FROM t1 AS sq4_alias1
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 Const row not found
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
FROM t1 AS sq4_alias1
@@ -6711,7 +6711,7 @@ CREATE TABLE t2 (b INT);
EXPLAIN
SELECT SUM(a) AS f1, a AS f2 FROM (t1, t2) HAVING f2 >= ALL (SELECT 4 UNION SELECT 5) AND f1 = 7;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t2 system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY t2 system NULL NULL NULL NULL 0 Const row not found
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
diff --git a/mysql-test/r/subselect_sj.result b/mysql-test/r/subselect_sj.result
index a601dac5337..9631192da33 100644
--- a/mysql-test/r/subselect_sj.result
+++ b/mysql-test/r/subselect_sj.result
@@ -2800,8 +2800,8 @@ CREATE TABLE t1 (db VARCHAR(64) DEFAULT NULL);
INSERT INTO t1 VALUES ('mysql'),('information_schema');
SELECT * FROM t1 WHERE db IN (SELECT `SCHEMA_NAME` FROM information_schema.SCHEMATA);
db
-mysql
information_schema
+mysql
DROP TABLE t1;
#
# MDEV-5581: Server crashes in in JOIN::prepare on 2nd execution of PS with materialization+semijoin
diff --git a/mysql-test/r/system_mysql_db.result b/mysql-test/r/system_mysql_db.result
index 7ba77e60e42..1f8946d3de9 100644
--- a/mysql-test/r/system_mysql_db.result
+++ b/mysql-test/r/system_mysql_db.result
@@ -29,6 +29,7 @@ time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
+transaction_registry
user
show create table db;
Table Create Table
@@ -55,6 +56,7 @@ db CREATE TABLE `db` (
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
+ `Delete_history_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
PRIMARY KEY (`Host`,`Db`,`User`),
KEY `User` (`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Database privileges'
@@ -118,6 +120,7 @@ user CREATE TABLE `user` (
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
+ `Delete_history_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
`ssl_cipher` blob NOT NULL,
`x509_issuer` blob NOT NULL,
@@ -152,7 +155,7 @@ tables_priv CREATE TABLE `tables_priv` (
`Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
`Grantor` char(141) COLLATE utf8_bin NOT NULL DEFAULT '',
`Timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') CHARACTER SET utf8 NOT NULL DEFAULT '',
+ `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger','Delete versioning rows') CHARACTER SET utf8 NOT NULL DEFAULT '',
`Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '',
PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`),
KEY `Grantor` (`Grantor`)
@@ -214,12 +217,13 @@ proc CREATE TABLE `proc` (
`definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '',
+ `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') NOT NULL DEFAULT '',
`comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
+ `aggregate` enum('NONE','GROUP') NOT NULL DEFAULT 'NONE',
PRIMARY KEY (`db`,`name`,`type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stored Procedures'
show create table event;
@@ -239,7 +243,7 @@ event CREATE TABLE `event` (
`ends` datetime DEFAULT NULL,
`status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED',
`on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP',
- `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '',
+ `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') NOT NULL DEFAULT '',
`comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`originator` int(10) unsigned NOT NULL,
`time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM',
diff --git a/mysql-test/r/system_mysql_db_fix40123.result b/mysql-test/r/system_mysql_db_fix40123.result
index 7ba77e60e42..1f8946d3de9 100644
--- a/mysql-test/r/system_mysql_db_fix40123.result
+++ b/mysql-test/r/system_mysql_db_fix40123.result
@@ -29,6 +29,7 @@ time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
+transaction_registry
user
show create table db;
Table Create Table
@@ -55,6 +56,7 @@ db CREATE TABLE `db` (
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
+ `Delete_history_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
PRIMARY KEY (`Host`,`Db`,`User`),
KEY `User` (`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Database privileges'
@@ -118,6 +120,7 @@ user CREATE TABLE `user` (
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
+ `Delete_history_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
`ssl_cipher` blob NOT NULL,
`x509_issuer` blob NOT NULL,
@@ -152,7 +155,7 @@ tables_priv CREATE TABLE `tables_priv` (
`Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
`Grantor` char(141) COLLATE utf8_bin NOT NULL DEFAULT '',
`Timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') CHARACTER SET utf8 NOT NULL DEFAULT '',
+ `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger','Delete versioning rows') CHARACTER SET utf8 NOT NULL DEFAULT '',
`Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '',
PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`),
KEY `Grantor` (`Grantor`)
@@ -214,12 +217,13 @@ proc CREATE TABLE `proc` (
`definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '',
+ `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') NOT NULL DEFAULT '',
`comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
+ `aggregate` enum('NONE','GROUP') NOT NULL DEFAULT 'NONE',
PRIMARY KEY (`db`,`name`,`type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stored Procedures'
show create table event;
@@ -239,7 +243,7 @@ event CREATE TABLE `event` (
`ends` datetime DEFAULT NULL,
`status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED',
`on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP',
- `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '',
+ `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') NOT NULL DEFAULT '',
`comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`originator` int(10) unsigned NOT NULL,
`time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM',
diff --git a/mysql-test/r/system_mysql_db_fix50030.result b/mysql-test/r/system_mysql_db_fix50030.result
index ad74cf6a09d..7e64f004495 100644
--- a/mysql-test/r/system_mysql_db_fix50030.result
+++ b/mysql-test/r/system_mysql_db_fix50030.result
@@ -29,6 +29,7 @@ time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
+transaction_registry
user
show create table db;
Table Create Table
@@ -55,6 +56,7 @@ db CREATE TABLE `db` (
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
+ `Delete_history_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
PRIMARY KEY (`Host`,`Db`,`User`),
KEY `User` (`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Database privileges'
@@ -118,6 +120,7 @@ user CREATE TABLE `user` (
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
+ `Delete_history_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
`ssl_cipher` blob NOT NULL,
`x509_issuer` blob NOT NULL,
@@ -152,7 +155,7 @@ tables_priv CREATE TABLE `tables_priv` (
`Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
`Grantor` char(141) COLLATE utf8_bin NOT NULL DEFAULT '',
`Timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') CHARACTER SET utf8 NOT NULL DEFAULT '',
+ `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger','Delete versioning rows') CHARACTER SET utf8 NOT NULL DEFAULT '',
`Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '',
PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`),
KEY `Grantor` (`Grantor`)
@@ -214,12 +217,13 @@ proc CREATE TABLE `proc` (
`definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '',
+ `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') NOT NULL DEFAULT '',
`comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
+ `aggregate` enum('NONE','GROUP') NOT NULL DEFAULT 'NONE',
PRIMARY KEY (`db`,`name`,`type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stored Procedures'
show create table event;
@@ -239,7 +243,7 @@ event CREATE TABLE `event` (
`ends` datetime DEFAULT NULL,
`status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED',
`on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP',
- `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '',
+ `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') NOT NULL DEFAULT '',
`comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`originator` int(10) unsigned NOT NULL,
`time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM',
diff --git a/mysql-test/r/system_mysql_db_fix50117.result b/mysql-test/r/system_mysql_db_fix50117.result
index 7ba77e60e42..1f8946d3de9 100644
--- a/mysql-test/r/system_mysql_db_fix50117.result
+++ b/mysql-test/r/system_mysql_db_fix50117.result
@@ -29,6 +29,7 @@ time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
+transaction_registry
user
show create table db;
Table Create Table
@@ -55,6 +56,7 @@ db CREATE TABLE `db` (
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
+ `Delete_history_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
PRIMARY KEY (`Host`,`Db`,`User`),
KEY `User` (`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Database privileges'
@@ -118,6 +120,7 @@ user CREATE TABLE `user` (
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
+ `Delete_history_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
`ssl_cipher` blob NOT NULL,
`x509_issuer` blob NOT NULL,
@@ -152,7 +155,7 @@ tables_priv CREATE TABLE `tables_priv` (
`Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
`Grantor` char(141) COLLATE utf8_bin NOT NULL DEFAULT '',
`Timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') CHARACTER SET utf8 NOT NULL DEFAULT '',
+ `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger','Delete versioning rows') CHARACTER SET utf8 NOT NULL DEFAULT '',
`Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '',
PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`),
KEY `Grantor` (`Grantor`)
@@ -214,12 +217,13 @@ proc CREATE TABLE `proc` (
`definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '',
+ `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') NOT NULL DEFAULT '',
`comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
+ `aggregate` enum('NONE','GROUP') NOT NULL DEFAULT 'NONE',
PRIMARY KEY (`db`,`name`,`type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stored Procedures'
show create table event;
@@ -239,7 +243,7 @@ event CREATE TABLE `event` (
`ends` datetime DEFAULT NULL,
`status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED',
`on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP',
- `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '',
+ `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') NOT NULL DEFAULT '',
`comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`originator` int(10) unsigned NOT NULL,
`time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM',
diff --git a/mysql-test/r/table_elim.result b/mysql-test/r/table_elim.result
index 04a9b47b6c9..cf9a4a38779 100644
--- a/mysql-test/r/table_elim.result
+++ b/mysql-test/r/table_elim.result
@@ -143,7 +143,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 DEPENDENT SUBQUERY t2 ref PRIMARY PRIMARY 4 test.a2.id 2 100.00 Using index
Warnings:
Note 1276 Field or reference 'test.a2.id' of SELECT #3 was resolved in SELECT #2
-Note 1003 /* select#1 */ select `f`.`id` AS `id` from `test`.`t0` `f` join `test`.`t2` `a2` where `f`.`id` = `a2`.`id` and `a2`.`attr2` between 12 and 14 and `a2`.`fromdate` = (/* select#3 */ select max(`test`.`t2`.`fromdate`) from `test`.`t2` where `test`.`t2`.`id` = `a2`.`id`)
+Note 1003 /* select#1 */ select `f`.`id` AS `id` from `test`.`t0` `f` join `test`.`t2` `a2` where `f`.`id` = `a2`.`id` and `a2`.`attr2` between 12 and 14 and `a2`.`fromdate` = <expr_cache><`a2`.`id`>((/* select#3 */ select max(`test`.`t2`.`fromdate`) from `test`.`t2` where `test`.`t2`.`id` = `a2`.`id`))
This should use one table:
explain select id from v2 where id=2;
id select_type table type possible_keys key key_len ref rows Extra
@@ -171,7 +171,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 DEPENDENT SUBQUERY t2 ref PRIMARY PRIMARY 4 test.f.id 2 100.00 Using index
Warnings:
Note 1276 Field or reference 'test.f.id' of SELECT #3 was resolved in SELECT #2
-Note 1003 /* select#1 */ select `f`.`id` AS `id` from `test`.`t0` `f` join `test`.`t2` `a2` where `f`.`id` = `a2`.`id` and `a2`.`attr2` between 12 and 14 and `a2`.`fromdate` = (/* select#3 */ select max(`test`.`t2`.`fromdate`) from `test`.`t2` where `test`.`t2`.`id` = `f`.`id`)
+Note 1003 /* select#1 */ select `f`.`id` AS `id` from `test`.`t0` `f` join `test`.`t2` `a2` where `f`.`id` = `a2`.`id` and `a2`.`attr2` between 12 and 14 and `a2`.`fromdate` = <expr_cache><`f`.`id`>((/* select#3 */ select max(`test`.`t2`.`fromdate`) from `test`.`t2` where `test`.`t2`.`id` = `f`.`id`))
drop view v1, v2;
drop table t0, t1, t2;
create table t1 (a int);
diff --git a/mysql-test/r/table_value_constr.result b/mysql-test/r/table_value_constr.result
new file mode 100644
index 00000000000..39caba331ef
--- /dev/null
+++ b/mysql-test/r/table_value_constr.result
@@ -0,0 +1,2073 @@
+create table t1 (a int, b int);
+insert into t1 values (1,2),(4,6),(9,7),
+(1,1),(2,5),(7,8);
+# just VALUES
+values (1,2);
+1 2
+1 2
+values (1,2), (3,4), (5.6,0);
+1 2
+1.0 2
+3.0 4
+5.6 0
+values ("abc", "def");
+abc def
+abc def
+# UNION that uses VALUES structure(s)
+select 1,2
+union
+values (1,2);
+1 2
+1 2
+values (1,2)
+union
+select 1,2;
+1 2
+1 2
+select 1,2
+union
+values (1,2),(3,4),(5,6),(7,8);
+1 2
+1 2
+3 4
+5 6
+7 8
+select 3,7
+union
+values (1,2),(3,4),(5,6);
+3 7
+3 7
+1 2
+3 4
+5 6
+select 3,7,4
+union
+values (1,2,5),(4,5,6);
+3 7 4
+3 7 4
+1 2 5
+4 5 6
+select 1,2
+union
+values (1,7),(3,6.5);
+1 2
+1 2.0
+1 7.0
+3 6.5
+select 1,2
+union
+values (1,2.0),(3,6);
+1 2
+1 2.0
+3 6.0
+select 1.8,2
+union
+values (1,2),(3,6);
+1.8 2
+1.8 2
+1.0 2
+3.0 6
+values (1,2.4),(3,6)
+union
+select 2.8,9;
+1 2.4
+1.0 2.4
+3.0 6.0
+2.8 9.0
+values (1,2),(3,4),(5,6),(7,8)
+union
+select 5,6;
+1 2
+1 2
+3 4
+5 6
+7 8
+select "ab","cdf"
+union
+values ("al","zl"),("we","q");
+ab cdf
+ab cdf
+al zl
+we q
+values ("ab", "cdf")
+union
+select "ab","cdf";
+ab cdf
+ab cdf
+values (1,2)
+union
+values (1,2),(5,6);
+1 2
+1 2
+5 6
+values (1,2)
+union
+values (3,4),(5,6);
+1 2
+1 2
+3 4
+5 6
+values (1,2)
+union
+values (1,2)
+union values (4,5);
+1 2
+1 2
+4 5
+# UNION ALL that uses VALUES structure
+values (1,2),(3,4)
+union all
+select 5,6;
+1 2
+1 2
+3 4
+5 6
+values (1,2),(3,4)
+union all
+select 1,2;
+1 2
+1 2
+3 4
+1 2
+select 5,6
+union all
+values (1,2),(3,4);
+5 6
+5 6
+1 2
+3 4
+select 1,2
+union all
+values (1,2),(3,4);
+1 2
+1 2
+1 2
+3 4
+values (1,2)
+union all
+values (1,2),(5,6);
+1 2
+1 2
+1 2
+5 6
+values (1,2)
+union all
+values (3,4),(5,6);
+1 2
+1 2
+3 4
+5 6
+values (1,2)
+union all
+values (1,2)
+union all
+values (4,5);
+1 2
+1 2
+1 2
+4 5
+values (1,2)
+union all
+values (1,2)
+union values (1,2);
+1 2
+1 2
+values (1,2)
+union
+values (1,2)
+union all
+values (1,2);
+1 2
+1 2
+1 2
+# EXCEPT that uses VALUES structure(s)
+select 1,2
+except
+values (3,4),(5,6);
+1 2
+1 2
+select 1,2
+except
+values (1,2),(3,4);
+1 2
+values (1,2),(3,4)
+except
+select 5,6;
+1 2
+1 2
+3 4
+values (1,2),(3,4)
+except
+select 1,2;
+1 2
+3 4
+values (1,2),(3,4)
+except
+values (5,6);
+1 2
+1 2
+3 4
+values (1,2),(3,4)
+except
+values (1,2);
+1 2
+3 4
+# INTERSECT that uses VALUES structure(s)
+select 1,2
+intersect
+values (3,4),(5,6);
+1 2
+select 1,2
+intersect
+values (1,2),(3,4);
+1 2
+1 2
+values (1,2),(3,4)
+intersect
+select 5,6;
+1 2
+values (1,2),(3,4)
+intersect
+select 1,2;
+1 2
+1 2
+values (1,2),(3,4)
+intersect
+values (5,6);
+1 2
+values (1,2),(3,4)
+intersect
+values (1,2);
+1 2
+1 2
+# combination of different structures that uses VALUES structures : UNION + EXCEPT
+values (1,2),(3,4)
+except
+select 1,2
+union values (1,2);
+1 2
+1 2
+3 4
+values (1,2),(3,4)
+except
+values (1,2)
+union
+values (1,2);
+1 2
+1 2
+3 4
+values (1,2),(3,4)
+except
+values (1,2)
+union
+values (3,4);
+1 2
+3 4
+values (1,2),(3,4)
+union
+values (1,2)
+except
+values (1,2);
+1 2
+3 4
+# combination of different structures that uses VALUES structures : UNION ALL + EXCEPT
+values (1,2),(3,4)
+except
+select 1,2
+union all
+values (1,2);
+1 2
+1 2
+3 4
+values (1,2),(3,4)
+except
+values (1,2)
+union all
+values (1,2);
+1 2
+1 2
+3 4
+values (1,2),(3,4)
+except
+values (1,2)
+union all
+values (3,4);
+1 2
+3 4
+3 4
+values (1,2),(3,4)
+union all
+values (1,2)
+except
+values (1,2);
+1 2
+3 4
+# combination of different structures that uses VALUES structures : UNION + INTERSECT
+values (1,2),(3,4)
+intersect
+select 1,2
+union
+values (1,2);
+1 2
+1 2
+values (1,2),(3,4)
+intersect
+values (1,2)
+union
+values (1,2);
+1 2
+1 2
+values (1,2),(3,4)
+intersect
+values (1,2)
+union
+values (3,4);
+1 2
+1 2
+3 4
+values (1,2),(3,4)
+union
+values (1,2)
+intersect
+values (1,2);
+1 2
+1 2
+3 4
+# combination of different structures that uses VALUES structures : UNION ALL + INTERSECT
+values (1,2),(3,4)
+intersect
+select 1,2
+union all
+values (1,2);
+1 2
+1 2
+1 2
+values (1,2),(3,4)
+intersect
+values (1,2)
+union all
+values (1,2);
+1 2
+1 2
+1 2
+values (1,2),(3,4)
+intersect
+values (1,2)
+union all
+values (3,4);
+1 2
+1 2
+3 4
+values (1,2),(3,4)
+union all
+values (1,2)
+intersect
+values (1,2);
+1 2
+1 2
+3 4
+1 2
+# combination of different structures that uses VALUES structures : UNION + UNION ALL
+values (1,2),(3,4)
+union all
+select 1,2
+union
+values (1,2);
+1 2
+1 2
+3 4
+values (1,2),(3,4)
+union all
+values (1,2)
+union
+values (1,2);
+1 2
+1 2
+3 4
+values (1,2),(3,4)
+union all
+values (1,2)
+union
+values (3,4);
+1 2
+1 2
+3 4
+values (1,2),(3,4)
+union
+values (1,2)
+union all
+values (1,2);
+1 2
+1 2
+3 4
+1 2
+values (1,2)
+union
+values (1,2)
+union all
+values (1,2);
+1 2
+1 2
+1 2
+# CTE that uses VALUES structure(s) : non-recursive CTE
+with t2 as
+(
+values (1,2),(3,4)
+)
+select * from t2;
+1 2
+1 2
+3 4
+with t2 as
+(
+select 1,2
+union
+values (1,2)
+)
+select * from t2;
+1 2
+1 2
+with t2 as
+(
+select 1,2
+union
+values (1,2),(3,4)
+)
+select * from t2;
+1 2
+1 2
+3 4
+with t2 as
+(
+values (1,2)
+union
+select 1,2
+)
+select * from t2;
+1 2
+1 2
+with t2 as
+(
+values (1,2),(3,4)
+union
+select 1,2
+)
+select * from t2;
+1 2
+1 2
+3 4
+with t2 as
+(
+values (5,6)
+union
+values (1,2),(3,4)
+)
+select * from t2;
+5 6
+5 6
+1 2
+3 4
+with t2 as
+(
+values (1,2)
+union
+values (1,2),(3,4)
+)
+select * from t2;
+1 2
+1 2
+3 4
+with t2 as
+(
+select 1,2
+union all
+values (1,2),(3,4)
+)
+select * from t2;
+1 2
+1 2
+1 2
+3 4
+with t2 as
+(
+values (1,2),(3,4)
+union all
+select 1,2
+)
+select * from t2;
+1 2
+1 2
+3 4
+1 2
+with t2 as
+(
+values (1,2)
+union all
+values (1,2),(3,4)
+)
+select * from t2;
+1 2
+1 2
+1 2
+3 4
+# recursive CTE that uses VALUES structure(s) : singe VALUES structure as anchor
+with recursive t2(a,b) as
+(
+values(1,1)
+union
+select t1.a, t1.b
+from t1,t2
+where t1.a=t2.a
+)
+select * from t2;
+a b
+1 1
+1 2
+with recursive t2(a,b) as
+(
+values(1,1)
+union
+select t1.a+1, t1.b
+from t1,t2
+where t1.a=t2.a
+)
+select * from t2;
+a b
+1 1
+2 2
+2 1
+3 5
+# recursive CTE that uses VALUES structure(s) : several VALUES structures as anchors
+with recursive t2(a,b) as
+(
+values(1,1)
+union
+values (3,4)
+union
+select t2.a+1, t1.b
+from t1,t2
+where t1.a=t2.a
+)
+select * from t2;
+a b
+1 1
+3 4
+2 2
+2 1
+3 5
+# recursive CTE that uses VALUES structure(s) : that uses UNION ALL
+with recursive t2(a,b,st) as
+(
+values(1,1,1)
+union all
+select t2.a, t1.b, t2.st+1
+from t1,t2
+where t1.a=t2.a and st<3
+)
+select * from t2;
+a b st
+1 1 1
+1 2 2
+1 1 2
+1 2 3
+1 2 3
+1 1 3
+1 1 3
+# recursive CTE that uses VALUES structure(s) : computation of factorial (first 10 elements)
+with recursive fact(n,f) as
+(
+values(1,1)
+union
+select n+1,f*n from fact where n < 10
+)
+select * from fact;
+n f
+1 1
+2 1
+3 2
+4 6
+5 24
+6 120
+7 720
+8 5040
+9 40320
+10 362880
+# Derived table that uses VALUES structure(s) : singe VALUES structure
+select * from (values (1,2),(3,4)) as t2;
+1 2
+1 2
+3 4
+# Derived table that uses VALUES structure(s) : UNION with VALUES structure(s)
+select * from (select 1,2 union values (1,2)) as t2;
+1 2
+1 2
+select * from (select 1,2 union values (1,2),(3,4)) as t2;
+1 2
+1 2
+3 4
+select * from (values (1,2) union select 1,2) as t2;
+1 2
+1 2
+select * from (values (1,2),(3,4) union select 1,2) as t2;
+1 2
+1 2
+3 4
+select * from (values (5,6) union values (1,2),(3,4)) as t2;
+5 6
+5 6
+1 2
+3 4
+select * from (values (1,2) union values (1,2),(3,4)) as t2;
+1 2
+1 2
+3 4
+# Derived table that uses VALUES structure(s) : UNION ALL with VALUES structure(s)
+select * from (select 1,2 union all values (1,2),(3,4)) as t2;
+1 2
+1 2
+1 2
+3 4
+select * from (values (1,2),(3,4) union all select 1,2) as t2;
+1 2
+1 2
+3 4
+1 2
+select * from (values (1,2) union all values (1,2),(3,4)) as t2;
+1 2
+1 2
+1 2
+3 4
+# CREATE VIEW that uses VALUES structure(s) : singe VALUES structure
+create view v1 as values (1,2),(3,4);
+select * from v1;
+1 2
+1 2
+3 4
+drop view v1;
+# CREATE VIEW that uses VALUES structure(s) : UNION with VALUES structure(s)
+create view v1 as
+select 1,2
+union
+values (1,2);
+select * from v1;
+1 2
+1 2
+drop view v1;
+create view v1 as
+select 1,2
+union
+values (1,2),(3,4);
+select * from v1;
+1 2
+1 2
+3 4
+drop view v1;
+create view v1 as
+values (1,2)
+union
+select 1,2;
+select * from v1;
+1 2
+1 2
+drop view v1;
+create view v1 as
+values (1,2),(3,4)
+union
+select 1,2;
+select * from v1;
+1 2
+1 2
+3 4
+drop view v1;
+create view v1 as
+values (5,6)
+union
+values (1,2),(3,4);
+select * from v1;
+5 6
+5 6
+1 2
+3 4
+drop view v1;
+# CREATE VIEW that uses VALUES structure(s) : UNION ALL with VALUES structure(s)
+create view v1 as
+values (1,2)
+union
+values (1,2),(3,4);
+select * from v1;
+1 2
+1 2
+3 4
+drop view v1;
+create view v1 as
+select 1,2
+union all
+values (1,2),(3,4);
+select * from v1;
+1 2
+1 2
+1 2
+3 4
+drop view v1;
+create view v1 as
+values (1,2),(3,4)
+union all
+select 1,2;
+select * from v1;
+1 2
+1 2
+3 4
+1 2
+drop view v1;
+create view v1 as
+values (1,2)
+union all
+values (1,2),(3,4);
+select * from v1;
+1 2
+1 2
+1 2
+3 4
+drop view v1;
+# IN-subquery with VALUES structure(s) : simple case
+select * from t1
+where a in (values (1));
+a b
+1 2
+1 1
+select * from t1
+where a in (select * from (values (1)) as tvc_0);
+a b
+1 2
+1 1
+explain extended select * from t1
+where a in (values (1));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+3 MATERIALIZED <derived2> ALL NULL NULL NULL NULL 2 100.00
+2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+explain extended select * from t1
+where a in (select * from (values (1)) as tvc_0);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+# IN-subquery with VALUES structure(s) : UNION with VALUES on the first place
+select * from t1
+where a in (values (1) union select 2);
+a b
+1 2
+1 1
+2 5
+select * from t1
+where a in (select * from (values (1)) as tvc_0 union
+select 2);
+a b
+1 2
+1 1
+2 5
+explain extended select * from t1
+where a in (values (1) union select 2);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+4 DEPENDENT SUBQUERY <derived2> ref key0 key0 4 func 2 100.00
+2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union4,3> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#4 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1` union /* select#3 */ select 2 having <cache>(`test`.`t1`.`a`) = <ref_null_helper>(2))))
+explain extended select * from t1
+where a in (select * from (values (1)) as tvc_0 union
+select 2);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY <derived3> ref key0 key0 4 func 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+4 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,4> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1` union /* select#4 */ select 2 having <cache>(`test`.`t1`.`a`) = <ref_null_helper>(2))))
+# IN-subquery with VALUES structure(s) : UNION with VALUES on the second place
+select * from t1
+where a in (select 2 union values (1));
+a b
+1 2
+1 1
+2 5
+select * from t1
+where a in (select 2 union
+select * from (values (1)) tvc_0);
+a b
+1 2
+1 1
+2 5
+explain extended select * from t1
+where a in (select 2 union values (1));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+4 DEPENDENT UNION <derived3> ref key0 key0 4 func 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,4> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select 2 having <cache>(`test`.`t1`.`a`) = <ref_null_helper>(2) union /* select#4 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1`)))
+explain extended select * from t1
+where a in (select 2 union
+select * from (values (1)) tvc_0);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 DEPENDENT UNION <derived4> ref key0 key0 4 func 2 100.00
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select 2 having <cache>(`test`.`t1`.`a`) = <ref_null_helper>(2) union /* select#3 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1`)))
+# IN-subquery with VALUES structure(s) : UNION ALL
+select * from t1
+where a in (values (1) union all select b from t1);
+a b
+1 2
+1 1
+2 5
+7 8
+select * from t1
+where a in (select * from (values (1)) as tvc_0 union all
+select b from t1);
+a b
+1 2
+1 1
+2 5
+7 8
+explain extended select * from t1
+where a in (values (1) union all select b from t1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+4 DEPENDENT SUBQUERY <derived2> ref key0 key0 4 func 2 100.00
+2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 DEPENDENT UNION t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#4 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1` union all /* select#3 */ select `test`.`t1`.`b` from `test`.`t1` where <cache>(`test`.`t1`.`a`) = `test`.`t1`.`b`)))
+explain extended select * from t1
+where a in (select * from (values (1)) as tvc_0 union all
+select b from t1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY <derived3> ref key0 key0 4 func 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+4 DEPENDENT UNION t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1` union all /* select#4 */ select `test`.`t1`.`b` from `test`.`t1` where <cache>(`test`.`t1`.`a`) = `test`.`t1`.`b`)))
+# NOT IN subquery with VALUES structure(s) : simple case
+select * from t1
+where a not in (values (1),(2));
+a b
+4 6
+9 7
+7 8
+select * from t1
+where a not in (select * from (values (1),(2)) as tvc_0);
+a b
+4 6
+9 7
+7 8
+explain extended select * from t1
+where a not in (values (1),(2));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+3 MATERIALIZED <derived2> ALL NULL NULL NULL NULL 2 100.00
+2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (/* select#3 */ select `tvc_0`.`1` from (values (1),(2)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery3>`.`1`))))
+explain extended select * from t1
+where a not in (select * from (values (1),(2)) as tvc_0);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (/* select#2 */ select `tvc_0`.`1` from (values (1),(2)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`1`))))
+# NOT IN subquery with VALUES structure(s) : UNION with VALUES on the first place
+select * from t1
+where a not in (values (1) union select 2);
+a b
+4 6
+9 7
+7 8
+select * from t1
+where a not in (select * from (values (1)) as tvc_0 union
+select 2);
+a b
+4 6
+9 7
+7 8
+explain extended select * from t1
+where a not in (values (1) union select 2);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+4 DEPENDENT SUBQUERY <derived2> ALL NULL NULL NULL NULL 2 100.00 Using where
+2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union4,3> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#4 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where trigcond(<cache>(`test`.`t1`.`a`) = `tvc_0`.`1`) union /* select#3 */ select 2 having trigcond(<cache>(`test`.`t1`.`a`) = <ref_null_helper>(2)))))
+explain extended select * from t1
+where a not in (select * from (values (1)) as tvc_0 union
+select 2);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY <derived3> ALL NULL NULL NULL NULL 2 100.00 Using where
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+4 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,4> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where trigcond(<cache>(`test`.`t1`.`a`) = `tvc_0`.`1`) union /* select#4 */ select 2 having trigcond(<cache>(`test`.`t1`.`a`) = <ref_null_helper>(2)))))
+# NOT IN subquery with VALUES structure(s) : UNION with VALUES on the second place
+select * from t1
+where a not in (select 2 union values (1));
+a b
+4 6
+9 7
+7 8
+select * from t1
+where a not in (select 2 union
+select * from (values (1)) as tvc_0);
+a b
+4 6
+9 7
+7 8
+explain extended select * from t1
+where a not in (select 2 union values (1));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+4 DEPENDENT UNION <derived3> ALL NULL NULL NULL NULL 2 100.00 Using where
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,4> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select 2 having trigcond(<cache>(`test`.`t1`.`a`) = <ref_null_helper>(2)) union /* select#4 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where trigcond(<cache>(`test`.`t1`.`a`) = `tvc_0`.`1`))))
+explain extended select * from t1
+where a not in (select 2 union
+select * from (values (1)) as tvc_0);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 DEPENDENT UNION <derived4> ALL NULL NULL NULL NULL 2 100.00 Using where
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select 2 having trigcond(<cache>(`test`.`t1`.`a`) = <ref_null_helper>(2)) union /* select#3 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where trigcond(<cache>(`test`.`t1`.`a`) = `tvc_0`.`1`))))
+# ANY-subquery with VALUES structure(s) : simple case
+select * from t1
+where a = any (values (1),(2));
+a b
+1 2
+1 1
+2 5
+select * from t1
+where a = any (select * from (values (1),(2)) as tvc_0);
+a b
+1 2
+1 1
+2 5
+explain extended select * from t1
+where a = any (values (1),(2));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+3 MATERIALIZED <derived2> ALL NULL NULL NULL NULL 2 100.00
+2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+explain extended select * from t1
+where a = any (select * from (values (1),(2)) as tvc_0);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
+2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
+# ANY-subquery with VALUES structure(s) : UNION with VALUES on the first place
+select * from t1
+where a = any (values (1) union select 2);
+a b
+1 2
+1 1
+2 5
+select * from t1
+where a = any (select * from (values (1)) as tvc_0 union
+select 2);
+a b
+1 2
+1 1
+2 5
+explain extended select * from t1
+where a = any (values (1) union select 2);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+4 DEPENDENT SUBQUERY <derived2> ref key0 key0 4 func 2 100.00
+2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union4,3> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#4 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1` union /* select#3 */ select 2 having <cache>(`test`.`t1`.`a`) = <ref_null_helper>(2))))
+explain extended select * from t1
+where a = any (select * from (values (1)) as tvc_0 union
+select 2);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY <derived3> ref key0 key0 4 func 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+4 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,4> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1` union /* select#4 */ select 2 having <cache>(`test`.`t1`.`a`) = <ref_null_helper>(2))))
+# ANY-subquery with VALUES structure(s) : UNION with VALUES on the second place
+select * from t1
+where a = any (select 2 union values (1));
+a b
+1 2
+1 1
+2 5
+select * from t1
+where a = any (select 2 union
+select * from (values (1)) as tvc_0);
+a b
+1 2
+1 1
+2 5
+explain extended select * from t1
+where a = any (select 2 union values (1));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+4 DEPENDENT UNION <derived3> ref key0 key0 4 func 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,4> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select 2 having <cache>(`test`.`t1`.`a`) = <ref_null_helper>(2) union /* select#4 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1`)))
+explain extended select * from t1
+where a = any (select 2 union
+select * from (values (1)) as tvc_0);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 DEPENDENT UNION <derived4> ref key0 key0 4 func 2 100.00
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select 2 having <cache>(`test`.`t1`.`a`) = <ref_null_helper>(2) union /* select#3 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1`)))
+# ALL-subquery with VALUES structure(s) : simple case
+select * from t1
+where a = all (values (1));
+a b
+1 2
+1 1
+select * from t1
+where a = all (select * from (values (1)) as tvc_0);
+a b
+1 2
+1 1
+explain extended select * from t1
+where a = all (values (1));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+3 DEPENDENT SUBQUERY <derived2> ALL NULL NULL NULL NULL 2 100.00 Using where
+2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <not>(<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#3 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where trigcond(<cache>(`test`.`t1`.`a`) <> `tvc_0`.`1`)))))
+explain extended select * from t1
+where a = all (select * from (values (1)) as tvc_0);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY <derived3> ALL NULL NULL NULL NULL 2 100.00 Using where
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <not>(<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where trigcond(<cache>(`test`.`t1`.`a`) <> `tvc_0`.`1`)))))
+# ALL-subquery with VALUES structure(s) : UNION with VALUES on the first place
+select * from t1
+where a = all (values (1) union select 1);
+a b
+1 2
+1 1
+select * from t1
+where a = all (select * from (values (1)) as tvc_0 union
+select 1);
+a b
+1 2
+1 1
+explain extended select * from t1
+where a = all (values (1) union select 1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+4 DEPENDENT SUBQUERY <derived2> ALL NULL NULL NULL NULL 2 100.00 Using where
+2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union4,3> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <not>(<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#4 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where trigcond(<cache>(`test`.`t1`.`a`) <> `tvc_0`.`1`) union /* select#3 */ select 1 having trigcond(<cache>(`test`.`t1`.`a`) <> <ref_null_helper>(1))))))
+explain extended select * from t1
+where a = all (select * from (values (1)) as tvc_0 union
+select 1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY <derived3> ALL NULL NULL NULL NULL 2 100.00 Using where
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+4 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,4> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <not>(<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where trigcond(<cache>(`test`.`t1`.`a`) <> `tvc_0`.`1`) union /* select#4 */ select 1 having trigcond(<cache>(`test`.`t1`.`a`) <> <ref_null_helper>(1))))))
+# ALL-subquery with VALUES structure(s) : UNION with VALUES on the second place
+select * from t1
+where a = any (select 1 union values (1));
+a b
+1 2
+1 1
+select * from t1
+where a = any (select 1 union
+select * from (values (1)) as tvc_0);
+a b
+1 2
+1 1
+explain extended select * from t1
+where a = any (select 1 union values (1));
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+4 DEPENDENT UNION <derived3> ref key0 key0 4 func 2 100.00
+3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,4> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select 1 having <cache>(`test`.`t1`.`a`) = <ref_null_helper>(1) union /* select#4 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1`)))
+explain extended select * from t1
+where a = any (select 1 union
+select * from (values (1)) as tvc_0);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00 Using where
+2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 DEPENDENT UNION <derived4> ref key0 key0 4 func 2 100.00
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
+Warnings:
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where <expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select 1 having <cache>(`test`.`t1`.`a`) = <ref_null_helper>(1) union /* select#3 */ select `tvc_0`.`1` from (values (1)) `tvc_0` where <cache>(`test`.`t1`.`a`) = `tvc_0`.`1`)))
+# prepare statement that uses VALUES structure(s): single VALUES structure
+prepare stmt1 from "
+values (1,2);
+";
+execute stmt1;
+1 2
+1 2
+execute stmt1;
+1 2
+1 2
+deallocate prepare stmt1;
+# prepare statement that uses VALUES structure(s): UNION with VALUES structure(s)
+prepare stmt1 from "
+ select 1,2
+ union
+ values (1,2),(3,4);
+";
+execute stmt1;
+1 2
+1 2
+3 4
+execute stmt1;
+1 2
+1 2
+3 4
+deallocate prepare stmt1;
+prepare stmt1 from "
+ values (1,2),(3,4)
+ union
+ select 1,2;
+";
+execute stmt1;
+1 2
+1 2
+3 4
+execute stmt1;
+1 2
+1 2
+3 4
+deallocate prepare stmt1;
+prepare stmt1 from "
+ select 1,2
+ union
+ values (3,4)
+ union
+ values (1,2);
+";
+execute stmt1;
+1 2
+1 2
+3 4
+execute stmt1;
+1 2
+1 2
+3 4
+deallocate prepare stmt1;
+prepare stmt1 from "
+ values (5,6)
+ union
+ values (1,2),(3,4);
+";
+execute stmt1;
+5 6
+5 6
+1 2
+3 4
+execute stmt1;
+5 6
+5 6
+1 2
+3 4
+deallocate prepare stmt1;
+# prepare statement that uses VALUES structure(s): UNION ALL with VALUES structure(s)
+prepare stmt1 from "
+ select 1,2
+ union
+ values (1,2),(3,4);
+";
+execute stmt1;
+1 2
+1 2
+3 4
+execute stmt1;
+1 2
+1 2
+3 4
+deallocate prepare stmt1;
+prepare stmt1 from "
+ values (1,2),(3,4)
+ union all
+ select 1,2;
+";
+execute stmt1;
+1 2
+1 2
+3 4
+1 2
+execute stmt1;
+1 2
+1 2
+3 4
+1 2
+deallocate prepare stmt1;
+prepare stmt1 from "
+ select 1,2
+ union all
+ values (3,4)
+ union all
+ values (1,2);
+";
+execute stmt1;
+1 2
+1 2
+3 4
+1 2
+execute stmt1;
+1 2
+1 2
+3 4
+1 2
+deallocate prepare stmt1;
+prepare stmt1 from "
+ values (1,2)
+ union all
+ values (1,2),(3,4);
+";
+execute stmt1;
+1 2
+1 2
+1 2
+3 4
+execute stmt1;
+1 2
+1 2
+1 2
+3 4
+deallocate prepare stmt1;
+# explain query that uses VALUES structure(s): single VALUES structure
+explain
+values (1,2);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
+explain format=json
+values (1,2);
+EXPLAIN
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<unit1>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+# explain query that uses VALUES structure(s): UNION with VALUES structure(s)
+explain
+select 1,2
+union
+values (1,2),(3,4);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL
+explain
+values (1,2),(3,4)
+union
+select 1,2;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL
+explain
+values (5,6)
+union
+values (1,2),(3,4);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL
+explain format=json
+select 1,2
+union
+values (1,2),(3,4);
+EXPLAIN
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+explain format=json
+values (1,2),(3,4)
+union
+select 1,2;
+EXPLAIN
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+explain format=json
+values (5,6)
+union
+values (1,2),(3,4);
+EXPLAIN
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+explain
+select 1,2
+union
+values (3,4)
+union
+values (1,2);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
+3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union1,2,3> ALL NULL NULL NULL NULL NULL
+explain format=json
+select 1,2
+union
+values (3,4)
+union
+values (1,2);
+EXPLAIN
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+# explain query that uses VALUES structure(s): UNION ALL with VALUES structure(s)
+explain
+select 1,2
+union
+values (1,2),(3,4);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL
+explain
+values (1,2),(3,4)
+union all
+select 1,2;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
+explain
+values (1,2)
+union all
+values (1,2),(3,4);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
+explain format=json
+values (1,2),(3,4)
+union all
+select 1,2;
+EXPLAIN
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+explain format=json
+select 1,2
+union
+values (1,2),(3,4);
+EXPLAIN
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+explain format=json
+values (1,2)
+union all
+values (1,2),(3,4);
+EXPLAIN
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+explain
+select 1,2
+union all
+values (3,4)
+union all
+values (1,2);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
+3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
+explain format=json
+select 1,2
+union all
+values (3,4)
+union all
+values (1,2);
+EXPLAIN
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2,3>",
+ "access_type": "ALL",
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+# analyze query that uses VALUES structure(s): single VALUES structure
+analyze
+values (1,2);
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+analyze format=json
+values (1,2);
+ANALYZE
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<unit1>",
+ "access_type": "ALL",
+ "r_loops": 0,
+ "r_rows": null,
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+# analyze query that uses VALUES structure(s): UNION with VALUES structure(s)
+analyze
+select 1,2
+union
+values (1,2),(3,4);
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL 2.00 NULL NULL
+analyze
+values (1,2),(3,4)
+union
+select 1,2;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL 2.00 NULL NULL
+analyze
+values (5,6)
+union
+values (1,2),(3,4);
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL 3.00 NULL NULL
+analyze format=json
+select 1,2
+union
+values (1,2),(3,4);
+ANALYZE
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "r_loops": 1,
+ "r_rows": 2,
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+analyze format=json
+values (1,2),(3,4)
+union
+select 1,2;
+ANALYZE
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "r_loops": 1,
+ "r_rows": 2,
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+analyze format=json
+values (5,6)
+union
+values (1,2),(3,4);
+ANALYZE
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "r_loops": 1,
+ "r_rows": 3,
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+analyze
+select 1,2
+union
+values (3,4)
+union
+values (1,2);
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union1,2,3> ALL NULL NULL NULL NULL NULL 2.00 NULL NULL
+analyze format=json
+select 1,2
+union
+values (3,4)
+union
+values (1,2);
+ANALYZE
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2,3>",
+ "access_type": "ALL",
+ "r_loops": 1,
+ "r_rows": 2,
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+# analyze query that uses VALUES structure(s): UNION ALL with VALUES structure(s)
+analyze
+select 1,2
+union
+values (1,2),(3,4);
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL 2.00 NULL NULL
+analyze
+values (1,2),(3,4)
+union all
+select 1,2;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+analyze
+values (1,2)
+union all
+values (1,2),(3,4);
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+analyze format=json
+values (1,2),(3,4)
+union all
+select 1,2;
+ANALYZE
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "r_loops": 0,
+ "r_rows": null,
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+analyze format=json
+select 1,2
+union
+values (1,2),(3,4);
+ANALYZE
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "r_loops": 1,
+ "r_rows": 2,
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+analyze format=json
+values (1,2)
+union all
+values (1,2),(3,4);
+ANALYZE
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2>",
+ "access_type": "ALL",
+ "r_loops": 0,
+ "r_rows": null,
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+analyze
+select 1,2
+union all
+values (3,4)
+union all
+values (1,2);
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+2 UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+3 UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL No tables used
+analyze format=json
+select 1,2
+union all
+values (3,4)
+union all
+values (1,2);
+ANALYZE
+{
+ "query_block": {
+ "union_result": {
+ "table_name": "<union1,2,3>",
+ "access_type": "ALL",
+ "r_loops": 0,
+ "r_rows": null,
+ "query_specifications": [
+ {
+ "query_block": {
+ "select_id": 1,
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 2,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ },
+ {
+ "query_block": {
+ "select_id": 3,
+ "operation": "UNION",
+ "table": {
+ "message": "No tables used"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+# different number of values in TVC
+values (1,2),(3,4,5);
+ERROR HY000: The used table value constructor has a different number of values
+# illegal parameter data types in TVC
+values (1,point(1,1)),(1,1);
+ERROR HY000: Illegal parameter data types geometry and int for operation 'TABLE VALUE CONSTRUCTOR'
+values (1,point(1,1)+1);
+ERROR HY000: Illegal parameter data types geometry and int for operation '+'
+# field reference in TVC
+select * from (values (1), (b), (2)) as new_tvc;
+ERROR HY000: Field reference 'b' can't be used in table value constructor
+select * from (values (1), (t1.b), (2)) as new_tvc;
+ERROR HY000: Field reference 't1.b' can't be used in table value constructor
+drop table t1;
diff --git a/mysql-test/r/timeout.result b/mysql-test/r/timeout.result
new file mode 100644
index 00000000000..8d1ca137043
--- /dev/null
+++ b/mysql-test/r/timeout.result
@@ -0,0 +1,67 @@
+#
+# MDEV-11379 - AliSQL: [Feature] Issue#8: SELECT FOR UPDATE WAIT
+# MDEV-11388 - AliSQL: [Feature] Issue#15 DDL FAST FAIL
+#
+CREATE TABLE t1(a INT, b TEXT, c MULTIPOLYGON NOT NULL);
+CREATE INDEX i1 ON t1(a) WAIT 1;
+CREATE FULLTEXT INDEX i2 ON t1(b) WAIT 1;
+CREATE SPATIAL INDEX i3 ON t1(c) WAIT 1;
+ALTER TABLE t1 WAIT 1 COMMENT='test';
+OPTIMIZE TABLE t1 WAIT 1;
+Table Op Msg_type Msg_text
+test.t1 optimize status OK
+DROP INDEX i1 ON t1 WAIT 1;
+TRUNCATE TABLE t1 WAIT 1;
+RENAME TABLE t1 WAIT 1 TO t2;
+RENAME TABLE t2 NOWAIT TO t1;
+connect con1, localhost, root,,;
+LOCK TABLE t1 WRITE WAIT 31536001;
+Warnings:
+Warning 1292 Truncated incorrect lock_wait_timeout value: '31536001'
+connection default;
+CREATE INDEX i1 ON t1(a) WAIT 0;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+CREATE INDEX i1 ON t1(a) NOWAIT;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+CREATE FULLTEXT INDEX i2 ON t1(b) WAIT 0;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+CREATE FULLTEXT INDEX i2 ON t1(b) NOWAIT;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+CREATE SPATIAL INDEX i3 ON t1(c) WAIT 0;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+CREATE SPATIAL INDEX i3 ON t1(c) NOWAIT;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+ALTER TABLE t1 WAIT 0 COMMENT='test';
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+ALTER TABLE t1 NOWAIT COMMENT='test';
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+OPTIMIZE TABLE t1 WAIT 0;
+Table Op Msg_type Msg_text
+test.t1 optimize Error Lock wait timeout exceeded; try restarting transaction
+test.t1 optimize status Operation failed
+OPTIMIZE TABLE t1 NOWAIT;
+Table Op Msg_type Msg_text
+test.t1 optimize Error Lock wait timeout exceeded; try restarting transaction
+test.t1 optimize status Operation failed
+DROP INDEX i1 ON t1 WAIT 0;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+DROP INDEX i1 ON t1 NOWAIT;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+TRUNCATE TABLE t1 WAIT 0;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+TRUNCATE TABLE t1 NOWAIT;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+RENAME TABLE t1 WAIT 0 TO t2;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+RENAME TABLE t1 NOWAIT TO t2;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+DROP TABLE t1 WAIT 0;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+DROP TABLE t1 NOWAIT;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+LOCK TABLE t1 WRITE WAIT 0;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+LOCK TABLE t1 WRITE NOWAIT;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+disconnect con1;
+DROP TABLE t1 WAIT 1;
diff --git a/mysql-test/r/transaction_timeout.result b/mysql-test/r/transaction_timeout.result
new file mode 100644
index 00000000000..95237cf6940
--- /dev/null
+++ b/mysql-test/r/transaction_timeout.result
@@ -0,0 +1,51 @@
+CREATE TABLE t1 (a INT) ENGINE=InnoDB;
+# Test idle_transaction_timeout
+connect c0,localhost,root,,test,,;
+SHOW VARIABLES LIKE 'idle_%transaction_timeout';
+Variable_name Value
+idle_readonly_transaction_timeout 0
+idle_transaction_timeout 0
+idle_write_transaction_timeout 0
+SET autocommit=0;
+SET idle_transaction_timeout=1;
+BEGIN;
+SELECT * FROM t1;
+a
+SELECT * FROM t1;
+Got one of the listed errors
+disconnect c0;
+# Test idle_readonly_transaction_timeout
+connect c1,localhost,root,,test,,;
+SHOW VARIABLES LIKE 'idle_%transaction_timeout';
+Variable_name Value
+idle_readonly_transaction_timeout 0
+idle_transaction_timeout 0
+idle_write_transaction_timeout 0
+SET autocommit=0;
+SET idle_readonly_transaction_timeout=1;
+BEGIN;
+SELECT * FROM t1;
+a
+SELECT * FROM t1;
+Got one of the listed errors
+disconnect c1;
+# Test idle_write_transaction_timeout
+connect c2,localhost,root,,test,,;
+SHOW VARIABLES LIKE 'idle_%transaction_timeout';
+Variable_name Value
+idle_readonly_transaction_timeout 0
+idle_transaction_timeout 0
+idle_write_transaction_timeout 0
+SET autocommit=0;
+SET idle_write_transaction_timeout=1;
+BEGIN;
+SELECT * FROM t1;
+a
+SELECT * FROM t1;
+a
+INSERT INTO t1 VALUES (1);
+SELECT * FROM t1;
+Got one of the listed errors
+disconnect c2;
+connection default;
+DROP TABLE t1;
diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result
index 65384d3775a..4e5f9312e03 100644
--- a/mysql-test/r/union.result
+++ b/mysql-test/r/union.result
@@ -1634,8 +1634,8 @@ UNION
SELECT a FROM t1
ORDER BY a;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
-2 UNION t1 system NULL NULL NULL NULL 0 0.00 const row not found
+1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
+2 UNION t1 system NULL NULL NULL NULL 0 0.00 Const row not found
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL NULL Using filesort
Warnings:
Note 1003 /* select#1 */ select NULL AS `a` from `test`.`t1` union /* select#2 */ select NULL AS `a` from `test`.`t1` order by `a`
diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result
index dde58ed0ab2..d79a7bb4bec 100644
--- a/mysql-test/r/variables.result
+++ b/mysql-test/r/variables.result
@@ -1789,7 +1789,7 @@ set session collation_database=2048;
ERROR HY000: Unknown collation: '2048'
set session rand_seed1=DEFAULT;
ERROR 42000: Variable 'rand_seed1' doesn't have a default value
-set autocommit = values(v);
+set autocommit = value(v);
ERROR 42S22: Unknown column 'v' in 'field list'
set session sql_mode=ansi_quotes;
select * from information_schema.session_variables where variable_name='sql_mode';
diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result
index c7487964ba3..640d317713b 100644
--- a/mysql-test/r/view.result
+++ b/mysql-test/r/view.result
@@ -2934,10 +2934,10 @@ CREATE TABLE t1 (s1 int);
CREATE VIEW v1 AS SELECT * FROM t1;
EXPLAIN SELECT * FROM t1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
EXPLAIN SELECT * FROM v1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
INSERT INTO t1 VALUES (1), (3), (2);
EXPLAIN SELECT * FROM t1 t WHERE t.s1+1 < (SELECT MAX(t1.s1) FROM t1);
id select_type table type possible_keys key key_len ref rows Extra
@@ -4609,7 +4609,7 @@ WHERE t4.a >= t1.a);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00 Using where
-2 DEPENDENT SUBQUERY t3 system NULL NULL NULL NULL 0 0.00 const row not found
+2 DEPENDENT SUBQUERY t3 system NULL NULL NULL NULL 0 0.00 Const row not found
2 DEPENDENT SUBQUERY t4 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
@@ -4625,7 +4625,7 @@ WHERE t4.a >= v1.a);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00 Using where
-2 DEPENDENT SUBQUERY t3 system NULL NULL NULL NULL 0 0.00 const row not found
+2 DEPENDENT SUBQUERY t3 system NULL NULL NULL NULL 0 0.00 Const row not found
2 DEPENDENT SUBQUERY t4 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
Note 1276 Field or reference 'v1.a' of SELECT #2 was resolved in SELECT #1
@@ -4657,7 +4657,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
1 PRIMARY t4 ALL NULL NULL NULL NULL 2 100.00 Using where
2 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 1 100.00
-2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1276 Field or reference 'test.t4.b' of SELECT #2 was resolved in SELECT #1
Note 1003 /* select#1 */ select 0 AS `c`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t4`.`c` AS `c` from `test`.`t4` where `test`.`t4`.`c` <= <expr_cache><`test`.`t4`.`b`>((/* select#2 */ select 0 from dual where 7 > `test`.`t4`.`b`))
@@ -4674,7 +4674,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
1 PRIMARY t4 ALL NULL NULL NULL NULL 2 100.00 Using where
2 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 1 100.00
-2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 const row not found
+2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 0 0.00 Const row not found
Warnings:
Note 1276 Field or reference 'v4.b' of SELECT #2 was resolved in SELECT #1
Note 1003 /* select#1 */ select 0 AS `c`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t4`.`c` AS `c` from `test`.`t4` where `test`.`t4`.`c` <= <expr_cache><`test`.`t4`.`b`>((/* select#2 */ select 0 from dual where 7 > `test`.`t4`.`b`))
@@ -5651,7 +5651,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 6 100.00 Using where
Warnings:
Note 1276 Field or reference 'test.t1.a' of SELECT #3 was resolved in SELECT #2
-Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,(/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`) AS `c` from `test`.`t1`
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,<expr_cache><`test`.`t1`.`a`>((/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`)) AS `c` from `test`.`t1`
select * from v1;
a c
1 2
@@ -5668,7 +5668,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 6 100.00 Using where
Warnings:
Note 1276 Field or reference 'test.t1.a' of SELECT #3 was resolved in SELECT #2
-Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t1`.`a` AS `a`,(/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`) AS `c` from `test`.`t2` join `test`.`t1` where `test`.`t1`.`a` = `test`.`t2`.`a`
+Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t1`.`a` AS `a`,<expr_cache><`test`.`t1`.`a`>((/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`)) AS `c` from `test`.`t2` join `test`.`t1` where `test`.`t1`.`a` = `test`.`t2`.`a`
select * from t2, v1 where t2.a=v1.a;
a b a c
1 2 1 2
@@ -5687,7 +5687,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 6 100.00 Using where
Warnings:
Note 1276 Field or reference 'test.t1.a' of SELECT #3 was resolved in SELECT #2
-Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`a` AS `a`,(/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`) AS `c` from `test`.`t1` join `test`.`t1` where `test`.`t1`.`a` = `test`.`t1`.`a`
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`a` AS `a`,<expr_cache><`test`.`t1`.`a`>((/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`)) AS `c` from `test`.`t1` join `test`.`t1` where `test`.`t1`.`a` = `test`.`t1`.`a`
select * from t1, v1 where t1.a=v1.a;
a b a c
1 2 1 2
@@ -5706,7 +5706,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 6 100.00 Using where
Warnings:
Note 1276 Field or reference 'test.t1.a' of SELECT #3 was resolved in SELECT #2
-Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`a` AS `a`,(/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`) AS `c` from `test`.`t1` join `test`.`t1` where `test`.`t1`.`b` = (/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`)
+Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`a` AS `a`,<expr_cache><`test`.`t1`.`a`>((/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`)) AS `c` from `test`.`t1` join `test`.`t1` where `test`.`t1`.`b` = <expr_cache><`test`.`t1`.`a`>((/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`))
select * from t1, v1 where t1.b=v1.c;
a b a c
1 2 1 2
@@ -5724,7 +5724,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 6 100.00 Using where
Warnings:
Note 1276 Field or reference 'test.t1.a' of SELECT #3 was resolved in SELECT #2
-Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`a` AS `a`,(/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`) AS `c` from `test`.`t2` join `test`.`t1` join `test`.`t1` where `test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t1`.`a` = `test`.`t2`.`a`
+Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`a` AS `a`,<expr_cache><`test`.`t1`.`a`>((/* select#3 */ select max(`test`.`t2`.`b`) from `test`.`t2` where `test`.`t1`.`a` = `test`.`t2`.`a`)) AS `c` from `test`.`t2` join `test`.`t1` join `test`.`t1` where `test`.`t1`.`a` = `test`.`t2`.`a` and `test`.`t1`.`a` = `test`.`t2`.`a`
select * from t2, t1, v1 where t1.a=t2.a and t1.a=v1.a;
a b a b a c
1 2 1 2 1 2
diff --git a/mysql-test/r/view_grant.result b/mysql-test/r/view_grant.result
index 04ad19c5ddc..82594128d85 100644
--- a/mysql-test/r/view_grant.result
+++ b/mysql-test/r/view_grant.result
@@ -144,7 +144,7 @@ revoke select on mysqltest.v5 from mysqltest_1@localhost;
connection user1;
explain select c from mysqltest.v1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
show create view mysqltest.v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `mysqltest`.`v1` AS select `mysqltest`.`t1`.`a` + 1 AS `c`,`mysqltest`.`t1`.`b` + 1 AS `d` from `mysqltest`.`t1` latin1 latin1_swedish_ci
@@ -167,13 +167,13 @@ grant show view on mysqltest.* to mysqltest_1@localhost;
connection user1;
explain select c from mysqltest.v1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
show create view mysqltest.v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `mysqltest`.`v1` AS select `mysqltest`.`t1`.`a` + 1 AS `c`,`mysqltest`.`t1`.`b` + 1 AS `d` from `mysqltest`.`t1` latin1 latin1_swedish_ci
explain select c from mysqltest.v2;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
+1 PRIMARY <derived2> system NULL NULL NULL NULL 0 Const row not found
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
show create view mysqltest.v2;
View Create View character_set_client collation_connection
@@ -1190,7 +1190,7 @@ select * from v1;
i
explain select * from v1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
disconnect test11765687;
... as eugene
connect test11765687,localhost,eugene,,mysqltest1;
@@ -1238,12 +1238,12 @@ select k from t3;
k
explain select k from t3;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t3 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t3 system NULL NULL NULL NULL 0 Const row not found
select * from v3;
k
explain select * from v3;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t3 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t3 system NULL NULL NULL NULL 0 Const row not found
disconnect test11765687;
... as inga
connect test11765687,localhost,inga,,mysqltest1;
@@ -1284,8 +1284,8 @@ select * from v2;
i j
explain select * from v2;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
-1 SIMPLE t2 system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1 system NULL NULL NULL NULL 0 Const row not found
+1 SIMPLE t2 system NULL NULL NULL NULL 0 Const row not found
disconnect test11765687;
... as noam
connect test11765687,localhost,noam,,mysqltest1;
diff --git a/mysql-test/r/win_percentile.result b/mysql-test/r/win_percentile.result
new file mode 100644
index 00000000000..c51e2e6bd51
--- /dev/null
+++ b/mysql-test/r/win_percentile.result
@@ -0,0 +1,326 @@
+CREATE TABLE t1 (name CHAR(10), test double, score DECIMAL(19,4));
+INSERT INTO t1 VALUES
+('Chun', 0, 3), ('Chun', 0, 7),
+('Kaolin', 0.5, 3), ('Kaolin', 0.6, 7),
+('Kaolin', 0.5, 4),
+('Tatiana', 0.8, 4), ('Tata', 0.8, 4);
+#
+# Test invalid syntax
+#
+# Order by clause has more than one element
+select percentile_disc(0.5) within group(order by score,test) over (partition by name) from t1;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'test) over (partition by name) from t1' at line 1
+select percentile_cont(0.5) within group(order by score,test) over (partition by name) from t1;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'test) over (partition by name) from t1' at line 1
+# Order by clause has no element
+select percentile_disc(0.5) within group() over (partition by name) from t1;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') over (partition by name) from t1' at line 1
+select percentile_cont(0.5) within group() over (partition by name) from t1;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') over (partition by name) from t1' at line 1
+# No parameters to the percentile functions
+select percentile_disc() within group() over (partition by name) from t1;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') within group() over (partition by name) from t1' at line 1
+select percentile_cont() within group() over (partition by name) from t1;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') within group() over (partition by name) from t1' at line 1
+#
+# Test simple syntax
+#
+select name, percentile_cont(0.5) within group(order by score) over (partition by name) as c from t1;
+name c
+Chun 5.0000000000
+Chun 5.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Tatiana 4.0000000000
+Tata 4.0000000000
+select name, percentile_disc(0.5) within group(order by score) over (partition by name) as c from t1;
+name c
+Chun 3.0000000000
+Chun 3.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Tatiana 4.0000000000
+Tata 4.0000000000
+# no partition clause
+select name, percentile_disc(0.5) within group(order by score) over () from t1;
+name percentile_disc(0.5) within group(order by score) over ()
+Chun 4.0000000000
+Chun 4.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Tatiana 4.0000000000
+Tata 4.0000000000
+select name, percentile_cont(0.5) within group(order by score) over () from t1;
+name percentile_cont(0.5) within group(order by score) over ()
+Chun 4.0000000000
+Chun 4.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Tatiana 4.0000000000
+Tata 4.0000000000
+# argument set to null
+select name, percentile_cont(null) within group(order by score) over (partition by name) from t1;
+ERROR HY000: percentile_cont function only accepts arguments that can be converted to numerical types
+select name, percentile_disc(null) within group(order by score) over (partition by name) from t1;
+ERROR HY000: percentile_disc function only accepts arguments that can be converted to numerical types
+#subqueries having percentile functions
+select * from ( select name , percentile_cont(0.5) within group ( order by score) over (partition by name ) from t1 ) as t;
+name percentile_cont(0.5) within group ( order by score) over (partition by name )
+Chun 5.0000000000
+Chun 5.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Tatiana 4.0000000000
+Tata 4.0000000000
+select * from ( select name , percentile_disc(0.5) within group ( order by score) over (partition by name ) from t1 ) as t;
+name percentile_disc(0.5) within group ( order by score) over (partition by name )
+Chun 3.0000000000
+Chun 3.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Tatiana 4.0000000000
+Tata 4.0000000000
+select name from t1 a where (select percentile_disc(0.5) within group (order by score) over (partition by name) from t1 b limit 1) >= 0.5;
+name
+Chun
+Chun
+Kaolin
+Kaolin
+Kaolin
+Tatiana
+Tata
+#disallowed fields in order by
+select score, percentile_cont(0.5) within group(order by name) over (partition by score) from t1;
+ERROR HY000: Numeric datatype is required for percentile_cont function
+select score, percentile_disc(0.5) within group(order by name) over (partition by score) from t1;
+ERROR HY000: Numeric datatype is required for percentile_disc function
+#parameter value should be in the range of [0,1]
+select percentile_disc(1.5) within group(order by score) over (partition by name) from t1;
+ERROR HY000: Argument to the percentile_disc function does not belong to the range [0,1]
+select percentile_cont(1.5) within group(order by score) over (partition by name) from t1;
+ERROR HY000: Argument to the percentile_cont function does not belong to the range [0,1]
+#Argument should remain constant for the entire partition
+select name,percentile_cont(test) within group(order by score) over (partition by name) from t1;
+ERROR HY000: Argument to the percentile_cont function is not a constant for a partition
+select name, percentile_disc(test) within group(order by score) over (partition by name) from t1;
+ERROR HY000: Argument to the percentile_disc function is not a constant for a partition
+#only numerical types are allowed as argument to percentile functions
+select name, percentile_cont(name) within group(order by score) over (partition by name) from t1;
+ERROR HY000: percentile_cont function only accepts arguments that can be converted to numerical types
+select name, percentile_disc(name) within group(order by score) over (partition by name) from t1;
+ERROR HY000: percentile_disc function only accepts arguments that can be converted to numerical types
+#complete query with partition column
+select name,cume_dist() over (partition by name order by score), percentile_disc(0.5) within group(order by score) over (partition by name) as c from t1;
+name cume_dist() over (partition by name order by score) c
+Chun 0.5000000000 3.0000000000
+Chun 1.0000000000 3.0000000000
+Kaolin 0.3333333333 4.0000000000
+Kaolin 1.0000000000 4.0000000000
+Kaolin 0.6666666667 4.0000000000
+Tatiana 1.0000000000 4.0000000000
+Tata 1.0000000000 4.0000000000
+select name, percentile_cont(0.5) within group(order by score) over (partition by name) as c from t1;
+name c
+Chun 5.0000000000
+Chun 5.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Kaolin 4.0000000000
+Tatiana 4.0000000000
+Tata 4.0000000000
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.1) within group(order by score) over (partition by name) as c from t1;
+name b c
+Chun 0.5000000000 3.0000000000
+Chun 1.0000000000 3.0000000000
+Kaolin 0.3333333333 3.0000000000
+Kaolin 1.0000000000 3.0000000000
+Kaolin 0.6666666667 3.0000000000
+Tatiana 1.0000000000 4.0000000000
+Tata 1.0000000000 4.0000000000
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.2) within group(order by score) over (partition by name) as c from t1;
+name b c
+Chun 0.5000000000 3.0000000000
+Chun 1.0000000000 3.0000000000
+Kaolin 0.3333333333 3.0000000000
+Kaolin 1.0000000000 3.0000000000
+Kaolin 0.6666666667 3.0000000000
+Tatiana 1.0000000000 4.0000000000
+Tata 1.0000000000 4.0000000000
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.3) within group(order by score) over (partition by name) as c from t1;
+name b c
+Chun 0.5000000000 3.0000000000
+Chun 1.0000000000 3.0000000000
+Kaolin 0.3333333333 3.0000000000
+Kaolin 1.0000000000 3.0000000000
+Kaolin 0.6666666667 3.0000000000
+Tatiana 1.0000000000 4.0000000000
+Tata 1.0000000000 4.0000000000
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.4) within group(order by score) over (partition by name) as c from t1;
+name b c
+Chun 0.5000000000 3.0000000000
+Chun 1.0000000000 3.0000000000
+Kaolin 0.3333333333 4.0000000000
+Kaolin 1.0000000000 4.0000000000
+Kaolin 0.6666666667 4.0000000000
+Tatiana 1.0000000000 4.0000000000
+Tata 1.0000000000 4.0000000000
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.5) within group(order by score) over (partition by name) as c from t1;
+name b c
+Chun 0.5000000000 3.0000000000
+Chun 1.0000000000 3.0000000000
+Kaolin 0.3333333333 4.0000000000
+Kaolin 1.0000000000 4.0000000000
+Kaolin 0.6666666667 4.0000000000
+Tatiana 1.0000000000 4.0000000000
+Tata 1.0000000000 4.0000000000
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.6) within group(order by score) over (partition by name) as c from t1;
+name b c
+Chun 0.5000000000 7.0000000000
+Chun 1.0000000000 7.0000000000
+Kaolin 0.3333333333 4.0000000000
+Kaolin 1.0000000000 4.0000000000
+Kaolin 0.6666666667 4.0000000000
+Tatiana 1.0000000000 4.0000000000
+Tata 1.0000000000 4.0000000000
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.7) within group(order by score) over (partition by name) as c from t1;
+name b c
+Chun 0.5000000000 7.0000000000
+Chun 1.0000000000 7.0000000000
+Kaolin 0.3333333333 7.0000000000
+Kaolin 1.0000000000 7.0000000000
+Kaolin 0.6666666667 7.0000000000
+Tatiana 1.0000000000 4.0000000000
+Tata 1.0000000000 4.0000000000
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.8) within group(order by score) over (partition by name) as c from t1;
+name b c
+Chun 0.5000000000 7.0000000000
+Chun 1.0000000000 7.0000000000
+Kaolin 0.3333333333 7.0000000000
+Kaolin 1.0000000000 7.0000000000
+Kaolin 0.6666666667 7.0000000000
+Tatiana 1.0000000000 4.0000000000
+Tata 1.0000000000 4.0000000000
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.9) within group(order by score) over (partition by name) as c from t1;
+name b c
+Chun 0.5000000000 7.0000000000
+Chun 1.0000000000 7.0000000000
+Kaolin 0.3333333333 7.0000000000
+Kaolin 1.0000000000 7.0000000000
+Kaolin 0.6666666667 7.0000000000
+Tatiana 1.0000000000 4.0000000000
+Tata 1.0000000000 4.0000000000
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(1) within group(order by score) over (partition by name) as c from t1;
+name b c
+Chun 0.5000000000 7.0000000000
+Chun 1.0000000000 7.0000000000
+Kaolin 0.3333333333 7.0000000000
+Kaolin 1.0000000000 7.0000000000
+Kaolin 0.6666666667 7.0000000000
+Tatiana 1.0000000000 4.0000000000
+Tata 1.0000000000 4.0000000000
+select median(score) over (partition by name), percentile_cont(0) within group(order by score) over (partition by name) as c from t1;
+median(score) over (partition by name) c
+5.0000000000 3.0000000000
+5.0000000000 3.0000000000
+4.0000000000 3.0000000000
+4.0000000000 3.0000000000
+4.0000000000 3.0000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+select median(score) over (partition by name), percentile_cont(0.1) within group(order by score) over (partition by name) as c from t1;
+median(score) over (partition by name) c
+5.0000000000 3.4000000000
+5.0000000000 3.4000000000
+4.0000000000 3.2000000000
+4.0000000000 3.2000000000
+4.0000000000 3.2000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+select median(score) over (partition by name), percentile_cont(0.2) within group(order by score) over (partition by name) as c from t1;
+median(score) over (partition by name) c
+5.0000000000 3.8000000000
+5.0000000000 3.8000000000
+4.0000000000 3.4000000000
+4.0000000000 3.4000000000
+4.0000000000 3.4000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+select median(score) over (partition by name), percentile_cont(0.3) within group(order by score) over (partition by name) as c from t1;
+median(score) over (partition by name) c
+5.0000000000 4.2000000000
+5.0000000000 4.2000000000
+4.0000000000 3.6000000000
+4.0000000000 3.6000000000
+4.0000000000 3.6000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+select median(score) over (partition by name), percentile_cont(0.4) within group(order by score) over (partition by name) as c from t1;
+median(score) over (partition by name) c
+5.0000000000 4.6000000000
+5.0000000000 4.6000000000
+4.0000000000 3.8000000000
+4.0000000000 3.8000000000
+4.0000000000 3.8000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+select median(score) over (partition by name), percentile_cont(0.5) within group(order by score) over (partition by name) as c from t1;
+median(score) over (partition by name) c
+5.0000000000 5.0000000000
+5.0000000000 5.0000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+select median(score) over (partition by name), percentile_cont(0.6) within group(order by score) over (partition by name) as c from t1;
+median(score) over (partition by name) c
+5.0000000000 5.4000000000
+5.0000000000 5.4000000000
+4.0000000000 4.6000000000
+4.0000000000 4.6000000000
+4.0000000000 4.6000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+select median(score) over (partition by name), percentile_cont(0.7) within group(order by score) over (partition by name) as c from t1;
+median(score) over (partition by name) c
+5.0000000000 5.8000000000
+5.0000000000 5.8000000000
+4.0000000000 5.2000000000
+4.0000000000 5.2000000000
+4.0000000000 5.2000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+select median(score) over (partition by name), percentile_cont(0.8) within group(order by score) over (partition by name) as c from t1;
+median(score) over (partition by name) c
+5.0000000000 6.2000000000
+5.0000000000 6.2000000000
+4.0000000000 5.8000000000
+4.0000000000 5.8000000000
+4.0000000000 5.8000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+select median(score) over (partition by name), percentile_cont(0.9) within group(order by score) over (partition by name) as c from t1;
+median(score) over (partition by name) c
+5.0000000000 6.6000000000
+5.0000000000 6.6000000000
+4.0000000000 6.4000000000
+4.0000000000 6.4000000000
+4.0000000000 6.4000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+select median(score) over (partition by name), percentile_cont(1) within group(order by score) over (partition by name) as c from t1;
+median(score) over (partition by name) c
+5.0000000000 7.0000000000
+5.0000000000 7.0000000000
+4.0000000000 7.0000000000
+4.0000000000 7.0000000000
+4.0000000000 7.0000000000
+4.0000000000 4.0000000000
+4.0000000000 4.0000000000
+drop table t1;
diff --git a/mysql-test/std_data/mdev11084.frm b/mysql-test/std_data/mdev11084.frm
new file mode 100644
index 00000000000..21ee498c1ba
--- /dev/null
+++ b/mysql-test/std_data/mdev11084.frm
Binary files differ
diff --git a/mysql-test/std_data/mdev11084.par b/mysql-test/std_data/mdev11084.par
new file mode 100644
index 00000000000..a5eef54fc01
--- /dev/null
+++ b/mysql-test/std_data/mdev11084.par
Binary files differ
diff --git a/mysql-test/std_data/mdev11084.part1.MYD b/mysql-test/std_data/mdev11084.part1.MYD
new file mode 100644
index 00000000000..139d2e06990
--- /dev/null
+++ b/mysql-test/std_data/mdev11084.part1.MYD
Binary files differ
diff --git a/mysql-test/std_data/mdev11084.part1.MYI b/mysql-test/std_data/mdev11084.part1.MYI
new file mode 100644
index 00000000000..a3e532a3a1a
--- /dev/null
+++ b/mysql-test/std_data/mdev11084.part1.MYI
Binary files differ
diff --git a/mysql-test/suite.pm b/mysql-test/suite.pm
index a662a600afe..c8201b0a554 100644
--- a/mysql-test/suite.pm
+++ b/mysql-test/suite.pm
@@ -6,20 +6,12 @@ use My::Platform;
sub skip_combinations {
my @combinations;
- # disable innodb/xtradb combinatons for configurations that were not built
+ # disable innodb combinations for configurations that were not built
push @combinations, 'innodb_plugin' unless $ENV{HA_INNODB_SO};
- push @combinations, qw(xtradb innodb) unless $::mysqld_variables{'innodb'} eq "ON";
+ push @combinations, 'innodb' unless $::mysqld_variables{'innodb'} eq "ON";
- # unconditionally, for now in 10.2. Later it could check for xtradb I_S plugins
- push @combinations, 'xtradb';
-
- # XtraDB is RECOMPILE_FOR_EMBEDDED, ha_xtradb.so cannot work with embedded server
- push @combinations, 'xtradb_plugin' if not $ENV{HA_XTRADB_SO}
- or $::opt_embedded_server;
-
- my %skip = ( 'include/have_innodb.combinations' => [ @combinations ],
- 'include/have_xtradb.combinations' => [ @combinations ]);
+ my %skip = ( 'include/have_innodb.combinations' => [ @combinations ]);
# don't run tests for the wrong platform
$skip{'include/platform.combinations'} = [ (IS_WINDOWS) ? 'unix' : 'win' ];
diff --git a/mysql-test/suite/binlog/r/binlog_base64_flag.result b/mysql-test/suite/binlog/r/binlog_base64_flag.result
index db7b175d6bd..66cee19f13f 100644
--- a/mysql-test/suite/binlog/r/binlog_base64_flag.result
+++ b/mysql-test/suite/binlog/r/binlog_base64_flag.result
@@ -9,7 +9,7 @@ BINLOG '
SVtYRxMBAAAAKQAAADQBAAAAABAAAAAAAAAABHRlc3QAAnQxAAEDAAE=
SVtYRxcBAAAAIgAAAFYBAAAQABAAAAAAAAEAAf/+AgAAAA==
';
-ERROR HY000: The BINLOG statement of type `Table_map` was not preceded by a format description BINLOG statement
+ERROR HY000: The BINLOG statement of type Table_map was not preceded by a format description BINLOG statement
select * from t1;
a
1
diff --git a/mysql-test/suite/binlog/r/binlog_killed.result b/mysql-test/suite/binlog/r/binlog_killed.result
index cda4e8ad6f4..ae851c38e5f 100644
--- a/mysql-test/suite/binlog/r/binlog_killed.result
+++ b/mysql-test/suite/binlog/r/binlog_killed.result
@@ -179,6 +179,95 @@ RELEASE_LOCK("a")
1
drop table t4;
drop function bug27563;
+FLUSH LOGS;
+connect con3, localhost, root,,;
+connection con3;
+MI: MyISAM, INNODB
+BEGIN;
+INSERT INTO t2 VALUES (NULL, 1);
+INSERT INTO t1 VALUES (NULL, 2);
+connection con1;
+KILL ID;
+include/show_binlog_events.inc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000002 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
+master-bin.000002 # Gtid_list # # [#-#-#]
+master-bin.000002 # Gtid # # BEGIN GTID #-#-#
+master-bin.000002 # Intvar # # INSERT_ID=3
+master-bin.000002 # Query # # use `test`; INSERT INTO t2 VALUES (NULL, 1)
+master-bin.000002 # Query # # COMMIT
+master-bin.000002 # Gtid # # BEGIN GTID #-#-#
+master-bin.000002 # Intvar # # INSERT_ID=4
+master-bin.000002 # Query # # use `test`; INSERT INTO t1 VALUES (NULL, 2)
+master-bin.000002 # Query # # ROLLBACK
+disconnect con3;
+connect con3, localhost, root,,;
+connection con3;
+IM: INNODB, MyISAM
+BEGIN;
+INSERT INTO t1 VALUES (NULL, 3);
+INSERT INTO t2 VALUES (NULL, 4);
+connection con1;
+KILL ID;
+include/show_binlog_events.inc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000002 # Gtid # # BEGIN GTID #-#-#
+master-bin.000002 # Intvar # # INSERT_ID=4
+master-bin.000002 # Query # # use `test`; INSERT INTO t2 VALUES (NULL, 4)
+master-bin.000002 # Query # # COMMIT
+master-bin.000002 # Gtid # # BEGIN GTID #-#-#
+master-bin.000002 # Intvar # # INSERT_ID=5
+master-bin.000002 # Query # # use `test`; INSERT INTO t1 VALUES (NULL, 3)
+master-bin.000002 # Query # # ROLLBACK
+disconnect con3;
+connect con3, localhost, root,,;
+connection con3;
+IMI: INNODB, MyISAM, INNODB
+BEGIN;
+INSERT INTO t1 VALUES (NULL, 5);
+INSERT INTO t2 VALUES (NULL, 6);
+INSERT INTO t1 VALUES (NULL, 7);
+connection con1;
+KILL ID;
+include/show_binlog_events.inc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000002 # Gtid # # BEGIN GTID #-#-#
+master-bin.000002 # Intvar # # INSERT_ID=5
+master-bin.000002 # Query # # use `test`; INSERT INTO t2 VALUES (NULL, 6)
+master-bin.000002 # Query # # COMMIT
+master-bin.000002 # Gtid # # BEGIN GTID #-#-#
+master-bin.000002 # Intvar # # INSERT_ID=6
+master-bin.000002 # Query # # use `test`; INSERT INTO t1 VALUES (NULL, 5)
+master-bin.000002 # Intvar # # INSERT_ID=7
+master-bin.000002 # Query # # use `test`; INSERT INTO t1 VALUES (NULL, 7)
+master-bin.000002 # Query # # ROLLBACK
+disconnect con3;
+connect con3, localhost, root,,;
+connection con3;
+MI2: MyISAM, INNODB, MyISAM, INNODB
+BEGIN;
+INSERT INTO t2 VALUES (NULL, 8);
+INSERT INTO t1 VALUES (NULL, 9);
+INSERT INTO t2 VALUES (NULL, 10);
+INSERT INTO t1 VALUES (NULL, 11);
+connection con1;
+KILL ID;
+include/show_binlog_events.inc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000002 # Gtid # # BEGIN GTID #-#-#
+master-bin.000002 # Intvar # # INSERT_ID=6
+master-bin.000002 # Query # # use `test`; INSERT INTO t2 VALUES (NULL, 8)
+master-bin.000002 # Query # # COMMIT
+master-bin.000002 # Gtid # # BEGIN GTID #-#-#
+master-bin.000002 # Intvar # # INSERT_ID=7
+master-bin.000002 # Query # # use `test`; INSERT INTO t2 VALUES (NULL, 10)
+master-bin.000002 # Query # # COMMIT
+master-bin.000002 # Gtid # # BEGIN GTID #-#-#
+master-bin.000002 # Intvar # # INSERT_ID=8
+master-bin.000002 # Query # # use `test`; INSERT INTO t1 VALUES (NULL, 9)
+master-bin.000002 # Intvar # # INSERT_ID=9
+master-bin.000002 # Query # # use `test`; INSERT INTO t1 VALUES (NULL, 11)
+master-bin.000002 # Query # # ROLLBACK
connection default;
disconnect con1;
disconnect con2;
diff --git a/mysql-test/suite/binlog/r/load_data_stm_view.result b/mysql-test/suite/binlog/r/load_data_stm_view.result
index ddbdb71983f..c21ffb7dcc6 100644
--- a/mysql-test/suite/binlog/r/load_data_stm_view.result
+++ b/mysql-test/suite/binlog/r/load_data_stm_view.result
@@ -1,3 +1,4 @@
+reset master;
create table t1 (i int, j int);
create view v1 as select i from t1;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/3940.data' INTO TABLE v1 (i);
diff --git a/mysql-test/suite/binlog/t/binlog_killed.test b/mysql-test/suite/binlog/t/binlog_killed.test
index 73759ee5aa5..7c3a262d2c1 100644
--- a/mysql-test/suite/binlog/t/binlog_killed.test
+++ b/mysql-test/suite/binlog/t/binlog_killed.test
@@ -10,6 +10,13 @@ call mtr.add_suppression("Unsafe statement written to the binary log using state
-- source include/not_embedded.inc
+#
+# Avoid printing binlog checkpoints
+#
+
+--let $skip_checkpoint_events=1
+
+
###
### bug#22725 : incorrect killed error in binlogged query
###
@@ -349,6 +356,94 @@ drop table t4;
drop function bug27563;
+# Prove that killing connection in the middle
+# of mixed engine transactions affect binlogging
+# as specified.
+
+# keep binlogging for this piece of test in a new file
+FLUSH LOGS;
+
+# Connection con3 as transaction generator thoughout the test
+connect (con3, localhost, root,,);
+
+connection con3;
+let $ID= `select connection_id()`;
+
+--let $threads_connected=`select variable_value from information_schema.global_status where variable_name="threads_connected"`
+--let wait_condition=select variable_value < $threads_connected from information_schema.global_status where variable_name="threads_connected"
+
+--echo MI: MyISAM, INNODB
+BEGIN;
+INSERT INTO t2 VALUES (NULL, 1);
+INSERT INTO t1 VALUES (NULL, 2);
+
+#Connection con1 as killer throughout the test
+connection con1;
+--replace_result $ID ID
+--eval KILL $ID
+let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
+--source include/wait_condition.inc
+--let $binlog_start= 4
+--source include/show_binlog_events.inc
+--let $binlog_killed_pos=query_get_value(SHOW MASTER STATUS, Position, 1)
+
+disconnect con3;
+connect (con3, localhost, root,,);
+connection con3;
+let $ID= `select connection_id()`;
+
+--echo IM: INNODB, MyISAM
+BEGIN;
+INSERT INTO t1 VALUES (NULL, 3);
+INSERT INTO t2 VALUES (NULL, 4);
+
+connection con1;
+--replace_result $ID ID
+--eval KILL $ID
+--source include/wait_condition.inc
+--let $binlog_start= $binlog_killed_pos
+--source include/show_binlog_events.inc
+--let $binlog_killed_pos=query_get_value(SHOW MASTER STATUS, Position, 1)
+
+disconnect con3;
+connect (con3, localhost, root,,);
+connection con3;
+let $ID= `select connection_id()`;
+
+--echo IMI: INNODB, MyISAM, INNODB
+BEGIN;
+INSERT INTO t1 VALUES (NULL, 5);
+INSERT INTO t2 VALUES (NULL, 6);
+INSERT INTO t1 VALUES (NULL, 7);
+
+connection con1;
+--replace_result $ID ID
+--eval KILL $ID
+--source include/wait_condition.inc
+--let $binlog_start= $binlog_killed_pos
+--source include/show_binlog_events.inc
+--let $binlog_killed_pos=query_get_value(SHOW MASTER STATUS, Position, 1)
+
+disconnect con3;
+connect (con3, localhost, root,,);
+connection con3;
+let $ID= `select connection_id()`;
+
+--echo MI2: MyISAM, INNODB, MyISAM, INNODB
+BEGIN;
+INSERT INTO t2 VALUES (NULL, 8);
+INSERT INTO t1 VALUES (NULL, 9);
+INSERT INTO t2 VALUES (NULL, 10);
+INSERT INTO t1 VALUES (NULL, 11);
+
+connection con1;
+--replace_result $ID ID
+--eval KILL $ID
+--source include/wait_condition.inc
+--let $binlog_start= $binlog_killed_pos
+--source include/show_binlog_events.inc
+
+
#
# common cleanup
#
diff --git a/mysql-test/suite/binlog/t/load_data_stm_view.test b/mysql-test/suite/binlog/t/load_data_stm_view.test
index b70651b4e2d..9f64b813eec 100644
--- a/mysql-test/suite/binlog/t/load_data_stm_view.test
+++ b/mysql-test/suite/binlog/t/load_data_stm_view.test
@@ -8,6 +8,8 @@
1
EOF
+reset master;
+
create table t1 (i int, j int);
create view v1 as select i from t1;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
@@ -15,6 +17,8 @@ create view v1 as select i from t1;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/3940.data' INTO TABLE v1
select * from v1;
+--let $binlog_file = LAST
--source include/show_binlog_events.inc
drop view v1;
drop table t1;
+--remove_file $MYSQLTEST_VARDIR/3940.data
diff --git a/mysql-test/suite/binlog_encryption/rpl_semi_sync.result b/mysql-test/suite/binlog_encryption/rpl_semi_sync.result
index 6d574681d73..106efb555d3 100644
--- a/mysql-test/suite/binlog_encryption/rpl_semi_sync.result
+++ b/mysql-test/suite/binlog_encryption/rpl_semi_sync.result
@@ -4,6 +4,7 @@ connection master;
call mtr.add_suppression("Timeout waiting for reply of binlog");
call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
+call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
@@ -176,7 +177,7 @@ Variable_name Value
Rpl_semi_sync_master_yes_tx 14
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
-Rpl_semi_sync_master_clients 1
+Rpl_semi_sync_master_clients 0
[ semi-sync replication of these transactions will fail ]
insert into t1 values (500);
[ master status should be OFF ]
@@ -321,7 +322,6 @@ connection slave;
include/stop_slave.inc
reset slave;
connection master;
-kill query _tid;
connection slave;
include/start_slave.inc
connection master;
@@ -353,7 +353,6 @@ include/stop_slave.inc
reset slave;
connection master;
reset master;
-kill query _tid;
set sql_log_bin=0;
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
flush privileges;
@@ -404,7 +403,6 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
Variable_name Value
Rpl_semi_sync_slave_status OFF
connection master;
-kill query _tid;
[ Semi-sync status on master should be ON ]
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
diff --git a/mysql-test/suite/binlog_encryption/rpl_sync-slave.opt b/mysql-test/suite/binlog_encryption/rpl_sync-slave.opt
index 2e8be18dbd7..795330535c1 100644
--- a/mysql-test/suite/binlog_encryption/rpl_sync-slave.opt
+++ b/mysql-test/suite/binlog_encryption/rpl_sync-slave.opt
@@ -1,2 +1,2 @@
---sync-relay-log-info=1 --relay-log-recovery=1 --loose-innodb_file_format_check=1 --default-storage-engine=MyISAM --loose-innodb-file-per-table=0
+--sync-relay-log-info=1 --relay-log-recovery=1 --default-storage-engine=MyISAM --loose-innodb-file-per-table=0
--skip-core-file --skip-slave-start
diff --git a/mysql-test/suite/compat/oracle/r/empty_string_literal.result b/mysql-test/suite/compat/oracle/r/empty_string_literal.result
index 6bd268e7138..4fac736367b 100644
--- a/mysql-test/suite/compat/oracle/r/empty_string_literal.result
+++ b/mysql-test/suite/compat/oracle/r/empty_string_literal.result
@@ -11,7 +11,7 @@ SET SESSION character_set_client=cp1250;
SET sql_mode=@mode;
select @@sql_mode;
@@sql_mode
-PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,EMPTY_STRING_IS_NULL
+PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,EMPTY_STRING_IS_NULL,SIMULTANEOUS_ASSIGNMENT
SELECT '',CHARSET(''), null, CHARSET(null), CAST(null as char(10)), CHARSET(CAST(null as char(10))), 'x', CHARSET('x');
NULL CHARSET('') NULL CHARSET(null) CAST(null as char(10)) CHARSET(CAST(null as char(10))) x CHARSET('x')
NULL latin2 NULL binary NULL latin2 x latin2
diff --git a/mysql-test/suite/compat/oracle/r/sp-param.result b/mysql-test/suite/compat/oracle/r/sp-param.result
index 93db24709d0..68ecefa5077 100644
--- a/mysql-test/suite/compat/oracle/r/sp-param.result
+++ b/mysql-test/suite/compat/oracle/r/sp-param.result
@@ -5,7 +5,7 @@ SET sql_mode=ORACLE;
CREATE FUNCTION f1(param CHAR) RETURN CHAR AS BEGIN RETURN param; END;;
SHOW CREATE FUNCTION f1;
Function sql_mode Create Function character_set_client collation_connection Database Collation
-f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param CHAR) RETURN varchar(2000) CHARSET latin1
+f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param CHAR) RETURN varchar(2000) CHARSET latin1
AS BEGIN RETURN param; END latin1 latin1_swedish_ci latin1_swedish_ci
SELECT LENGTH(f1(REPEAT('a',2000)));;
LENGTH(f1(REPEAT('a',2000)))
@@ -21,7 +21,7 @@ DROP FUNCTION f1;
CREATE FUNCTION f1(param NCHAR) RETURN NCHAR AS BEGIN RETURN param; END;;
SHOW CREATE FUNCTION f1;
Function sql_mode Create Function character_set_client collation_connection Database Collation
-f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param NCHAR) RETURN varchar(2000) CHARSET utf8
+f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param NCHAR) RETURN varchar(2000) CHARSET utf8
AS BEGIN RETURN param; END latin1 latin1_swedish_ci latin1_swedish_ci
SELECT LENGTH(f1(REPEAT('a',2000)));;
LENGTH(f1(REPEAT('a',2000)))
@@ -37,7 +37,7 @@ DROP FUNCTION f1;
CREATE FUNCTION f1(param BINARY) RETURN BINARY AS BEGIN RETURN param; END;;
SHOW CREATE FUNCTION f1;
Function sql_mode Create Function character_set_client collation_connection Database Collation
-f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param BINARY) RETURN varbinary(2000)
+f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param BINARY) RETURN varbinary(2000)
AS BEGIN RETURN param; END latin1 latin1_swedish_ci latin1_swedish_ci
SELECT LENGTH(f1(REPEAT('a',2000)));;
LENGTH(f1(REPEAT('a',2000)))
@@ -53,7 +53,7 @@ DROP FUNCTION f1;
CREATE FUNCTION f1(param VARCHAR) RETURN VARCHAR AS BEGIN RETURN param; END;;
SHOW CREATE FUNCTION f1;
Function sql_mode Create Function character_set_client collation_connection Database Collation
-f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param VARCHAR) RETURN varchar(4000) CHARSET latin1
+f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param VARCHAR) RETURN varchar(4000) CHARSET latin1
AS BEGIN RETURN param; END latin1 latin1_swedish_ci latin1_swedish_ci
SELECT LENGTH(f1(REPEAT('a',4000)));;
LENGTH(f1(REPEAT('a',4000)))
@@ -69,7 +69,7 @@ DROP FUNCTION f1;
CREATE FUNCTION f1(param VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN param; END;;
SHOW CREATE FUNCTION f1;
Function sql_mode Create Function character_set_client collation_connection Database Collation
-f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param VARCHAR2) RETURN varchar(4000) CHARSET latin1
+f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param VARCHAR2) RETURN varchar(4000) CHARSET latin1
AS BEGIN RETURN param; END latin1 latin1_swedish_ci latin1_swedish_ci
SELECT LENGTH(f1(REPEAT('a',4000)));;
LENGTH(f1(REPEAT('a',4000)))
@@ -85,7 +85,7 @@ DROP FUNCTION f1;
CREATE FUNCTION f1(param NVARCHAR) RETURN NVARCHAR AS BEGIN RETURN param; END;;
SHOW CREATE FUNCTION f1;
Function sql_mode Create Function character_set_client collation_connection Database Collation
-f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param NVARCHAR) RETURN varchar(4000) CHARSET utf8
+f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param NVARCHAR) RETURN varchar(4000) CHARSET utf8
AS BEGIN RETURN param; END latin1 latin1_swedish_ci latin1_swedish_ci
SELECT LENGTH(f1(REPEAT('a',4000)));;
LENGTH(f1(REPEAT('a',4000)))
@@ -101,7 +101,7 @@ DROP FUNCTION f1;
CREATE FUNCTION f1(param VARBINARY) RETURN VARBINARY AS BEGIN RETURN param; END;;
SHOW CREATE FUNCTION f1;
Function sql_mode Create Function character_set_client collation_connection Database Collation
-f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param VARBINARY) RETURN varbinary(4000)
+f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param VARBINARY) RETURN varbinary(4000)
AS BEGIN RETURN param; END latin1 latin1_swedish_ci latin1_swedish_ci
SELECT LENGTH(f1(REPEAT('a',4000)));;
LENGTH(f1(REPEAT('a',4000)))
@@ -117,7 +117,7 @@ DROP FUNCTION f1;
CREATE FUNCTION f1(param RAW) RETURN RAW AS BEGIN RETURN param; END;;
SHOW CREATE FUNCTION f1;
Function sql_mode Create Function character_set_client collation_connection Database Collation
-f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param RAW) RETURN varbinary(4000)
+f1 PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT CREATE DEFINER="root"@"localhost" FUNCTION "f1"(param RAW) RETURN varbinary(4000)
AS BEGIN RETURN param; END latin1 latin1_swedish_ci latin1_swedish_ci
SELECT LENGTH(f1(REPEAT('a',4000)));;
LENGTH(f1(REPEAT('a',4000)))
diff --git a/mysql-test/suite/compat/oracle/r/sp.result b/mysql-test/suite/compat/oracle/r/sp.result
index 2f565b0a183..f0a7d2808f1 100644
--- a/mysql-test/suite/compat/oracle/r/sp.result
+++ b/mysql-test/suite/compat/oracle/r/sp.result
@@ -8,7 +8,7 @@ END;
/
SHOW CREATE FUNCTION f1;
Function f1
-sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
+sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT
Create Function CREATE DEFINER="root"@"localhost" FUNCTION "f1"() RETURN int(11)
AS
BEGIN
@@ -29,7 +29,7 @@ END;
/
SHOW CREATE PROCEDURE p1;
Procedure p1
-sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
+sql_mode PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT
Create Procedure CREATE DEFINER="root"@"localhost" PROCEDURE "p1"()
AS
BEGIN
diff --git a/mysql-test/suite/encryption/r/encrypt_and_grep.result b/mysql-test/suite/encryption/r/encrypt_and_grep.result
index 38dc11e7850..cbc05dc7cc6 100644
--- a/mysql-test/suite/encryption/r/encrypt_and_grep.result
+++ b/mysql-test/suite/encryption/r/encrypt_and_grep.result
@@ -1,5 +1,4 @@
SET GLOBAL innodb_file_per_table = ON;
-SET GLOBAL innodb_file_format = `Barracuda`;
create table t1 (a varchar(255)) engine=innodb encrypted=yes;
create table t2 (a varchar(255)) engine=innodb;
show warnings;
@@ -16,6 +15,7 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
NAME
mysql/innodb_table_stats
mysql/innodb_index_stats
+mysql/transaction_registry
test/t1
test/t2
innodb_system
@@ -34,6 +34,7 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
NAME
mysql/innodb_table_stats
mysql/innodb_index_stats
+mysql/transaction_registry
test/t2
test/t3
innodb_system
@@ -58,6 +59,7 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
NAME
mysql/innodb_table_stats
mysql/innodb_index_stats
+mysql/transaction_registry
test/t1
test/t2
innodb_system
diff --git a/mysql-test/suite/encryption/r/innochecksum.result b/mysql-test/suite/encryption/r/innochecksum.result
index 6ea54f3d053..59804f548ae 100644
--- a/mysql-test/suite/encryption/r/innochecksum.result
+++ b/mysql-test/suite/encryption/r/innochecksum.result
@@ -1,4 +1,3 @@
-SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
set global innodb_compression_algorithm = 1;
# Create and populate a tables
@@ -8,12 +7,6 @@ CREATE TABLE t3 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB ROW_FOR
CREATE TABLE t4 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB PAGE_COMPRESSED=1;
CREATE TABLE t5 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB PAGE_COMPRESSED=1 ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
CREATE TABLE t6 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
-# Write file to make mysql-test-run.pl expect the "crash", but don't
-# start it until it's told to
-# We give 30 seconds to do a clean shutdown because we do not want
-# to redo apply the pages of t1.ibd at the time of recovery.
-# We want SQL to initiate the first access to t1.ibd.
-# Wait until disconnected.
# Run innochecksum on t1
# Run innochecksum on t2
# Run innochecksum on t3
@@ -40,6 +33,4 @@ CREATE TABLE t6 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
# Run innochecksum on t3
# Run innochecksum on t6
# Restore the original tables
-# Write file to make mysql-test-run.pl start up the server again
-# Cleanup
DROP TABLE t1, t2, t3, t4, t5, t6;
diff --git a/mysql-test/suite/encryption/r/innodb-bad-key-change.result b/mysql-test/suite/encryption/r/innodb-bad-key-change.result
index b0f9dfe3e11..1c64ac9a6c3 100644
--- a/mysql-test/suite/encryption/r/innodb-bad-key-change.result
+++ b/mysql-test/suite/encryption/r/innodb-bad-key-change.result
@@ -1,5 +1,6 @@
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
+call mtr.add_suppression("InnoDB: Table `test`\\.`t[12]` (has an unreadable root page|is corrupted)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[12]\\.ibd' cannot be decrypted\\.");
call mtr.add_suppression("File '.*mysql-test.std_data.keysbad3\\.txt' not found");
# Start server with keys2.txt
@@ -25,8 +26,10 @@ foobar 2
# Restart server with keysbad3.txt
SELECT * FROM t1;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t1' doesn't exist in engine
DROP TABLE t1;
+Warnings:
+Warning 192 Table test/t1 in tablespace is encrypted but encryption service or used key_id is not available. Can't continue reading table.
# Start server with keys3.txt
SET GLOBAL innodb_default_encryption_key_id=5;
CREATE TABLE t2 (c VARCHAR(8), id int not null primary key, b int, key(b)) ENGINE=InnoDB ENCRYPTED=YES;
@@ -34,33 +37,31 @@ INSERT INTO t2 VALUES ('foobar',1,2);
# Restart server with keys2.txt
SELECT * FROM t2;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t2' doesn't exist in engine
SELECT * FROM t2 where id = 1;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t2' doesn't exist in engine
SELECT * FROM t2 where b = 1;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t2' doesn't exist in engine
INSERT INTO t2 VALUES ('tmp',3,3);
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t2' doesn't exist in engine
DELETE FROM t2 where b = 3;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t2' doesn't exist in engine
DELETE FROM t2 where id = 3;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t2' doesn't exist in engine
UPDATE t2 set b = b +1;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t2' doesn't exist in engine
OPTIMIZE TABLE t2;
Table Op Msg_type Msg_text
-test.t2 optimize Warning Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
-test.t2 optimize Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
-test.t2 optimize error Corrupt
+test.t2 optimize Error Table 'test.t2' doesn't exist in engine
+test.t2 optimize status Operation failed
ALTER TABLE t2 ADD COLUMN d INT;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t2' doesn't exist in engine
ANALYZE TABLE t2;
Table Op Msg_type Msg_text
-test.t2 analyze Warning Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
-test.t2 analyze Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
-test.t2 analyze error Corrupt
+test.t2 analyze Error Table 'test.t2' doesn't exist in engine
+test.t2 analyze status Operation failed
TRUNCATE TABLE t2;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t2' doesn't exist in engine
DROP TABLE t2;
# Start server with keys2.txt
diff --git a/mysql-test/suite/encryption/r/innodb-bad-key-change2.result b/mysql-test/suite/encryption/r/innodb-bad-key-change2.result
index b1f91c0d095..087f76eda2d 100644
--- a/mysql-test/suite/encryption/r/innodb-bad-key-change2.result
+++ b/mysql-test/suite/encryption/r/innodb-bad-key-change2.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("InnoDB: Table `test`\\.`t1` (has an unreadable root page|is corrupted|does not exist.*is trying to rename)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t1(new)?\\.ibd' cannot be decrypted\\.");
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
call mtr.add_suppression("InnoDB: Tablespace for table \`test\`.\`t1\` is set as discarded\\.");
@@ -6,39 +7,37 @@ CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB
ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
SELECT * FROM t1;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t1' doesn't exist in engine
SHOW WARNINGS;
Level Code Message
Warning 192 Table test/t1 in tablespace is encrypted but encryption service or used key_id is not available. Can't continue reading table.
-Warning 192 Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
-Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+Error 1932 Table 'test.t1' doesn't exist in engine
ALTER TABLE t1 ENGINE=InnoDB;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t1' doesn't exist in engine
SHOW WARNINGS;
Level Code Message
-Warning 192 Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
-Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+Error 1932 Table 'test.t1' doesn't exist in engine
OPTIMIZE TABLE t1;
Table Op Msg_type Msg_text
-test.t1 optimize Warning Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
-test.t1 optimize Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
-test.t1 optimize error Corrupt
+test.t1 optimize Error Table 'test.t1' doesn't exist in engine
+test.t1 optimize status Operation failed
SHOW WARNINGS;
Level Code Message
CHECK TABLE t1;
Table Op Msg_type Msg_text
-test.t1 check Warning Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
-test.t1 check Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
-test.t1 check error Corrupt
+test.t1 check Error Table 'test.t1' doesn't exist in engine
+test.t1 check status Operation failed
SHOW WARNINGS;
Level Code Message
FLUSH TABLES t1 FOR EXPORT;
backup: t1
UNLOCK TABLES;
ALTER TABLE t1 DISCARD TABLESPACE;
-Warnings:
-Warning 192 Table test/t1 in tablespace is encrypted but encryption service or used key_id is not available. Can't continue reading table.
-Warning 1812 Tablespace is missing for table 'test/t1'
+ERROR 42S02: Table 'test.t1' doesn't exist in engine
+DROP TABLE t1;
+CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB
+ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
+ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
Warnings:
@@ -51,6 +50,7 @@ t1 CREATE TABLE `t1` (
PRIMARY KEY (`pk`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES `ENCRYPTION_KEY_ID`=4
RENAME TABLE t1 TO t1new;
-ALTER TABLE t1new RENAME TO t2new;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
-DROP TABLE t1new;
+ERROR HY000: Error on rename of './test/t1' to './test/t1new' (errno: 155 "The table does not exist in the storage engine")
+ALTER TABLE t1 RENAME TO t1new;
+ERROR 42S02: Table 'test.t1' doesn't exist in engine
+DROP TABLE t1;
diff --git a/mysql-test/suite/encryption/r/innodb-bad-key-change4.result b/mysql-test/suite/encryption/r/innodb-bad-key-change4.result
index 7f4b1fbc151..514a0aec051 100644
--- a/mysql-test/suite/encryption/r/innodb-bad-key-change4.result
+++ b/mysql-test/suite/encryption/r/innodb-bad-key-change4.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("InnoDB: Table `test`\\.`t1` (has an unreadable root page|is corrupted)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t1\\.ibd' cannot be decrypted\\.");
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
SET GLOBAL innodb_file_per_table = ON;
@@ -7,16 +8,14 @@ INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
OPTIMIZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 optimize Warning Table test/t1 in tablespace is encrypted but encryption service or used key_id is not available. Can't continue reading table.
-test.t1 optimize Warning Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
-test.t1 optimize Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
-test.t1 optimize error Corrupt
+test.t1 optimize Error Table 'test.t1' doesn't exist in engine
+test.t1 optimize status Operation failed
SHOW WARNINGS;
Level Code Message
CHECK TABLE t1;
Table Op Msg_type Msg_text
-test.t1 check Warning Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
-test.t1 check Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
-test.t1 check error Corrupt
+test.t1 check Error Table 'test.t1' doesn't exist in engine
+test.t1 check status Operation failed
SHOW WARNINGS;
Level Code Message
DROP TABLE t1;
diff --git a/mysql-test/suite/encryption/r/innodb-encryption-disable.result b/mysql-test/suite/encryption/r/innodb-encryption-disable.result
index 90668a3a395..74570c92ae0 100644
--- a/mysql-test/suite/encryption/r/innodb-encryption-disable.result
+++ b/mysql-test/suite/encryption/r/innodb-encryption-disable.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("InnoDB: Table `test`\\.`t[15]` (has an unreadable root page|is corrupted)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[15]\\.ibd' cannot be decrypted\\.");
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
create table t5 (
@@ -18,8 +19,8 @@ CREATE TABLE `t1` (
insert into t1 values (1,2,'maria','db','encryption');
alter table t1 encrypted='yes' `encryption_key_id`=1;
select * from t1;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t1' doesn't exist in engine
select * from t5;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t5' doesn't exist in engine
drop table t1;
drop table t5;
diff --git a/mysql-test/suite/encryption/r/innodb-first-page-read.result b/mysql-test/suite/encryption/r/innodb-first-page-read.result
index 6df80e8223d..29253885e83 100644
--- a/mysql-test/suite/encryption/r/innodb-first-page-read.result
+++ b/mysql-test/suite/encryption/r/innodb-first-page-read.result
@@ -1,5 +1,3 @@
-SET GLOBAL innodb_file_format = `Barracuda`;
-SET GLOBAL innodb_file_per_table = ON;
FLUSH STATUS;
create database innodb_test;
use innodb_test;
diff --git a/mysql-test/suite/encryption/r/innodb-force-corrupt.result b/mysql-test/suite/encryption/r/innodb-force-corrupt.result
index 67917ca5f82..d27136bf430 100644
--- a/mysql-test/suite/encryption/r/innodb-force-corrupt.result
+++ b/mysql-test/suite/encryption/r/innodb-force-corrupt.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("InnoDB: Table `test`\\.`t[13]` (has an unreadable root page|is corrupted)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
SET GLOBAL innodb_file_per_table = ON;
set global innodb_compression_algorithm = 1;
@@ -14,10 +15,10 @@ COMMIT;
# Backup tables before corrupting
# Corrupt tables
SELECT * FROM t1;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t1' doesn't exist in engine
SELECT * FROM t2;
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
SELECT * FROM t3;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t3' doesn't exist in engine
# Restore the original tables
DROP TABLE t1,t2,t3;
diff --git a/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result b/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result
index 680db692c17..f233ed48a02 100644
--- a/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result
+++ b/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result
@@ -2,6 +2,8 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
NAME
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
NAME
+SET GLOBAL innodb_file_per_table = ON;
+set global innodb_compression_algorithm = 1;
create database enctests;
use enctests;
create table t1(a int not null primary key, b char(200)) engine=innodb;
diff --git a/mysql-test/suite/encryption/r/innodb-missing-key.result b/mysql-test/suite/encryption/r/innodb-missing-key.result
index 3eb48409f13..2c5401ff681 100644
--- a/mysql-test/suite/encryption/r/innodb-missing-key.result
+++ b/mysql-test/suite/encryption/r/innodb-missing-key.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("InnoDB: Table `test`\\.`t1` (has an unreadable root page|is corrupted)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
# Start server with keys2.txt
CREATE TABLE t1(a int not null primary key auto_increment, b varchar(128)) engine=innodb ENCRYPTED=YES ENCRYPTION_KEY_ID=19;
@@ -32,11 +33,11 @@ SELECT COUNT(1) FROM t2;
COUNT(1)
2048
SELECT COUNT(1) FROM t2,t1 where t2.a = t1.a;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t1' doesn't exist in engine
SELECT COUNT(1) FROM t1 where b = 'ab';
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t1' doesn't exist in engine
SELECT COUNT(1) FROM t1;
-ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
+ERROR 42S02: Table 'test.t1' doesn't exist in engine
# Start server with keys2.txt
SELECT COUNT(1) FROM t1;
diff --git a/mysql-test/suite/encryption/r/innodb-redo-badkey.result b/mysql-test/suite/encryption/r/innodb-redo-badkey.result
index ee803261b90..f600b96f987 100644
--- a/mysql-test/suite/encryption/r/innodb-redo-badkey.result
+++ b/mysql-test/suite/encryption/r/innodb-redo-badkey.result
@@ -7,7 +7,6 @@ call mtr.add_suppression("InnoDB: Plugin initialization aborted");
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
# Restart mysqld --file-key-management-filename=keys2.txt
# Wait max 10 min for key encryption threads to encrypt all spaces
-SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
create table t1(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes encryption_key_id=4;
create table t2(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb row_format=compressed;
diff --git a/mysql-test/suite/encryption/r/innodb-redo-nokeys.result b/mysql-test/suite/encryption/r/innodb-redo-nokeys.result
index dcbe1f5a395..530d228cc85 100644
--- a/mysql-test/suite/encryption/r/innodb-redo-nokeys.result
+++ b/mysql-test/suite/encryption/r/innodb-redo-nokeys.result
@@ -4,12 +4,8 @@ call mtr.add_suppression("Plugin 'file_key_management' .*");
call mtr.add_suppression("InnoDB: cannot enable encryption, encryption plugin is not available");
call mtr.add_suppression("Plugin 'InnoDB' init function returned error.");
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed.");
-call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t2 cannot be decrypted.");
-call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t3 cannot be decrypted.");
-call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t4 cannot be decrypted.");
-call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t1 cannot be decrypted.");
+call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[0-9]+\\] in file test/t[1-4] cannot be decrypted");
# Restart mysqld --file-key-management-filename=keys2.txt
-SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
create table t1(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes encryption_key_id=20;
create table t2(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed;
diff --git a/mysql-test/suite/encryption/r/innodb-spatial-index.result b/mysql-test/suite/encryption/r/innodb-spatial-index.result
index d8f76988f9e..e8e133c61a1 100644
--- a/mysql-test/suite/encryption/r/innodb-spatial-index.result
+++ b/mysql-test/suite/encryption/r/innodb-spatial-index.result
@@ -38,6 +38,7 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
NAME
mysql/innodb_table_stats
mysql/innodb_index_stats
+mysql/transaction_registry
test/t1
test/t2
innodb_system
diff --git a/mysql-test/suite/encryption/r/innodb_encrypt_log_corruption.result b/mysql-test/suite/encryption/r/innodb_encrypt_log_corruption.result
index e4ece7bc4ed..8b58ff593de 100644
--- a/mysql-test/suite/encryption/r/innodb_encrypt_log_corruption.result
+++ b/mysql-test/suite/encryption/r/innodb_encrypt_log_corruption.result
@@ -49,6 +49,13 @@ AND support IN ('YES', 'DEFAULT', 'ENABLED');
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
FOUND 1 /InnoDB: Invalid log block checksum. block: 2372 checkpoint no: 1 expected: 3362026715 found: 144444122/ in mysqld.1.err
FOUND 1 /InnoDB: Missing MLOG_CHECKPOINT between the checkpoint 1213964 and the end 1213952\./ in mysqld.1.err
+# same, but with current-version header
+SELECT * FROM INFORMATION_SCHEMA.ENGINES
+WHERE engine = 'innodb'
+AND support IN ('YES', 'DEFAULT', 'ENABLED');
+ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
+FOUND 2 /InnoDB: Invalid log block checksum. block: 2372 checkpoint no: 1 expected: 3362026715 found: 144444122/ in mysqld.1.err
+FOUND 2 /InnoDB: Missing MLOG_CHECKPOINT between the checkpoint 1213964 and the end 1213952\./ in mysqld.1.err
# --innodb-force-recovery=6 (skip the entire redo log)
SELECT * FROM INFORMATION_SCHEMA.ENGINES
WHERE engine = 'innodb'
@@ -104,21 +111,27 @@ SELECT * FROM INFORMATION_SCHEMA.ENGINES
WHERE engine = 'innodb'
AND support IN ('YES', 'DEFAULT', 'ENABLED');
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
-FOUND 1 /InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42/ in mysqld.1.err
-FOUND 1 /Downgrade after a crash is not supported\. The redo log was created with MariaDB 10\.3\.1/ in mysqld.1.err
+FOUND 2 /InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42/ in mysqld.1.err
# Empty 10.3 redo log
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
WHERE engine = 'innodb'
AND support IN ('YES', 'DEFAULT', 'ENABLED');
COUNT(*)
1
-FOUND 1 /InnoDB: Downgrading redo log:/ in mysqld.1.err
+FOUND 1 /InnoDB: .* started; log sequence number 121397[09]/ in mysqld.1.err
+# Empty 10.2 redo log
+SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
+WHERE engine = 'innodb'
+AND support IN ('YES', 'DEFAULT', 'ENABLED');
+COUNT(*)
+1
+FOUND 2 /InnoDB: Upgrading redo log:/ in mysqld.1.err
# Minimal MariaDB 10.1.21 encrypted redo log
SELECT COUNT(*) `1` FROM INFORMATION_SCHEMA.ENGINES WHERE engine='innodb'
AND support IN ('YES', 'DEFAULT', 'ENABLED');
1
1
-FOUND 1 /InnoDB: Encrypting redo log/ in mysqld.1.err
+FOUND 2 /InnoDB: Encrypting redo log/ in mysqld.1.err
ib_buffer_pool
ib_logfile0
ib_logfile1
diff --git a/mysql-test/suite/encryption/r/innodb_encryption-page-compression.result b/mysql-test/suite/encryption/r/innodb_encryption-page-compression.result
index 359f285901c..fd2f03a5d18 100644
--- a/mysql-test/suite/encryption/r/innodb_encryption-page-compression.result
+++ b/mysql-test/suite/encryption/r/innodb_encryption-page-compression.result
@@ -1,3 +1,4 @@
+SET GLOBAL innodb_file_per_table = ON;
SET GLOBAL innodb_encryption_threads = 4;
SET GLOBAL innodb_encrypt_tables = on;
set global innodb_compression_algorithm = 1;
diff --git a/mysql-test/suite/encryption/r/innodb_encryption.result b/mysql-test/suite/encryption/r/innodb_encryption.result
index 72f2632ba26..ee3774bcee0 100644
--- a/mysql-test/suite/encryption/r/innodb_encryption.result
+++ b/mysql-test/suite/encryption/r/innodb_encryption.result
@@ -14,6 +14,7 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
NAME
mysql/innodb_table_stats
mysql/innodb_index_stats
+mysql/transaction_registry
innodb_system
# Success!
# Now turn off encryption and wait for threads to decrypt everything
@@ -23,6 +24,7 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
NAME
mysql/innodb_table_stats
mysql/innodb_index_stats
+mysql/transaction_registry
innodb_system
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
NAME
@@ -37,6 +39,7 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
NAME
mysql/innodb_table_stats
mysql/innodb_index_stats
+mysql/transaction_registry
innodb_system
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
NAME
@@ -50,6 +53,7 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
NAME
mysql/innodb_table_stats
mysql/innodb_index_stats
+mysql/transaction_registry
innodb_system
# Success!
# Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0
@@ -64,6 +68,7 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
NAME
mysql/innodb_table_stats
mysql/innodb_index_stats
+mysql/transaction_registry
innodb_system
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
NAME
diff --git a/mysql-test/suite/encryption/r/innodb_lotoftables.result b/mysql-test/suite/encryption/r/innodb_lotoftables.result
index da07a52f8c3..9dadf13f039 100644
--- a/mysql-test/suite/encryption/r/innodb_lotoftables.result
+++ b/mysql-test/suite/encryption/r/innodb_lotoftables.result
@@ -10,13 +10,13 @@ create database innodb_encrypted_1;
use innodb_encrypted_1;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 3
+Innodb_pages0_read 4
set autocommit=0;
set autocommit=1;
commit work;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 3
+Innodb_pages0_read 4
# should be empty
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE NAME LIKE 'innodb_encrypted%';
NAME
@@ -24,13 +24,13 @@ create database innodb_encrypted_2;
use innodb_encrypted_2;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 3
+Innodb_pages0_read 4
set autocommit=0;
commit work;
set autocommit=1;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 3
+Innodb_pages0_read 4
# should contain 100 tables
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
NAME
@@ -141,13 +141,13 @@ create database innodb_encrypted_3;
use innodb_encrypted_3;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 3
+Innodb_pages0_read 4
set autocommit=0;
commit work;
set autocommit=1;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 3
+Innodb_pages0_read 4
# should contain 100 tables
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
NAME
@@ -357,7 +357,7 @@ innodb_encrypted_3/t_99
use test;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 3
+Innodb_pages0_read 4
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
NAME
innodb_encrypted_2/t_1
@@ -770,53 +770,53 @@ innodb_encrypted_3/t_98
innodb_encrypted_3/t_99
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 3
+Innodb_pages0_read 4
# Success!
# Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0
# Restart Success!
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
use test;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
use innodb_encrypted_1;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
use innodb_encrypted_2;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
use innodb_encrypted_3;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
use innodb_encrypted_1;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
use innodb_encrypted_2;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
use innodb_encrypted_3;
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
show status like 'innodb_pages0_read%';
Variable_name Value
-Innodb_pages0_read 303
+Innodb_pages0_read 304
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
NAME
innodb_encrypted_3/t_1
diff --git a/mysql-test/suite/encryption/r/innodb_onlinealter_encryption.result b/mysql-test/suite/encryption/r/innodb_onlinealter_encryption.result
index f75268f3290..779eb5917cd 100644
--- a/mysql-test/suite/encryption/r/innodb_onlinealter_encryption.result
+++ b/mysql-test/suite/encryption/r/innodb_onlinealter_encryption.result
@@ -40,7 +40,6 @@ NOT FOUND /author/ in t5.ibd
NOT FOUND /mangled/ in t6.ibd
# t7 ... on expecting NOT FOUND
NOT FOUND /mysql/ in t7.ibd
-SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
ALTER TABLE t1 ADD COLUMN b int default 2;
ALTER TABLE t2 ADD COLUMN b int default 2;
diff --git a/mysql-test/suite/encryption/t/encrypt_and_grep.test b/mysql-test/suite/encryption/t/encrypt_and_grep.test
index f7916843b89..9f26f0a5b24 100644
--- a/mysql-test/suite/encryption/t/encrypt_and_grep.test
+++ b/mysql-test/suite/encryption/t/encrypt_and_grep.test
@@ -14,10 +14,7 @@
--let t3_IBD = $MYSQLD_DATADIR/test/t3.ibd
--let SEARCH_RANGE = 10000000
---disable_warnings
SET GLOBAL innodb_file_per_table = ON;
-SET GLOBAL innodb_file_format = `Barracuda`;
---enable_warnings
create table t1 (a varchar(255)) engine=innodb encrypted=yes;
create table t2 (a varchar(255)) engine=innodb;
diff --git a/mysql-test/suite/encryption/t/innochecksum.test b/mysql-test/suite/encryption/t/innochecksum.test
index f1c1b65d418..f57b8d265bb 100644
--- a/mysql-test/suite/encryption/t/innochecksum.test
+++ b/mysql-test/suite/encryption/t/innochecksum.test
@@ -14,12 +14,9 @@ if (!$INNOCHECKSUM) {
--die Need innochecksum binary
}
---disable_warnings
-SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
# zlib
set global innodb_compression_algorithm = 1;
---enable_warnings
--echo # Create and populate a tables
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
@@ -56,17 +53,7 @@ let t6_IBD = $MYSQLD_DATADIR/test/t6.ibd;
let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
let MYSQLD_DATADIR=`select @@datadir`;
---echo # Write file to make mysql-test-run.pl expect the "crash", but don't
---echo # start it until it's told to
---exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
-
---echo # We give 30 seconds to do a clean shutdown because we do not want
---echo # to redo apply the pages of t1.ibd at the time of recovery.
---echo # We want SQL to initiate the first access to t1.ibd.
-shutdown_server 30;
-
---echo # Wait until disconnected.
---source include/wait_until_disconnected.inc
+--source include/shutdown_mysqld.inc
--echo # Run innochecksum on t1
-- disable_result_log
@@ -276,10 +263,5 @@ EOF
--move_file $MYSQLD_DATADIR/test/t5.ibd.backup $MYSQLD_DATADIR/test/t5.ibd
--move_file $MYSQLD_DATADIR/test/t6.ibd.backup $MYSQLD_DATADIR/test/t6.ibd
---echo # Write file to make mysql-test-run.pl start up the server again
---exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
---enable_reconnect
---source include/wait_until_connected_again.inc
-
---echo # Cleanup
+--source include/start_mysqld.inc
DROP TABLE t1, t2, t3, t4, t5, t6;
diff --git a/mysql-test/suite/encryption/t/innodb-bad-key-change.opt b/mysql-test/suite/encryption/t/innodb-bad-key-change.opt
new file mode 100644
index 00000000000..d3f298d3335
--- /dev/null
+++ b/mysql-test/suite/encryption/t/innodb-bad-key-change.opt
@@ -0,0 +1,2 @@
+--innodb-purge-rseg-truncate-frequency=1
+--skip-innodb-fast-shutdown
diff --git a/mysql-test/suite/encryption/t/innodb-bad-key-change.test b/mysql-test/suite/encryption/t/innodb-bad-key-change.test
index 48691fb19a2..a32d043dd3b 100644
--- a/mysql-test/suite/encryption/t/innodb-bad-key-change.test
+++ b/mysql-test/suite/encryption/t/innodb-bad-key-change.test
@@ -10,6 +10,7 @@
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
+call mtr.add_suppression("InnoDB: Table `test`\\.`t[12]` (has an unreadable root page|is corrupted)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[12]\\.ibd' cannot be decrypted\\.");
call mtr.add_suppression("File '.*mysql-test.std_data.keysbad3\\.txt' not found");
@@ -37,17 +38,15 @@ SELECT * FROM t1;
-- source include/restart_mysqld.inc
--disable_warnings
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
SELECT * FROM t1;
--enable_warnings
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keysbad3.txt
-- source include/restart_mysqld.inc
---disable_warnings
---replace_regex /tablespace [0-9]*/tablespace /
+--replace_regex /(tablespace|key_id) [1-9][0-9]*/\1 /
DROP TABLE t1;
---enable_warnings
#
# MDEV-8591: Database page corruption on disk or a failed space, Assertion failure in file buf0buf.cc
@@ -68,36 +67,35 @@ INSERT INTO t2 VALUES ('foobar',1,2);
-- source include/restart_mysqld.inc
--disable_warnings
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
SELECT * FROM t2;
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
SELECT * FROM t2 where id = 1;
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
SELECT * FROM t2 where b = 1;
---replace_regex /tablespace [0-9]*/tablespace /
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
INSERT INTO t2 VALUES ('tmp',3,3);
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
DELETE FROM t2 where b = 3;
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
DELETE FROM t2 where id = 3;
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
UPDATE t2 set b = b +1;
OPTIMIZE TABLE t2;
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
ALTER TABLE t2 ADD COLUMN d INT;
ANALYZE TABLE t2;
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
TRUNCATE TABLE t2;
DROP TABLE t2;
diff --git a/mysql-test/suite/encryption/t/innodb-bad-key-change2.opt b/mysql-test/suite/encryption/t/innodb-bad-key-change2.opt
new file mode 100644
index 00000000000..d3f298d3335
--- /dev/null
+++ b/mysql-test/suite/encryption/t/innodb-bad-key-change2.opt
@@ -0,0 +1,2 @@
+--innodb-purge-rseg-truncate-frequency=1
+--skip-innodb-fast-shutdown
diff --git a/mysql-test/suite/encryption/t/innodb-bad-key-change2.test b/mysql-test/suite/encryption/t/innodb-bad-key-change2.test
index 3c9e10efc90..8c1a8277a30 100644
--- a/mysql-test/suite/encryption/t/innodb-bad-key-change2.test
+++ b/mysql-test/suite/encryption/t/innodb-bad-key-change2.test
@@ -8,6 +8,7 @@
# MDEV-8768: Server crash at file btr0btr.ic line 122 when checking encrypted table using incorrect keys
# MDEV-8727: Server/InnoDB hangs on shutdown after trying to read an encrypted table with a wrong key
#
+call mtr.add_suppression("InnoDB: Table `test`\\.`t1` (has an unreadable root page|is corrupted|does not exist.*is trying to rename)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t1(new)?\\.ibd' cannot be decrypted\\.");
# Suppression for builds where file_key_management plugin is linked statically
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
@@ -25,11 +26,11 @@ INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys3.txt
--source include/restart_mysqld.inc
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
SELECT * FROM t1;
--replace_regex /(tablespace|key_id) [1-9][0-9]*/\1 /
SHOW WARNINGS;
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
ALTER TABLE t1 ENGINE=InnoDB;
--replace_regex /(tablespace|key_id) [1-9][0-9]*/\1 /
SHOW WARNINGS;
@@ -56,8 +57,13 @@ UNLOCK TABLES;
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys3.txt
--source include/restart_mysqld.inc
-# Discard should pass even with incorrect keys
---replace_regex /(tablespace|key_id) [1-9][0-9]*/\1 /
+--error ER_NO_SUCH_TABLE_IN_ENGINE
+ALTER TABLE t1 DISCARD TABLESPACE;
+# Drop table will succeed.
+DROP TABLE t1;
+
+CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB
+ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
ALTER TABLE t1 DISCARD TABLESPACE;
perl;
@@ -66,7 +72,6 @@ ib_discard_tablespaces("test", "t1");
ib_restore_tablespaces("test", "t1");
EOF
-
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
--source include/restart_mysqld.inc
@@ -76,13 +81,10 @@ SHOW CREATE TABLE t1;
--let $restart_parameters= --innodb-encrypt-tables --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys3.txt
--source include/restart_mysqld.inc
-# Rename table should pass even with incorrect keys
+--error ER_ERROR_ON_RENAME
RENAME TABLE t1 TO t1new;
---replace_regex /(tablespace|key_id) [1-9][0-9]*/\1 /
-
-# Alter table rename is not allowed with incorrect keys
---error ER_GET_ERRMSG
-ALTER TABLE t1new RENAME TO t2new;
+--error ER_NO_SUCH_TABLE_IN_ENGINE
+ALTER TABLE t1 RENAME TO t1new;
# Drop should pass even with incorrect keys
--replace_regex /(tablespace|key_id) [1-9][0-9]*/\1 /
-DROP TABLE t1new;
+DROP TABLE t1;
diff --git a/mysql-test/suite/encryption/t/innodb-bad-key-change4.opt b/mysql-test/suite/encryption/t/innodb-bad-key-change4.opt
index 6426bac41a0..d20d3b60913 100644
--- a/mysql-test/suite/encryption/t/innodb-bad-key-change4.opt
+++ b/mysql-test/suite/encryption/t/innodb-bad-key-change4.opt
@@ -1,4 +1,6 @@
--loose-innodb-buffer-pool-stats
--loose-innodb-buffer-page
--loose-innodb-buffer-page-lru
---innodb-defragment=1 \ No newline at end of file
+--innodb-defragment=1
+--innodb-purge-rseg-truncate-frequency=1
+--skip-innodb-fast-shutdown
diff --git a/mysql-test/suite/encryption/t/innodb-bad-key-change4.test b/mysql-test/suite/encryption/t/innodb-bad-key-change4.test
index a2305aa968b..30d417cfe93 100644
--- a/mysql-test/suite/encryption/t/innodb-bad-key-change4.test
+++ b/mysql-test/suite/encryption/t/innodb-bad-key-change4.test
@@ -7,6 +7,7 @@
# MDEV-8768: Server crash at file btr0btr.ic line 122 when checking encrypted table using incorrect keys
#
+call mtr.add_suppression("InnoDB: Table `test`\\.`t1` (has an unreadable root page|is corrupted)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t1\\.ibd' cannot be decrypted\\.");
# Suppression for builds where file_key_management plugin is linked statically
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
diff --git a/mysql-test/suite/encryption/t/innodb-compressed-blob.combinations b/mysql-test/suite/encryption/t/innodb-compressed-blob.combinations
index e096b023b52..df4560f06e5 100644
--- a/mysql-test/suite/encryption/t/innodb-compressed-blob.combinations
+++ b/mysql-test/suite/encryption/t/innodb-compressed-blob.combinations
@@ -1,12 +1,4 @@
[crc32]
-loose-innodb-tablespaces-encryption
-loose-innodb-encrypt-tables=on
-loose-innodb-encryption-threads=4
-max_allowed_packet=64K
loose-innodb-checksum-algorithm=crc32
[none]
-loose-innodb-tablespaces-encryption
-loose-innodb-encrypt-tables=on
-loose-innodb-encryption-threads=4
-max_allowed_packet=64K
loose-innodb-checksum-algorithm=none
diff --git a/mysql-test/suite/encryption/t/innodb-compressed-blob.opt b/mysql-test/suite/encryption/t/innodb-compressed-blob.opt
new file mode 100644
index 00000000000..061212b3034
--- /dev/null
+++ b/mysql-test/suite/encryption/t/innodb-compressed-blob.opt
@@ -0,0 +1,6 @@
+--max-allowed-packet=64K
+--innodb-tablespaces-encryption
+--innodb-encrypt-tables=on
+--innodb-encryption-threads=4
+--innodb-purge-rseg-truncate-frequency=1
+--skip-innodb-fast-shutdown
diff --git a/mysql-test/suite/encryption/t/innodb-encryption-disable.opt b/mysql-test/suite/encryption/t/innodb-encryption-disable.opt
new file mode 100644
index 00000000000..d3f298d3335
--- /dev/null
+++ b/mysql-test/suite/encryption/t/innodb-encryption-disable.opt
@@ -0,0 +1,2 @@
+--innodb-purge-rseg-truncate-frequency=1
+--skip-innodb-fast-shutdown
diff --git a/mysql-test/suite/encryption/t/innodb-encryption-disable.test b/mysql-test/suite/encryption/t/innodb-encryption-disable.test
index 8c72cf6a3b2..0514ce70fb6 100644
--- a/mysql-test/suite/encryption/t/innodb-encryption-disable.test
+++ b/mysql-test/suite/encryption/t/innodb-encryption-disable.test
@@ -7,6 +7,7 @@
# MDEV-9559: Server without encryption configs crashes if selecting from an implicitly encrypted table
#
+call mtr.add_suppression("InnoDB: Table `test`\\.`t[15]` (has an unreadable root page|is corrupted)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[15]\\.ibd' cannot be decrypted\\.");
# Suppression for builds where file_key_management plugin is linked statically
@@ -39,9 +40,9 @@ alter table t1 encrypted='yes' `encryption_key_id`=1;
--let $restart_parameters=--innodb-encrypt-tables=OFF
--source include/restart_mysqld.inc
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
select * from t1;
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
select * from t5;
--let $restart_parameters=--innodb-encrypt-tables=ON --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
diff --git a/mysql-test/suite/encryption/t/innodb-first-page-read.test b/mysql-test/suite/encryption/t/innodb-first-page-read.test
index d661e4565d2..c86e16c52b8 100644
--- a/mysql-test/suite/encryption/t/innodb-first-page-read.test
+++ b/mysql-test/suite/encryption/t/innodb-first-page-read.test
@@ -2,11 +2,6 @@
-- source include/have_file_key_management_plugin.inc
-- source include/not_embedded.inc
---disable_warnings
-SET GLOBAL innodb_file_format = `Barracuda`;
-SET GLOBAL innodb_file_per_table = ON;
---enable_warnings
-
FLUSH STATUS;
create database innodb_test;
diff --git a/mysql-test/suite/encryption/t/innodb-force-corrupt.opt b/mysql-test/suite/encryption/t/innodb-force-corrupt.opt
new file mode 100644
index 00000000000..d3f298d3335
--- /dev/null
+++ b/mysql-test/suite/encryption/t/innodb-force-corrupt.opt
@@ -0,0 +1,2 @@
+--innodb-purge-rseg-truncate-frequency=1
+--skip-innodb-fast-shutdown
diff --git a/mysql-test/suite/encryption/t/innodb-force-corrupt.test b/mysql-test/suite/encryption/t/innodb-force-corrupt.test
index 4d3bfc2d1e9..c23959801ca 100644
--- a/mysql-test/suite/encryption/t/innodb-force-corrupt.test
+++ b/mysql-test/suite/encryption/t/innodb-force-corrupt.test
@@ -7,6 +7,7 @@
# Don't test under embedded
-- source include/not_embedded.inc
+call mtr.add_suppression("InnoDB: Table `test`\\.`t[13]` (has an unreadable root page|is corrupted)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
SET GLOBAL innodb_file_per_table = ON;
@@ -65,11 +66,11 @@ EOF
--source include/start_mysqld.inc
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
SELECT * FROM t1;
--error ER_GET_ERRMSG
SELECT * FROM t2;
---error ER_GET_ERRMSG
+--error ER_NO_SUCH_TABLE_IN_ENGINE
SELECT * FROM t3;
--source include/shutdown_mysqld.inc
diff --git a/mysql-test/suite/encryption/t/innodb-key-rotation-disable.test b/mysql-test/suite/encryption/t/innodb-key-rotation-disable.test
index 574e0c3becc..3167cee4b4b 100644
--- a/mysql-test/suite/encryption/t/innodb-key-rotation-disable.test
+++ b/mysql-test/suite/encryption/t/innodb-key-rotation-disable.test
@@ -6,15 +6,10 @@
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
---disable_query_log
---disable_warnings
let $encryption = `SELECT @@innodb_encrypt_tables`;
-SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
# zlib
set global innodb_compression_algorithm = 1;
---enable_warnings
---enable_query_log
create database enctests;
use enctests;
diff --git a/mysql-test/suite/encryption/t/innodb-missing-key.opt b/mysql-test/suite/encryption/t/innodb-missing-key.opt
index 02691695cbd..5e144bc2d3c 100644
--- a/mysql-test/suite/encryption/t/innodb-missing-key.opt
+++ b/mysql-test/suite/encryption/t/innodb-missing-key.opt
@@ -2,4 +2,5 @@
--innodb-encryption-rotate-key-age=15
--innodb-encryption-threads=4
--innodb-tablespaces-encryption
-
+--innodb-purge-rseg-truncate-frequency=1
+--skip-innodb-fast-shutdown
diff --git a/mysql-test/suite/encryption/t/innodb-missing-key.test b/mysql-test/suite/encryption/t/innodb-missing-key.test
index 8091d23cf1c..2a56581601a 100644
--- a/mysql-test/suite/encryption/t/innodb-missing-key.test
+++ b/mysql-test/suite/encryption/t/innodb-missing-key.test
@@ -7,6 +7,7 @@
# MDEV-11004: Unable to start (Segfault or os error 2) when encryption key missing
#
+call mtr.add_suppression("InnoDB: Table `test`\\.`t1` (has an unreadable root page|is corrupted)");
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
--echo # Start server with keys2.txt
@@ -42,11 +43,11 @@ CREATE TABLE t4(a int not null primary key auto_increment, b varchar(128)) engin
SELECT SLEEP(5);
SELECT COUNT(1) FROM t3;
SELECT COUNT(1) FROM t2;
---error 1296
+--error ER_NO_SUCH_TABLE_IN_ENGINE
SELECT COUNT(1) FROM t2,t1 where t2.a = t1.a;
---error 1296
+--error ER_NO_SUCH_TABLE_IN_ENGINE
SELECT COUNT(1) FROM t1 where b = 'ab';
---error 1296
+--error ER_NO_SUCH_TABLE_IN_ENGINE
SELECT COUNT(1) FROM t1;
--echo
diff --git a/mysql-test/suite/encryption/t/innodb-redo-badkey.opt b/mysql-test/suite/encryption/t/innodb-redo-badkey.opt
index 343128e8803..2de0bdb3241 100644
--- a/mysql-test/suite/encryption/t/innodb-redo-badkey.opt
+++ b/mysql-test/suite/encryption/t/innodb-redo-badkey.opt
@@ -3,3 +3,5 @@
--innodb-tablespaces-encryption
--innodb-encryption-threads=2
--innodb-default-encryption-key-id=4
+--innodb-purge-rseg-truncate-frequency=1
+--skip-innodb-fast-shutdown
diff --git a/mysql-test/suite/encryption/t/innodb-redo-badkey.test b/mysql-test/suite/encryption/t/innodb-redo-badkey.test
index be8555584bb..bc75ca190e7 100644
--- a/mysql-test/suite/encryption/t/innodb-redo-badkey.test
+++ b/mysql-test/suite/encryption/t/innodb-redo-badkey.test
@@ -20,10 +20,7 @@ call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE faile
--let $wait_condition=SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0
--source include/wait_condition.inc
---disable_warnings
-SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
---enable_warnings
create table t1(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes encryption_key_id=4;
create table t2(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb row_format=compressed;
diff --git a/mysql-test/suite/encryption/t/innodb-redo-nokeys.test b/mysql-test/suite/encryption/t/innodb-redo-nokeys.test
index e55e2ade153..5c344f5beb1 100644
--- a/mysql-test/suite/encryption/t/innodb-redo-nokeys.test
+++ b/mysql-test/suite/encryption/t/innodb-redo-nokeys.test
@@ -9,19 +9,13 @@ call mtr.add_suppression("Plugin 'file_key_management' .*");
call mtr.add_suppression("InnoDB: cannot enable encryption, encryption plugin is not available");
call mtr.add_suppression("Plugin 'InnoDB' init function returned error.");
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed.");
-call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t2 cannot be decrypted.");
-call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t3 cannot be decrypted.");
-call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t4 cannot be decrypted.");
-call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t1 cannot be decrypted.");
+call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[0-9]+\\] in file test/t[1-4] cannot be decrypted");
--echo # Restart mysqld --file-key-management-filename=keys2.txt
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
-- source include/restart_mysqld.inc
---disable_warnings
-SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
---enable_warnings
create table t1(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes encryption_key_id=20;
create table t2(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed;
diff --git a/mysql-test/suite/encryption/t/innodb_encryption-page-compression.test b/mysql-test/suite/encryption/t/innodb_encryption-page-compression.test
index 113b5001f0f..999ff4ff45a 100644
--- a/mysql-test/suite/encryption/t/innodb_encryption-page-compression.test
+++ b/mysql-test/suite/encryption/t/innodb_encryption-page-compression.test
@@ -5,6 +5,7 @@ let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`;
let $innodb_encrypt_tables_orig = `SELECT @@innodb_encrypt_tables`;
let $innodb_encryption_threads_orig = `SELECT @@innodb_encryption_threads`;
+SET GLOBAL innodb_file_per_table = ON;
SET GLOBAL innodb_encryption_threads = 4;
SET GLOBAL innodb_encrypt_tables = on;
diff --git a/mysql-test/suite/encryption/t/innodb_onlinealter_encryption.test b/mysql-test/suite/encryption/t/innodb_onlinealter_encryption.test
index b222e1882d5..9f61bf118aa 100644
--- a/mysql-test/suite/encryption/t/innodb_onlinealter_encryption.test
+++ b/mysql-test/suite/encryption/t/innodb_onlinealter_encryption.test
@@ -75,10 +75,7 @@ set autocommit=1;
-- source include/start_mysqld.inc
---disable_warnings
-SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
---enable_warnings
ALTER TABLE t1 ADD COLUMN b int default 2;
ALTER TABLE t2 ADD COLUMN b int default 2;
diff --git a/mysql-test/suite/federated/federated_partition.result b/mysql-test/suite/federated/federated_partition.result
index a2d5fcffd9b..c8a61d825b6 100644
--- a/mysql-test/suite/federated/federated_partition.result
+++ b/mysql-test/suite/federated/federated_partition.result
@@ -10,7 +10,8 @@ create table federated.t1_1 (s1 int primary key) engine=myisam;
create table federated.t1_2 (s1 int primary key) engine=innodb;
connection master;
create table t1 (s1 int primary key) engine=federated
-partition by list (s1)
+CONNECTION="remember_this"
+ partition by list (s1)
(partition p1 values in (1,3)
connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1_1',
partition p2 values in (2,4)
@@ -20,7 +21,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`s1` int(11) NOT NULL,
PRIMARY KEY (`s1`)
-) ENGINE=FEDERATED DEFAULT CHARSET=latin1
+) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION='remember_this'
PARTITION BY LIST (`s1`)
(PARTITION `p1` VALUES IN (1,3) CONNECTION = 'mysql://root@127.0.0.1:SLAVE_PORT/federated/t1_1' ENGINE = FEDERATED,
PARTITION `p2` VALUES IN (2,4) CONNECTION = 'mysql://root@127.0.0.1:SLAVE_PORT/federated/t1_2' ENGINE = FEDERATED)
diff --git a/mysql-test/suite/federated/federated_partition.test b/mysql-test/suite/federated/federated_partition.test
index ef1e27ec505..47110b5eebf 100644
--- a/mysql-test/suite/federated/federated_partition.test
+++ b/mysql-test/suite/federated/federated_partition.test
@@ -25,6 +25,7 @@ create table federated.t1_2 (s1 int primary key) engine=innodb;
connection master;
--replace_result $SLAVE_MYPORT SLAVE_PORT
eval create table t1 (s1 int primary key) engine=federated
+ CONNECTION="remember_this"
partition by list (s1)
(partition p1 values in (1,3)
connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1_1',
diff --git a/mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc b/mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc
index 71030a2b1d8..ba390dfb4f5 100644
--- a/mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc
+++ b/mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc
@@ -75,7 +75,8 @@ eval SHOW COLUMNS FROM information_schema.$is_table;
SELECT constraint_catalog, constraint_schema, constraint_name, table_catalog,
table_schema, table_name, column_name
FROM information_schema.key_column_usage
-WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL;
+WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL
+ORDER BY BINARY table_schema, BINARY table_name, BINARY column_name, BINARY constraint_name;
--echo ########################################################################################
diff --git a/mysql-test/suite/funcs_1/datadict/is_schemata.inc b/mysql-test/suite/funcs_1/datadict/is_schemata.inc
index 18c759b91d1..0a3f0e726b3 100644
--- a/mysql-test/suite/funcs_1/datadict/is_schemata.inc
+++ b/mysql-test/suite/funcs_1/datadict/is_schemata.inc
@@ -59,7 +59,8 @@ eval SHOW COLUMNS FROM information_schema.$is_table;
# Show that CATALOG_NAME and SQL_PATH are always NULL.
SELECT catalog_name, schema_name, sql_path
FROM information_schema.schemata
-WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL;
+WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL
+ORDER BY schema_name;
--echo ###############################################################################
diff --git a/mysql-test/suite/funcs_1/datadict/is_triggers.inc b/mysql-test/suite/funcs_1/datadict/is_triggers.inc
index b2ce1e2de00..3a449c93c4b 100644
--- a/mysql-test/suite/funcs_1/datadict/is_triggers.inc
+++ b/mysql-test/suite/funcs_1/datadict/is_triggers.inc
@@ -85,7 +85,8 @@ eval SHOW COLUMNS FROM information_schema.$is_table;
SELECT * FROM information_schema.triggers
WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
- OR action_reference_new_table IS NOT NULL;
+ OR action_reference_new_table IS NOT NULL
+ORDER BY trigger_schema, trigger_name;
--echo ##################################################################################
diff --git a/mysql-test/suite/funcs_1/datadict/is_views.inc b/mysql-test/suite/funcs_1/datadict/is_views.inc
index bdba03f3632..cb3444e308a 100644
--- a/mysql-test/suite/funcs_1/datadict/is_views.inc
+++ b/mysql-test/suite/funcs_1/datadict/is_views.inc
@@ -159,12 +159,14 @@ CREATE USER 'testuser1'@'localhost';
# Check just created VIEW
SELECT * FROM information_schema.views
-WHERE table_name LIKE 't1_%';
+WHERE table_name LIKE 't1_%'
+ORDER BY table_schema, table_name;
CREATE VIEW test.t1_view AS SELECT DISTINCT f1 FROM test.t1_table;
CREATE ALGORITHM=MERGE VIEW test.t1_view1 AS SELECT f1 FROM test.t1_table;
CREATE ALGORITHM=TEMPTABLE VIEW test.t1_view2 AS SELECT f1 FROM test.t1_table;
SELECT * FROM information_schema.views
-WHERE table_name LIKE 't1_%';
+WHERE table_name LIKE 't1_%'
+ORDER BY table_schema, table_name;
DROP VIEW test.t1_view1;
DROP VIEW test.t1_view2;
diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result
index 405b7ab62b0..ffa30f4d012 100644
--- a/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result
+++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result
@@ -264,7 +264,7 @@ agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
CALL sp_ins_3();
SELECT row_count();
row_count()
-1
+3
SELECT * FROM temp;
f1 f2 f3 f4 f5 f6
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
@@ -317,7 +317,7 @@ COUNT( f1 ) f1
4 updated
SELECT row_count();
row_count()
-3
+7
SELECT * FROM temp;
f1 f2 f3 f4 f5 f6
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
@@ -380,7 +380,7 @@ row_count() after delete
2
SELECT row_count();
row_count()
-0
+8
SELECT * FROM temp;
f1 f2 f3 f4 f5 f6
qwe xyz 1998-03-26 100 uvw 1000
diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_03.result b/mysql-test/suite/funcs_1/r/innodb_trig_03.result
index 98f599da3e5..7666b86bc94 100644
--- a/mysql-test/suite/funcs_1/r/innodb_trig_03.result
+++ b/mysql-test/suite/funcs_1/r/innodb_trig_03.result
@@ -78,7 +78,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke TRIGGER on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
@@ -168,7 +168,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke UPDATE on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -183,7 +183,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
select f1 from t1 order by f1;
f1
insert 3.5.3.2-no
@@ -248,7 +248,7 @@ connection no_privs_424b;
show grants;
Grants for test_noprivs@localhost
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.* TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg4b_1 before UPDATE on t1 for each row
set new.f1 = 'trig 3.5.3.7-1b';
@@ -329,7 +329,7 @@ connection no_privs_424c;
show grants;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg4c_1 before INSERT on t1 for each row
set new.f1 = 'trig 3.5.3.7-1c';
@@ -441,7 +441,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke SELECT on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -457,7 +457,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
create trigger trg5a_1 before INSERT on t1 for each row
set @test_var = new.f1;
connection default;
@@ -503,7 +503,7 @@ revoke SELECT on priv_db.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.* TO 'test_noprivs'@'localhost'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.* to test_yesprivs@localhost;
@@ -518,7 +518,7 @@ connection no_privs_425b;
show grants;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.* TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg5b_1 before UPDATE on t1 for each row
set @test_var= new.f1;
@@ -565,7 +565,7 @@ revoke SELECT on priv_db.t1 from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
@@ -580,7 +580,7 @@ connection no_privs_425c;
show grants;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg5c_1 before INSERT on t1 for each row
set @test_var= new.f1;
diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_03e.result b/mysql-test/suite/funcs_1/r/innodb_trig_03e.result
index b29c0271fdc..90dabe044e8 100644
--- a/mysql-test/suite/funcs_1/r/innodb_trig_03e.result
+++ b/mysql-test/suite/funcs_1/r/innodb_trig_03e.result
@@ -603,7 +603,7 @@ trig 1_1-yes
revoke TRIGGER on *.* from test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
disconnect yes_privs;
connect yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
select current_user;
@@ -656,7 +656,7 @@ root@localhost
grant TRIGGER on priv_db.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
GRANT TRIGGER ON `priv_db`.* TO 'test_yesprivs'@'localhost'
trigger privilege on db level for create:
@@ -929,7 +929,7 @@ grant TRIGGER on priv1_db.t1 to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
GRANT USAGE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT ON `priv1_db`.* TO 'test_yesprivs'@'localhost'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, DELETE VERSIONING ROWS ON `priv1_db`.* TO 'test_yesprivs'@'localhost'
GRANT SELECT, UPDATE ON `priv2_db`.* TO 'test_yesprivs'@'localhost'
GRANT TRIGGER ON `priv1_db`.`t1` TO 'test_yesprivs'@'localhost'
diff --git a/mysql-test/suite/funcs_1/r/innodb_views.result b/mysql-test/suite/funcs_1/r/innodb_views.result
index 3b08f5496ac..b00d1a56c90 100644
--- a/mysql-test/suite/funcs_1/r/innodb_views.result
+++ b/mysql-test/suite/funcs_1/r/innodb_views.result
@@ -3551,11 +3551,11 @@ CREATE VIEW v1 or REPLACE AS Select * from tb2 my_table;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'or REPLACE AS Select * from tb2 my_table' at line 1
CREATE VIEW v1 WITH CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CASCADED CHECK OPTION AS Select *
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
CREATE VIEW v1 WITH LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LOCAL CHECK OPTION AS Select *
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
SELECT * FROM tb2 my_table CREATE VIEW As v1;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CREATE VIEW As v1' at line 1
@@ -3585,7 +3585,7 @@ FROM test.tb2 my_table CHECK OPTION WITH CASCADED;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CHECK OPTION WITH CASCADED' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CASCADED CHECK OPTION
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH CASCADED CHECK OPTION;
@@ -3614,7 +3614,7 @@ FROM test.tb2 my_table CHECK OPTION WITH LOCAL;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CHECK OPTION WITH LOCAL' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CASCADED CHECK OPTION
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH LOCAL CHECK OPTION;
diff --git a/mysql-test/suite/funcs_1/r/is_basics_mixed.result b/mysql-test/suite/funcs_1/r/is_basics_mixed.result
index 2d14ada4f89..f9468648c61 100644
--- a/mysql-test/suite/funcs_1/r/is_basics_mixed.result
+++ b/mysql-test/suite/funcs_1/r/is_basics_mixed.result
@@ -341,12 +341,14 @@ CREATE VIEW db_datadict.v2 AS
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
FROM information_schema.tables WHERE table_schema = 'db_datadict';
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
-FROM db_datadict.v2;
+FROM db_datadict.v2
+ORDER BY TABLE_NAME;
TABLE_SCHEMA TABLE_NAME TABLE_TYPE
db_datadict t1 BASE TABLE
db_datadict v2 VIEW
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
-FROM information_schema.tables WHERE table_schema = 'db_datadict';
+FROM information_schema.tables WHERE table_schema = 'db_datadict'
+ORDER BY TABLE_NAME;
TABLE_SCHEMA TABLE_NAME TABLE_TYPE
db_datadict t1 BASE TABLE
db_datadict v2 VIEW
diff --git a/mysql-test/suite/funcs_1/r/is_column_privileges.result b/mysql-test/suite/funcs_1/r/is_column_privileges.result
index a56ef002935..033fb64f689 100644
--- a/mysql-test/suite/funcs_1/r/is_column_privileges.result
+++ b/mysql-test/suite/funcs_1/r/is_column_privileges.result
@@ -140,6 +140,7 @@ GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
'testuser3'@'localhost' def db_datadict CREATE TEMPORARY TABLES NO
'testuser3'@'localhost' def db_datadict CREATE VIEW NO
'testuser3'@'localhost' def db_datadict DELETE NO
+'testuser3'@'localhost' def db_datadict DELETE VERSIONING ROWS NO
'testuser3'@'localhost' def db_datadict DROP NO
'testuser3'@'localhost' def db_datadict EVENT NO
'testuser3'@'localhost' def db_datadict EXECUTE NO
diff --git a/mysql-test/suite/funcs_1/r/is_columns.result b/mysql-test/suite/funcs_1/r/is_columns.result
index 982f4de5116..f1c784e2839 100644
--- a/mysql-test/suite/funcs_1/r/is_columns.result
+++ b/mysql-test/suite/funcs_1/r/is_columns.result
@@ -106,6 +106,7 @@ table_catalog table_schema table_name column_name
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
###############################################################################
# Testcase 3.2.6.2 + 3.2.6.3: INFORMATION_SCHEMA.COLUMNS accessible information
###############################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql.result b/mysql-test/suite/funcs_1/r/is_columns_mysql.result
index 21ffae902a4..74dff5a46ad 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_mysql.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_mysql.result
@@ -27,6 +27,7 @@ def mysql db Create_routine_priv 18 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_gen
def mysql db Create_tmp_table_priv 14 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql db Create_view_priv 16 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql db Db 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references NEVER NULL
+def mysql db Delete_history_priv 23 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql db Delete_priv 7 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql db Drop_priv 9 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql db Event_priv 21 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
@@ -60,7 +61,7 @@ def mysql event modified 9 '0000-00-00 00:00:00' NO timestamp NULL NULL NULL NUL
def mysql event name 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references NEVER NULL
def mysql event on_completion 14 'DROP' NO enum 8 24 NULL NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE') select,insert,update,references NEVER NULL
def mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned select,insert,update,references NEVER NULL
-def mysql event sql_mode 15 '' NO set 515 1545 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') select,insert,update,references NEVER NULL
+def mysql event sql_mode 15 '' NO set 539 1617 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') select,insert,update,references NEVER NULL
def mysql event starts 11 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select,insert,update,references NEVER NULL
def mysql event status 13 'ENABLED' NO enum 18 54 NULL NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') select,insert,update,references NEVER NULL
def mysql event time_zone 18 'SYSTEM' NO char 64 64 NULL NULL NULL latin1 latin1_swedish_ci char(64) select,insert,update,references NEVER NULL
@@ -133,6 +134,7 @@ def mysql innodb_table_stats sum_of_other_index_sizes 6 NULL NO bigint NULL NULL
def mysql innodb_table_stats table_name 2 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI select,insert,update,references NEVER NULL
def mysql plugin dl 2 '' NO varchar 128 384 NULL NULL NULL utf8 utf8_general_ci varchar(128) select,insert,update,references NEVER NULL
def mysql plugin name 1 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) PRI select,insert,update,references NEVER NULL
+def mysql proc aggregate 21 'NONE' NO enum 5 15 NULL NULL NULL utf8 utf8_general_ci enum('NONE','GROUP') select,insert,update,references NEVER NULL
def mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob select,insert,update,references NEVER NULL
def mysql proc body_utf8 20 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob select,insert,update,references NEVER NULL
def mysql proc character_set_client 17 NULL YES char 32 96 NULL NULL NULL utf8 utf8_bin char(32) select,insert,update,references NEVER NULL
@@ -151,7 +153,7 @@ def mysql proc returns 10 NULL NO longblob 4294967295 4294967295 NULL NULL NULL
def mysql proc security_type 8 'DEFINER' NO enum 7 21 NULL NULL NULL utf8 utf8_general_ci enum('INVOKER','DEFINER') select,insert,update,references NEVER NULL
def mysql proc specific_name 4 '' NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references NEVER NULL
def mysql proc sql_data_access 6 'CONTAINS_SQL' NO enum 17 51 NULL NULL NULL utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') select,insert,update,references NEVER NULL
-def mysql proc sql_mode 15 '' NO set 515 1545 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') select,insert,update,references NEVER NULL
+def mysql proc sql_mode 15 '' NO set 539 1617 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') select,insert,update,references NEVER NULL
def mysql proc type 3 NULL NO enum 9 27 NULL NULL NULL utf8 utf8_general_ci enum('FUNCTION','PROCEDURE') PRI select,insert,update,references NEVER NULL
def mysql procs_priv Db 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references NEVER NULL
def mysql procs_priv Grantor 6 '' NO char 141 423 NULL NULL NULL utf8 utf8_bin char(141) MUL select,insert,update,references NEVER NULL
@@ -199,7 +201,7 @@ def mysql tables_priv Db 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_bin char(6
def mysql tables_priv Grantor 5 '' NO char 141 423 NULL NULL NULL utf8 utf8_bin char(141) MUL select,insert,update,references NEVER NULL
def mysql tables_priv Host 1 '' NO char 60 180 NULL NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references NEVER NULL
def mysql tables_priv Table_name 4 '' NO char 64 192 NULL NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references NEVER NULL
-def mysql tables_priv Table_priv 7 '' NO set 98 294 NULL NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') select,insert,update,references NEVER NULL
+def mysql tables_priv Table_priv 7 '' NO set 121 363 NULL NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger','Delete versioning rows') select,insert,update,references NEVER NULL
def mysql tables_priv Timestamp 6 current_timestamp() NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update current_timestamp() select,insert,update,references NEVER NULL
def mysql tables_priv User 3 '' NO char 80 240 NULL NULL NULL utf8 utf8_bin char(80) PRI select,insert,update,references NEVER NULL
def mysql table_stats cardinality 3 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select,insert,update,references NEVER NULL
@@ -219,16 +221,22 @@ def mysql time_zone_transition_type Is_DST 4 0 NO tinyint NULL NULL 3 0 NULL NUL
def mysql time_zone_transition_type Offset 3 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references NEVER NULL
def mysql time_zone_transition_type Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned PRI select,insert,update,references NEVER NULL
def mysql time_zone_transition_type Transition_type_id 2 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned PRI select,insert,update,references NEVER NULL
+def mysql transaction_registry begin_timestamp 3 '0000-00-00 00:00:00.000000' NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) MUL select,insert,update,references NEVER NULL
+def mysql transaction_registry commit_id 2 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned UNI select,insert,update,references NEVER NULL
+def mysql transaction_registry commit_timestamp 4 '0000-00-00 00:00:00.000000' NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) MUL select,insert,update,references NEVER NULL
+def mysql transaction_registry isolation_level 5 NULL NO enum 16 48 NULL NULL NULL utf8 utf8_bin enum('READ-UNCOMMITTED','READ-COMMITTED','REPEATABLE-READ','SERIALIZABLE') select,insert,update,references NEVER NULL
+def mysql transaction_registry transaction_id 1 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned PRI select,insert,update,references NEVER NULL
def mysql user Alter_priv 17 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Alter_routine_priv 28 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
-def mysql user authentication_string 42 NULL NO text 65535 65535 NULL NULL NULL utf8 utf8_bin text select,insert,update,references NEVER NULL
+def mysql user authentication_string 43 NULL NO text 65535 65535 NULL NULL NULL utf8 utf8_bin text select,insert,update,references NEVER NULL
def mysql user Create_priv 8 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Create_routine_priv 27 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Create_tablespace_priv 32 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Create_tmp_table_priv 20 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Create_user_priv 29 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Create_view_priv 25 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
-def mysql user default_role 45 '' NO char 80 240 NULL NULL NULL utf8 utf8_bin char(80) select,insert,update,references NEVER NULL
+def mysql user default_role 46 '' NO char 80 240 NULL NULL NULL utf8 utf8_bin char(80) select,insert,update,references NEVER NULL
+def mysql user Delete_history_priv 33 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Delete_priv 7 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Drop_priv 9 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Event_priv 30 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
@@ -238,16 +246,16 @@ def mysql user Grant_priv 14 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci
def mysql user Host 1 '' NO char 60 180 NULL NULL NULL utf8 utf8_bin char(60) PRI select,insert,update,references NEVER NULL
def mysql user Index_priv 16 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Insert_priv 5 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
-def mysql user is_role 44 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
+def mysql user is_role 45 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Lock_tables_priv 21 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
-def mysql user max_connections 39 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned select,insert,update,references NEVER NULL
-def mysql user max_questions 37 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned select,insert,update,references NEVER NULL
-def mysql user max_statement_time 46 0.000000 NO decimal NULL NULL 12 6 NULL NULL NULL decimal(12,6) select,insert,update,references NEVER NULL
-def mysql user max_updates 38 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned select,insert,update,references NEVER NULL
-def mysql user max_user_connections 40 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references NEVER NULL
+def mysql user max_connections 40 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned select,insert,update,references NEVER NULL
+def mysql user max_questions 38 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned select,insert,update,references NEVER NULL
+def mysql user max_statement_time 47 0.000000 NO decimal NULL NULL 12 6 NULL NULL NULL decimal(12,6) select,insert,update,references NEVER NULL
+def mysql user max_updates 39 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned select,insert,update,references NEVER NULL
+def mysql user max_user_connections 41 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references NEVER NULL
def mysql user Password 3 '' NO char 41 41 NULL NULL NULL latin1 latin1_bin char(41) select,insert,update,references NEVER NULL
-def mysql user password_expired 43 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
-def mysql user plugin 41 '' NO char 64 64 NULL NULL NULL latin1 latin1_swedish_ci char(64) select,insert,update,references NEVER NULL
+def mysql user password_expired 44 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
+def mysql user plugin 42 '' NO char 64 64 NULL NULL NULL latin1 latin1_swedish_ci char(64) select,insert,update,references NEVER NULL
def mysql user Process_priv 12 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user References_priv 15 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Reload_priv 10 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
@@ -257,14 +265,14 @@ def mysql user Select_priv 4 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci
def mysql user Show_db_priv 18 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Show_view_priv 26 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Shutdown_priv 11 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
-def mysql user ssl_cipher 34 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob select,insert,update,references NEVER NULL
-def mysql user ssl_type 33 '' NO enum 9 27 NULL NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED') select,insert,update,references NEVER NULL
+def mysql user ssl_cipher 35 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob select,insert,update,references NEVER NULL
+def mysql user ssl_type 34 '' NO enum 9 27 NULL NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED') select,insert,update,references NEVER NULL
def mysql user Super_priv 19 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Trigger_priv 31 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user Update_priv 6 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NEVER NULL
def mysql user User 2 '' NO char 80 240 NULL NULL NULL utf8 utf8_bin char(80) PRI select,insert,update,references NEVER NULL
-def mysql user x509_issuer 35 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob select,insert,update,references NEVER NULL
-def mysql user x509_subject 36 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob select,insert,update,references NEVER NULL
+def mysql user x509_issuer 36 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob select,insert,update,references NEVER NULL
+def mysql user x509_subject 37 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob select,insert,update,references NEVER NULL
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
@@ -377,6 +385,7 @@ NULL mysql column_stats hist_size tinyint NULL NULL NULL NULL tinyint(3) unsigne
3.0000 mysql db Execute_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql db Event_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql db Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Delete_history_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql event db char 64 192 utf8 utf8_bin char(64)
3.0000 mysql event name char 64 192 utf8 utf8_general_ci char(64)
1.0000 mysql event body longblob 4294967295 4294967295 NULL NULL longblob
@@ -391,7 +400,7 @@ NULL mysql event starts datetime NULL NULL NULL NULL datetime
NULL mysql event ends datetime NULL NULL NULL NULL datetime
3.0000 mysql event status enum 18 54 utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED')
3.0000 mysql event on_completion enum 8 24 utf8 utf8_general_ci enum('DROP','PRESERVE')
-3.0000 mysql event sql_mode set 515 1545 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL')
+3.0000 mysql event sql_mode set 539 1617 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT')
3.0000 mysql event comment char 64 192 utf8 utf8_bin char(64)
NULL mysql event originator int NULL NULL NULL NULL int(10) unsigned
1.0000 mysql event time_zone char 64 64 latin1 latin1_swedish_ci char(64)
@@ -482,12 +491,13 @@ NULL mysql innodb_table_stats sum_of_other_index_sizes bigint NULL NULL NULL NUL
3.0000 mysql proc definer char 141 423 utf8 utf8_bin char(141)
NULL mysql proc created timestamp NULL NULL NULL NULL timestamp
NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp
-3.0000 mysql proc sql_mode set 515 1545 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL')
+3.0000 mysql proc sql_mode set 539 1617 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT')
1.0000 mysql proc comment text 65535 65535 utf8 utf8_bin text
3.0000 mysql proc character_set_client char 32 96 utf8 utf8_bin char(32)
3.0000 mysql proc collation_connection char 32 96 utf8 utf8_bin char(32)
3.0000 mysql proc db_collation char 32 96 utf8 utf8_bin char(32)
1.0000 mysql proc body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
+3.0000 mysql proc aggregate enum 5 15 utf8 utf8_general_ci enum('NONE','GROUP')
3.0000 mysql procs_priv Host char 60 180 utf8 utf8_bin char(60)
3.0000 mysql procs_priv Db char 64 192 utf8 utf8_bin char(64)
3.0000 mysql procs_priv User char 80 240 utf8 utf8_bin char(80)
@@ -535,7 +545,7 @@ NULL mysql slow_log rows_affected int NULL NULL NULL NULL int(11)
3.0000 mysql tables_priv Table_name char 64 192 utf8 utf8_bin char(64)
3.0000 mysql tables_priv Grantor char 141 423 utf8 utf8_bin char(141)
NULL mysql tables_priv Timestamp timestamp NULL NULL NULL NULL timestamp
-3.0000 mysql tables_priv Table_priv set 98 294 utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger')
+3.0000 mysql tables_priv Table_priv set 121 363 utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger','Delete versioning rows')
3.0000 mysql tables_priv Column_priv set 31 93 utf8 utf8_general_ci set('Select','Insert','Update','References')
3.0000 mysql table_stats db_name varchar 64 192 utf8 utf8_bin varchar(64)
3.0000 mysql table_stats table_name varchar 64 192 utf8 utf8_bin varchar(64)
@@ -554,6 +564,11 @@ NULL mysql time_zone_transition_type Transition_type_id int NULL NULL NULL NULL
NULL mysql time_zone_transition_type Offset int NULL NULL NULL NULL int(11)
NULL mysql time_zone_transition_type Is_DST tinyint NULL NULL NULL NULL tinyint(3) unsigned
3.0000 mysql time_zone_transition_type Abbreviation char 8 24 utf8 utf8_general_ci char(8)
+NULL mysql transaction_registry transaction_id bigint NULL NULL NULL NULL bigint(20) unsigned
+NULL mysql transaction_registry commit_id bigint NULL NULL NULL NULL bigint(20) unsigned
+NULL mysql transaction_registry begin_timestamp timestamp NULL NULL NULL NULL timestamp(6)
+NULL mysql transaction_registry commit_timestamp timestamp NULL NULL NULL NULL timestamp(6)
+3.0000 mysql transaction_registry isolation_level enum 16 48 utf8 utf8_bin enum('READ-UNCOMMITTED','READ-COMMITTED','REPEATABLE-READ','SERIALIZABLE')
3.0000 mysql user Host char 60 180 utf8 utf8_bin char(60)
3.0000 mysql user User char 80 240 utf8 utf8_bin char(80)
1.0000 mysql user Password char 41 41 latin1 latin1_bin char(41)
@@ -586,6 +601,7 @@ NULL mysql time_zone_transition_type Is_DST tinyint NULL NULL NULL NULL tinyint(
3.0000 mysql user Event_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user Create_tablespace_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Delete_history_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user ssl_type enum 9 27 utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED')
1.0000 mysql user ssl_cipher blob 65535 65535 NULL NULL blob
1.0000 mysql user x509_issuer blob 65535 65535 NULL NULL blob
diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
index c7d10790325..435a28728fe 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
@@ -27,6 +27,7 @@ def mysql db Create_routine_priv 18 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_gen
def mysql db Create_tmp_table_priv 14 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql db Create_view_priv 16 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql db Db 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_bin char(64) PRI NEVER NULL
+def mysql db Delete_history_priv 23 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql db Delete_priv 7 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql db Drop_priv 9 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql db Event_priv 21 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
@@ -60,7 +61,7 @@ def mysql event modified 9 '0000-00-00 00:00:00' NO timestamp NULL NULL NULL NUL
def mysql event name 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) PRI NEVER NULL
def mysql event on_completion 14 'DROP' NO enum 8 24 NULL NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE') NEVER NULL
def mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned NEVER NULL
-def mysql event sql_mode 15 '' NO set 515 1545 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NEVER NULL
+def mysql event sql_mode 15 '' NO set 539 1617 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') NEVER NULL
def mysql event starts 11 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL
def mysql event status 13 'ENABLED' NO enum 18 54 NULL NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NEVER NULL
def mysql event time_zone 18 'SYSTEM' NO char 64 64 NULL NULL NULL latin1 latin1_swedish_ci char(64) NEVER NULL
@@ -119,6 +120,7 @@ def mysql index_stats prefix_arity 4 NULL NO int NULL NULL 10 0 NULL NULL NULL i
def mysql index_stats table_name 2 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI NEVER NULL
def mysql plugin dl 2 '' NO varchar 128 384 NULL NULL NULL utf8 utf8_general_ci varchar(128) NEVER NULL
def mysql plugin name 1 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) PRI NEVER NULL
+def mysql proc aggregate 21 'NONE' NO enum 5 15 NULL NULL NULL utf8 utf8_general_ci enum('NONE','GROUP') NEVER NULL
def mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob NEVER NULL
def mysql proc body_utf8 20 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob NEVER NULL
def mysql proc character_set_client 17 NULL YES char 32 96 NULL NULL NULL utf8 utf8_bin char(32) NEVER NULL
@@ -137,7 +139,7 @@ def mysql proc returns 10 NULL NO longblob 4294967295 4294967295 NULL NULL NULL
def mysql proc security_type 8 'DEFINER' NO enum 7 21 NULL NULL NULL utf8 utf8_general_ci enum('INVOKER','DEFINER') NEVER NULL
def mysql proc specific_name 4 '' NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) NEVER NULL
def mysql proc sql_data_access 6 'CONTAINS_SQL' NO enum 17 51 NULL NULL NULL utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') NEVER NULL
-def mysql proc sql_mode 15 '' NO set 515 1545 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NEVER NULL
+def mysql proc sql_mode 15 '' NO set 539 1617 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT') NEVER NULL
def mysql proc type 3 NULL NO enum 9 27 NULL NULL NULL utf8 utf8_general_ci enum('FUNCTION','PROCEDURE') PRI NEVER NULL
def mysql procs_priv Db 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_bin char(64) PRI NEVER NULL
def mysql procs_priv Grantor 6 '' NO char 141 423 NULL NULL NULL utf8 utf8_bin char(141) MUL NEVER NULL
@@ -185,7 +187,7 @@ def mysql tables_priv Db 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_bin char(6
def mysql tables_priv Grantor 5 '' NO char 141 423 NULL NULL NULL utf8 utf8_bin char(141) MUL NEVER NULL
def mysql tables_priv Host 1 '' NO char 60 180 NULL NULL NULL utf8 utf8_bin char(60) PRI NEVER NULL
def mysql tables_priv Table_name 4 '' NO char 64 192 NULL NULL NULL utf8 utf8_bin char(64) PRI NEVER NULL
-def mysql tables_priv Table_priv 7 '' NO set 98 294 NULL NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') NEVER NULL
+def mysql tables_priv Table_priv 7 '' NO set 121 363 NULL NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger','Delete versioning rows') NEVER NULL
def mysql tables_priv Timestamp 6 current_timestamp() NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update current_timestamp() NEVER NULL
def mysql tables_priv User 3 '' NO char 80 240 NULL NULL NULL utf8 utf8_bin char(80) PRI NEVER NULL
def mysql table_stats cardinality 3 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL
@@ -207,14 +209,15 @@ def mysql time_zone_transition_type Time_zone_id 1 NULL NO int NULL NULL 10 0 NU
def mysql time_zone_transition_type Transition_type_id 2 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned PRI NEVER NULL
def mysql user Alter_priv 17 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Alter_routine_priv 28 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
-def mysql user authentication_string 42 NULL NO text 65535 65535 NULL NULL NULL utf8 utf8_bin text NEVER NULL
+def mysql user authentication_string 43 NULL NO text 65535 65535 NULL NULL NULL utf8 utf8_bin text NEVER NULL
def mysql user Create_priv 8 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Create_routine_priv 27 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Create_tablespace_priv 32 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Create_tmp_table_priv 20 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Create_user_priv 29 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Create_view_priv 25 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
-def mysql user default_role 45 '' NO char 80 240 NULL NULL NULL utf8 utf8_bin char(80) NEVER NULL
+def mysql user default_role 46 '' NO char 80 240 NULL NULL NULL utf8 utf8_bin char(80) NEVER NULL
+def mysql user Delete_history_priv 33 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Delete_priv 7 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Drop_priv 9 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Event_priv 30 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
@@ -224,16 +227,16 @@ def mysql user Grant_priv 14 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci
def mysql user Host 1 '' NO char 60 180 NULL NULL NULL utf8 utf8_bin char(60) PRI NEVER NULL
def mysql user Index_priv 16 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Insert_priv 5 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
-def mysql user is_role 44 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
+def mysql user is_role 45 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Lock_tables_priv 21 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
-def mysql user max_connections 39 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned NEVER NULL
-def mysql user max_questions 37 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned NEVER NULL
-def mysql user max_statement_time 46 0.000000 NO decimal NULL NULL 12 6 NULL NULL NULL decimal(12,6) NEVER NULL
-def mysql user max_updates 38 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned NEVER NULL
-def mysql user max_user_connections 40 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) NEVER NULL
+def mysql user max_connections 40 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned NEVER NULL
+def mysql user max_questions 38 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned NEVER NULL
+def mysql user max_statement_time 47 0.000000 NO decimal NULL NULL 12 6 NULL NULL NULL decimal(12,6) NEVER NULL
+def mysql user max_updates 39 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned NEVER NULL
+def mysql user max_user_connections 41 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) NEVER NULL
def mysql user Password 3 '' NO char 41 41 NULL NULL NULL latin1 latin1_bin char(41) NEVER NULL
-def mysql user password_expired 43 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
-def mysql user plugin 41 '' NO char 64 64 NULL NULL NULL latin1 latin1_swedish_ci char(64) NEVER NULL
+def mysql user password_expired 44 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
+def mysql user plugin 42 '' NO char 64 64 NULL NULL NULL latin1 latin1_swedish_ci char(64) NEVER NULL
def mysql user Process_priv 12 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user References_priv 15 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Reload_priv 10 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
@@ -243,17 +246,18 @@ def mysql user Select_priv 4 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci
def mysql user Show_db_priv 18 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Show_view_priv 26 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Shutdown_priv 11 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
-def mysql user ssl_cipher 34 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob NEVER NULL
-def mysql user ssl_type 33 '' NO enum 9 27 NULL NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED') NEVER NULL
+def mysql user ssl_cipher 35 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob NEVER NULL
+def mysql user ssl_type 34 '' NO enum 9 27 NULL NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED') NEVER NULL
def mysql user Super_priv 19 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Trigger_priv 31 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user Update_priv 6 'N' NO enum 1 3 NULL NULL NULL utf8 utf8_general_ci enum('N','Y') NEVER NULL
def mysql user User 2 '' NO char 80 240 NULL NULL NULL utf8 utf8_bin char(80) PRI NEVER NULL
-def mysql user x509_issuer 35 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob NEVER NULL
-def mysql user x509_subject 36 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob NEVER NULL
+def mysql user x509_issuer 36 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob NEVER NULL
+def mysql user x509_subject 37 NULL NO blob 65535 65535 NULL NULL NULL NULL NULL blob NEVER NULL
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
@@ -278,6 +282,7 @@ COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
SELECT DISTINCT
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
DATA_TYPE,
@@ -298,6 +303,7 @@ COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
SELECT DISTINCT
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
DATA_TYPE,
@@ -319,6 +325,7 @@ NULL tinyint NULL NULL
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
@@ -375,6 +382,7 @@ NULL mysql column_stats hist_size tinyint NULL NULL NULL NULL tinyint(3) unsigne
3.0000 mysql db Execute_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql db Event_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql db Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Delete_history_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql event db char 64 192 utf8 utf8_bin char(64)
3.0000 mysql event name char 64 192 utf8 utf8_general_ci char(64)
1.0000 mysql event body longblob 4294967295 4294967295 NULL NULL longblob
@@ -389,7 +397,7 @@ NULL mysql event starts datetime NULL NULL NULL NULL datetime
NULL mysql event ends datetime NULL NULL NULL NULL datetime
3.0000 mysql event status enum 18 54 utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED')
3.0000 mysql event on_completion enum 8 24 utf8 utf8_general_ci enum('DROP','PRESERVE')
-3.0000 mysql event sql_mode set 515 1545 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL')
+3.0000 mysql event sql_mode set 539 1617 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT')
3.0000 mysql event comment char 64 192 utf8 utf8_bin char(64)
NULL mysql event originator int NULL NULL NULL NULL int(10) unsigned
1.0000 mysql event time_zone char 64 64 latin1 latin1_swedish_ci char(64)
@@ -466,12 +474,13 @@ NULL mysql index_stats avg_frequency decimal NULL NULL NULL NULL decimal(12,4)
3.0000 mysql proc definer char 141 423 utf8 utf8_bin char(141)
NULL mysql proc created timestamp NULL NULL NULL NULL timestamp
NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp
-3.0000 mysql proc sql_mode set 515 1545 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL')
+3.0000 mysql proc sql_mode set 539 1617 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT')
1.0000 mysql proc comment text 65535 65535 utf8 utf8_bin text
3.0000 mysql proc character_set_client char 32 96 utf8 utf8_bin char(32)
3.0000 mysql proc collation_connection char 32 96 utf8 utf8_bin char(32)
3.0000 mysql proc db_collation char 32 96 utf8 utf8_bin char(32)
1.0000 mysql proc body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
+3.0000 mysql proc aggregate enum 5 15 utf8 utf8_general_ci enum('NONE','GROUP')
3.0000 mysql procs_priv Host char 60 180 utf8 utf8_bin char(60)
3.0000 mysql procs_priv Db char 64 192 utf8 utf8_bin char(64)
3.0000 mysql procs_priv User char 80 240 utf8 utf8_bin char(80)
@@ -519,7 +528,7 @@ NULL mysql slow_log rows_affected int NULL NULL NULL NULL int(11)
3.0000 mysql tables_priv Table_name char 64 192 utf8 utf8_bin char(64)
3.0000 mysql tables_priv Grantor char 141 423 utf8 utf8_bin char(141)
NULL mysql tables_priv Timestamp timestamp NULL NULL NULL NULL timestamp
-3.0000 mysql tables_priv Table_priv set 98 294 utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger')
+3.0000 mysql tables_priv Table_priv set 121 363 utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger','Delete versioning rows')
3.0000 mysql tables_priv Column_priv set 31 93 utf8 utf8_general_ci set('Select','Insert','Update','References')
3.0000 mysql table_stats db_name varchar 64 192 utf8 utf8_bin varchar(64)
3.0000 mysql table_stats table_name varchar 64 192 utf8 utf8_bin varchar(64)
@@ -570,6 +579,7 @@ NULL mysql time_zone_transition_type Is_DST tinyint NULL NULL NULL NULL tinyint(
3.0000 mysql user Event_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user Trigger_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user Create_tablespace_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Delete_history_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
3.0000 mysql user ssl_type enum 9 27 utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED')
1.0000 mysql user ssl_cipher blob 65535 65535 NULL NULL blob
1.0000 mysql user x509_issuer blob 65535 65535 NULL NULL blob
@@ -587,3 +597,4 @@ NULL mysql user max_statement_time decimal NULL NULL NULL NULL decimal(12,6)
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
diff --git a/mysql-test/suite/funcs_1/r/is_key_column_usage.result b/mysql-test/suite/funcs_1/r/is_key_column_usage.result
index fa2a738788e..5c126a48419 100644
--- a/mysql-test/suite/funcs_1/r/is_key_column_usage.result
+++ b/mysql-test/suite/funcs_1/r/is_key_column_usage.result
@@ -73,18 +73,19 @@ REFERENCED_COLUMN_NAME varchar(64) YES NULL
SELECT constraint_catalog, constraint_schema, constraint_name, table_catalog,
table_schema, table_name, column_name
FROM information_schema.key_column_usage
-WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL;
+WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL
+ORDER BY BINARY table_schema, BINARY table_name, BINARY column_name, BINARY constraint_name;
constraint_catalog constraint_schema constraint_name table_catalog table_schema table_name column_name
+def mysql PRIMARY def mysql column_stats column_name
def mysql PRIMARY def mysql column_stats db_name
def mysql PRIMARY def mysql column_stats table_name
-def mysql PRIMARY def mysql column_stats column_name
-def mysql PRIMARY def mysql columns_priv Host
+def mysql PRIMARY def mysql columns_priv Column_name
def mysql PRIMARY def mysql columns_priv Db
-def mysql PRIMARY def mysql columns_priv User
+def mysql PRIMARY def mysql columns_priv Host
def mysql PRIMARY def mysql columns_priv Table_name
-def mysql PRIMARY def mysql columns_priv Column_name
-def mysql PRIMARY def mysql db Host
+def mysql PRIMARY def mysql columns_priv User
def mysql PRIMARY def mysql db Db
+def mysql PRIMARY def mysql db Host
def mysql PRIMARY def mysql db User
def mysql PRIMARY def mysql event db
def mysql PRIMARY def mysql event name
@@ -99,41 +100,41 @@ def mysql PRIMARY def mysql help_relation help_keyword_id
def mysql PRIMARY def mysql help_relation help_topic_id
def mysql PRIMARY def mysql help_topic help_topic_id
def mysql name def mysql help_topic name
-def mysql PRIMARY def mysql host Host
def mysql PRIMARY def mysql host Db
+def mysql PRIMARY def mysql host Host
def mysql PRIMARY def mysql index_stats db_name
-def mysql PRIMARY def mysql index_stats table_name
def mysql PRIMARY def mysql index_stats index_name
def mysql PRIMARY def mysql index_stats prefix_arity
+def mysql PRIMARY def mysql index_stats table_name
def mysql PRIMARY def mysql innodb_index_stats database_name
-def mysql PRIMARY def mysql innodb_index_stats table_name
def mysql PRIMARY def mysql innodb_index_stats index_name
def mysql PRIMARY def mysql innodb_index_stats stat_name
+def mysql PRIMARY def mysql innodb_index_stats table_name
def mysql PRIMARY def mysql innodb_table_stats database_name
def mysql PRIMARY def mysql innodb_table_stats table_name
def mysql PRIMARY def mysql plugin name
def mysql PRIMARY def mysql proc db
def mysql PRIMARY def mysql proc name
def mysql PRIMARY def mysql proc type
-def mysql PRIMARY def mysql procs_priv Host
def mysql PRIMARY def mysql procs_priv Db
-def mysql PRIMARY def mysql procs_priv User
+def mysql PRIMARY def mysql procs_priv Host
def mysql PRIMARY def mysql procs_priv Routine_name
def mysql PRIMARY def mysql procs_priv Routine_type
+def mysql PRIMARY def mysql procs_priv User
def mysql PRIMARY def mysql proxies_priv Host
-def mysql PRIMARY def mysql proxies_priv User
def mysql PRIMARY def mysql proxies_priv Proxied_host
def mysql PRIMARY def mysql proxies_priv Proxied_user
+def mysql PRIMARY def mysql proxies_priv User
def mysql Host def mysql roles_mapping Host
-def mysql Host def mysql roles_mapping User
def mysql Host def mysql roles_mapping Role
+def mysql Host def mysql roles_mapping User
def mysql PRIMARY def mysql servers Server_name
def mysql PRIMARY def mysql table_stats db_name
def mysql PRIMARY def mysql table_stats table_name
-def mysql PRIMARY def mysql tables_priv Host
def mysql PRIMARY def mysql tables_priv Db
-def mysql PRIMARY def mysql tables_priv User
+def mysql PRIMARY def mysql tables_priv Host
def mysql PRIMARY def mysql tables_priv Table_name
+def mysql PRIMARY def mysql tables_priv User
def mysql PRIMARY def mysql time_zone Time_zone_id
def mysql PRIMARY def mysql time_zone_leap_second Transition_time
def mysql PRIMARY def mysql time_zone_name Name
@@ -141,6 +142,8 @@ def mysql PRIMARY def mysql time_zone_transition Time_zone_id
def mysql PRIMARY def mysql time_zone_transition Transition_time
def mysql PRIMARY def mysql time_zone_transition_type Time_zone_id
def mysql PRIMARY def mysql time_zone_transition_type Transition_type_id
+def mysql commit_id def mysql transaction_registry commit_id
+def mysql PRIMARY def mysql transaction_registry transaction_id
def mysql PRIMARY def mysql user Host
def mysql PRIMARY def mysql user User
########################################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result b/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result
index 4a6114f3da3..d41f7395483 100644
--- a/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result
@@ -73,18 +73,19 @@ REFERENCED_COLUMN_NAME varchar(64) YES NULL
SELECT constraint_catalog, constraint_schema, constraint_name, table_catalog,
table_schema, table_name, column_name
FROM information_schema.key_column_usage
-WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL;
+WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL
+ORDER BY BINARY table_schema, BINARY table_name, BINARY column_name, BINARY constraint_name;
constraint_catalog constraint_schema constraint_name table_catalog table_schema table_name column_name
+def mysql PRIMARY def mysql column_stats column_name
def mysql PRIMARY def mysql column_stats db_name
def mysql PRIMARY def mysql column_stats table_name
-def mysql PRIMARY def mysql column_stats column_name
-def mysql PRIMARY def mysql columns_priv Host
+def mysql PRIMARY def mysql columns_priv Column_name
def mysql PRIMARY def mysql columns_priv Db
-def mysql PRIMARY def mysql columns_priv User
+def mysql PRIMARY def mysql columns_priv Host
def mysql PRIMARY def mysql columns_priv Table_name
-def mysql PRIMARY def mysql columns_priv Column_name
-def mysql PRIMARY def mysql db Host
+def mysql PRIMARY def mysql columns_priv User
def mysql PRIMARY def mysql db Db
+def mysql PRIMARY def mysql db Host
def mysql PRIMARY def mysql db User
def mysql PRIMARY def mysql event db
def mysql PRIMARY def mysql event name
@@ -99,41 +100,41 @@ def mysql PRIMARY def mysql help_relation help_keyword_id
def mysql PRIMARY def mysql help_relation help_topic_id
def mysql PRIMARY def mysql help_topic help_topic_id
def mysql name def mysql help_topic name
-def mysql PRIMARY def mysql host Host
def mysql PRIMARY def mysql host Db
+def mysql PRIMARY def mysql host Host
def mysql PRIMARY def mysql index_stats db_name
-def mysql PRIMARY def mysql index_stats table_name
def mysql PRIMARY def mysql index_stats index_name
def mysql PRIMARY def mysql index_stats prefix_arity
+def mysql PRIMARY def mysql index_stats table_name
def mysql PRIMARY def mysql innodb_index_stats database_name
-def mysql PRIMARY def mysql innodb_index_stats table_name
def mysql PRIMARY def mysql innodb_index_stats index_name
def mysql PRIMARY def mysql innodb_index_stats stat_name
+def mysql PRIMARY def mysql innodb_index_stats table_name
def mysql PRIMARY def mysql innodb_table_stats database_name
def mysql PRIMARY def mysql innodb_table_stats table_name
def mysql PRIMARY def mysql plugin name
def mysql PRIMARY def mysql proc db
def mysql PRIMARY def mysql proc name
def mysql PRIMARY def mysql proc type
-def mysql PRIMARY def mysql procs_priv Host
def mysql PRIMARY def mysql procs_priv Db
-def mysql PRIMARY def mysql procs_priv User
+def mysql PRIMARY def mysql procs_priv Host
def mysql PRIMARY def mysql procs_priv Routine_name
def mysql PRIMARY def mysql procs_priv Routine_type
+def mysql PRIMARY def mysql procs_priv User
def mysql PRIMARY def mysql proxies_priv Host
-def mysql PRIMARY def mysql proxies_priv User
def mysql PRIMARY def mysql proxies_priv Proxied_host
def mysql PRIMARY def mysql proxies_priv Proxied_user
+def mysql PRIMARY def mysql proxies_priv User
def mysql Host def mysql roles_mapping Host
-def mysql Host def mysql roles_mapping User
def mysql Host def mysql roles_mapping Role
+def mysql Host def mysql roles_mapping User
def mysql PRIMARY def mysql servers Server_name
def mysql PRIMARY def mysql table_stats db_name
def mysql PRIMARY def mysql table_stats table_name
-def mysql PRIMARY def mysql tables_priv Host
def mysql PRIMARY def mysql tables_priv Db
-def mysql PRIMARY def mysql tables_priv User
+def mysql PRIMARY def mysql tables_priv Host
def mysql PRIMARY def mysql tables_priv Table_name
+def mysql PRIMARY def mysql tables_priv User
def mysql PRIMARY def mysql time_zone Time_zone_id
def mysql PRIMARY def mysql time_zone_leap_second Transition_time
def mysql PRIMARY def mysql time_zone_name Name
@@ -141,6 +142,8 @@ def mysql PRIMARY def mysql time_zone_transition Time_zone_id
def mysql PRIMARY def mysql time_zone_transition Transition_time
def mysql PRIMARY def mysql time_zone_transition_type Time_zone_id
def mysql PRIMARY def mysql time_zone_transition_type Transition_type_id
+def mysql commit_id def mysql transaction_registry commit_id
+def mysql PRIMARY def mysql transaction_registry transaction_id
def mysql PRIMARY def mysql user Host
def mysql PRIMARY def mysql user User
########################################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_routines_embedded.result b/mysql-test/suite/funcs_1/r/is_routines_embedded.result
index 1fc9f90ae49..8879efb21a5 100644
--- a/mysql-test/suite/funcs_1/r/is_routines_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_routines_embedded.result
@@ -197,7 +197,7 @@ sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NUL
SELECT * FROM db_datadict_2.res_6_408002_2;
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
-check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp', 'innodb_file_format_max') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema'); SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.host, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.user; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
+check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.host, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.user; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
connect testuser2, localhost, testuser2, , db_datadict;
SELECT * FROM information_schema.routines;
@@ -209,7 +209,7 @@ sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NUL
SELECT * FROM db_datadict_2.res_6_408002_2;
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
-check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp', 'innodb_file_format_max') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema'); SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.host, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.user; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
+check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.host, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.user; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
connect testuser3, localhost, testuser3, , test;
SELECT * FROM information_schema.routines;
@@ -221,7 +221,7 @@ sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NUL
SELECT * FROM db_datadict_2.res_6_408002_2;
END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
-check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp', 'innodb_file_format_max') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema'); SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.host, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.user; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
+check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.host, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.user; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
connection default;
disconnect testuser1;
diff --git a/mysql-test/suite/funcs_1/r/is_schema_privileges.result b/mysql-test/suite/funcs_1/r/is_schema_privileges.result
index cf9b70308de..1339639106f 100644
--- a/mysql-test/suite/funcs_1/r/is_schema_privileges.result
+++ b/mysql-test/suite/funcs_1/r/is_schema_privileges.result
@@ -68,6 +68,7 @@ GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE
''@'%' def test CREATE ROUTINE
''@'%' def test EVENT
''@'%' def test TRIGGER
+''@'%' def test DELETE VERSIONING ROWS
''@'%' def test\_% SELECT
''@'%' def test\_% INSERT
''@'%' def test\_% UPDATE
@@ -84,6 +85,7 @@ GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE
''@'%' def test\_% CREATE ROUTINE
''@'%' def test\_% EVENT
''@'%' def test\_% TRIGGER
+''@'%' def test\_% DELETE VERSIONING ROWS
###############################################################################
# Testcase 3.2.15.2-3.2.15.4 INFORMATION_SCHEMA.SCHEMA_PRIVILEGES accessibility
###############################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_schema_privileges_is_mysql_test.result b/mysql-test/suite/funcs_1/r/is_schema_privileges_is_mysql_test.result
index 38257899a4b..528a770e0eb 100644
--- a/mysql-test/suite/funcs_1/r/is_schema_privileges_is_mysql_test.result
+++ b/mysql-test/suite/funcs_1/r/is_schema_privileges_is_mysql_test.result
@@ -16,6 +16,7 @@ GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
''@'%' def test CREATE TEMPORARY TABLES NO
''@'%' def test CREATE VIEW NO
''@'%' def test DELETE NO
+''@'%' def test DELETE VERSIONING ROWS NO
''@'%' def test DROP NO
''@'%' def test EVENT NO
''@'%' def test INDEX NO
diff --git a/mysql-test/suite/funcs_1/r/is_schemata.result b/mysql-test/suite/funcs_1/r/is_schemata.result
index d0f2b734f7e..6db6ac8f150 100644
--- a/mysql-test/suite/funcs_1/r/is_schemata.result
+++ b/mysql-test/suite/funcs_1/r/is_schemata.result
@@ -51,7 +51,8 @@ DEFAULT_COLLATION_NAME varchar(32) NO
SQL_PATH varchar(512) YES NULL
SELECT catalog_name, schema_name, sql_path
FROM information_schema.schemata
-WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL;
+WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL
+ORDER BY schema_name;
catalog_name schema_name sql_path
def information_schema NULL
def mtr NULL
diff --git a/mysql-test/suite/funcs_1/r/is_schemata_embedded.result b/mysql-test/suite/funcs_1/r/is_schemata_embedded.result
index 5f48c030c16..bc993e8dc9f 100644
--- a/mysql-test/suite/funcs_1/r/is_schemata_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_schemata_embedded.result
@@ -51,7 +51,8 @@ DEFAULT_COLLATION_NAME varchar(32) NO
SQL_PATH varchar(512) YES NULL
SELECT catalog_name, schema_name, sql_path
FROM information_schema.schemata
-WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL;
+WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL
+ORDER BY schema_name;
catalog_name schema_name sql_path
def information_schema NULL
def mtr NULL
diff --git a/mysql-test/suite/funcs_1/r/is_statistics.result b/mysql-test/suite/funcs_1/r/is_statistics.result
index 749b09fa87d..419eb0b4b4c 100644
--- a/mysql-test/suite/funcs_1/r/is_statistics.result
+++ b/mysql-test/suite/funcs_1/r/is_statistics.result
@@ -83,16 +83,17 @@ INDEX_TYPE varchar(16) NO
COMMENT varchar(16) YES NULL
INDEX_COMMENT varchar(1024) NO
SELECT table_catalog, table_schema, table_name, index_schema, index_name
-FROM information_schema.statistics WHERE table_catalog IS NOT NULL;
+FROM information_schema.statistics WHERE table_catalog IS NOT NULL
+ORDER BY table_schema, table_name, index_schema, index_name;
table_catalog table_schema table_name index_schema index_name
-def mysql column_stats mysql PRIMARY
-def mysql column_stats mysql PRIMARY
-def mysql column_stats mysql PRIMARY
def mysql columns_priv mysql PRIMARY
def mysql columns_priv mysql PRIMARY
def mysql columns_priv mysql PRIMARY
def mysql columns_priv mysql PRIMARY
def mysql columns_priv mysql PRIMARY
+def mysql column_stats mysql PRIMARY
+def mysql column_stats mysql PRIMARY
+def mysql column_stats mysql PRIMARY
def mysql db mysql PRIMARY
def mysql db mysql PRIMARY
def mysql db mysql PRIMARY
@@ -102,14 +103,14 @@ def mysql event mysql PRIMARY
def mysql func mysql PRIMARY
def mysql gtid_slave_pos mysql PRIMARY
def mysql gtid_slave_pos mysql PRIMARY
-def mysql help_category mysql PRIMARY
def mysql help_category mysql name
-def mysql help_keyword mysql PRIMARY
+def mysql help_category mysql PRIMARY
def mysql help_keyword mysql name
+def mysql help_keyword mysql PRIMARY
def mysql help_relation mysql PRIMARY
def mysql help_relation mysql PRIMARY
-def mysql help_topic mysql PRIMARY
def mysql help_topic mysql name
+def mysql help_topic mysql PRIMARY
def mysql host mysql PRIMARY
def mysql host mysql PRIMARY
def mysql index_stats mysql PRIMARY
@@ -120,28 +121,28 @@ def mysql plugin mysql PRIMARY
def mysql proc mysql PRIMARY
def mysql proc mysql PRIMARY
def mysql proc mysql PRIMARY
+def mysql procs_priv mysql Grantor
def mysql procs_priv mysql PRIMARY
def mysql procs_priv mysql PRIMARY
def mysql procs_priv mysql PRIMARY
def mysql procs_priv mysql PRIMARY
def mysql procs_priv mysql PRIMARY
-def mysql procs_priv mysql Grantor
+def mysql proxies_priv mysql Grantor
def mysql proxies_priv mysql PRIMARY
def mysql proxies_priv mysql PRIMARY
def mysql proxies_priv mysql PRIMARY
def mysql proxies_priv mysql PRIMARY
-def mysql proxies_priv mysql Grantor
def mysql roles_mapping mysql Host
def mysql roles_mapping mysql Host
def mysql roles_mapping mysql Host
def mysql servers mysql PRIMARY
-def mysql table_stats mysql PRIMARY
-def mysql table_stats mysql PRIMARY
+def mysql tables_priv mysql Grantor
def mysql tables_priv mysql PRIMARY
def mysql tables_priv mysql PRIMARY
def mysql tables_priv mysql PRIMARY
def mysql tables_priv mysql PRIMARY
-def mysql tables_priv mysql Grantor
+def mysql table_stats mysql PRIMARY
+def mysql table_stats mysql PRIMARY
def mysql time_zone mysql PRIMARY
def mysql time_zone_leap_second mysql PRIMARY
def mysql time_zone_name mysql PRIMARY
@@ -154,6 +155,7 @@ def mysql user mysql PRIMARY
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
####################################################################################
# Testcase 3.2.14.2 + 3.2.14.3: INFORMATION_SCHEMA.STATISTICS accessible information
####################################################################################
diff --git a/mysql-test/suite/funcs_1/r/is_statistics_mysql.result b/mysql-test/suite/funcs_1/r/is_statistics_mysql.result
index dc3ed5f9839..31fb460f9aa 100644
--- a/mysql-test/suite/funcs_1/r/is_statistics_mysql.result
+++ b/mysql-test/suite/funcs_1/r/is_statistics_mysql.result
@@ -77,6 +77,11 @@ def mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL
def mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
def mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
def mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
+def mysql transaction_registry 1 mysql begin_timestamp 1 begin_timestamp A #CARD# NULL NULL BTREE
+def mysql transaction_registry 0 mysql commit_id 1 commit_id A #CARD# NULL NULL BTREE
+def mysql transaction_registry 1 mysql commit_timestamp 1 commit_timestamp A #CARD# NULL NULL BTREE
+def mysql transaction_registry 1 mysql commit_timestamp 2 transaction_id A #CARD# NULL NULL BTREE
+def mysql transaction_registry 0 mysql PRIMARY 1 transaction_id A #CARD# NULL NULL BTREE
def mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
def mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
connect testuser1,localhost,testuser1,,db_datadict;
diff --git a/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result
index cbc9a8f17ce..c81052321f8 100644
--- a/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result
@@ -77,6 +77,11 @@ def mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL
def mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
def mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
def mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
+def mysql transaction_registry 1 mysql begin_timestamp 1 begin_timestamp A #CARD# NULL NULL BTREE
+def mysql transaction_registry 0 mysql commit_id 1 commit_id A #CARD# NULL NULL BTREE
+def mysql transaction_registry 1 mysql commit_timestamp 1 commit_timestamp A #CARD# NULL NULL BTREE
+def mysql transaction_registry 1 mysql commit_timestamp 2 transaction_id A #CARD# NULL NULL BTREE
+def mysql transaction_registry 0 mysql PRIMARY 1 transaction_id A #CARD# NULL NULL BTREE
def mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
def mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
connect testuser1,localhost,testuser1,,db_datadict;
@@ -154,6 +159,11 @@ def mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL
def mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
def mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
def mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
+def mysql transaction_registry 1 mysql begin_timestamp 1 begin_timestamp A #CARD# NULL NULL BTREE
+def mysql transaction_registry 0 mysql commit_id 1 commit_id A #CARD# NULL NULL BTREE
+def mysql transaction_registry 1 mysql commit_timestamp 1 commit_timestamp A #CARD# NULL NULL BTREE
+def mysql transaction_registry 1 mysql commit_timestamp 2 transaction_id A #CARD# NULL NULL BTREE
+def mysql transaction_registry 0 mysql PRIMARY 1 transaction_id A #CARD# NULL NULL BTREE
def mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
def mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
connection default;
diff --git a/mysql-test/suite/funcs_1/r/is_table_constraints.result b/mysql-test/suite/funcs_1/r/is_table_constraints.result
index 0553b4344c8..d968d3b65de 100644
--- a/mysql-test/suite/funcs_1/r/is_table_constraints.result
+++ b/mysql-test/suite/funcs_1/r/is_table_constraints.result
@@ -55,21 +55,22 @@ CONSTRAINT_TYPE varchar(64) NO
SELECT constraint_catalog, constraint_schema, constraint_name,
table_schema, table_name
FROM information_schema.table_constraints
-WHERE constraint_catalog IS NOT NULL;
+WHERE constraint_catalog IS NOT NULL
+ORDER BY constraint_schema, table_name, constraint_name;
constraint_catalog constraint_schema constraint_name table_schema table_name
-def mysql PRIMARY mysql column_stats
def mysql PRIMARY mysql columns_priv
+def mysql PRIMARY mysql column_stats
def mysql PRIMARY mysql db
def mysql PRIMARY mysql event
def mysql PRIMARY mysql func
def mysql PRIMARY mysql gtid_slave_pos
-def mysql PRIMARY mysql help_category
def mysql name mysql help_category
-def mysql PRIMARY mysql help_keyword
+def mysql PRIMARY mysql help_category
def mysql name mysql help_keyword
+def mysql PRIMARY mysql help_keyword
def mysql PRIMARY mysql help_relation
-def mysql PRIMARY mysql help_topic
def mysql name mysql help_topic
+def mysql PRIMARY mysql help_topic
def mysql PRIMARY mysql host
def mysql PRIMARY mysql index_stats
def mysql PRIMARY mysql innodb_index_stats
@@ -80,13 +81,15 @@ def mysql PRIMARY mysql procs_priv
def mysql PRIMARY mysql proxies_priv
def mysql Host mysql roles_mapping
def mysql PRIMARY mysql servers
-def mysql PRIMARY mysql table_stats
def mysql PRIMARY mysql tables_priv
+def mysql PRIMARY mysql table_stats
def mysql PRIMARY mysql time_zone
def mysql PRIMARY mysql time_zone_leap_second
def mysql PRIMARY mysql time_zone_name
def mysql PRIMARY mysql time_zone_transition
def mysql PRIMARY mysql time_zone_transition_type
+def mysql commit_id mysql transaction_registry
+def mysql PRIMARY mysql transaction_registry
def mysql PRIMARY mysql user
#########################################################################################
# Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.TABLE_CONSTRAINTS accessible information
diff --git a/mysql-test/suite/funcs_1/r/is_table_constraints_mysql.result b/mysql-test/suite/funcs_1/r/is_table_constraints_mysql.result
index e54de0671a2..b56c5115f16 100644
--- a/mysql-test/suite/funcs_1/r/is_table_constraints_mysql.result
+++ b/mysql-test/suite/funcs_1/r/is_table_constraints_mysql.result
@@ -37,6 +37,8 @@ def mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
def mysql PRIMARY mysql time_zone_name PRIMARY KEY
def mysql PRIMARY mysql time_zone_transition PRIMARY KEY
def mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
+def mysql commit_id mysql transaction_registry UNIQUE
+def mysql PRIMARY mysql transaction_registry PRIMARY KEY
def mysql PRIMARY mysql user PRIMARY KEY
connect testuser1,localhost,testuser1,,db_datadict;
SELECT * FROM information_schema.table_constraints
diff --git a/mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result
index 58a2373b66d..b40bc0ea0c7 100644
--- a/mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result
@@ -37,6 +37,8 @@ def mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
def mysql PRIMARY mysql time_zone_name PRIMARY KEY
def mysql PRIMARY mysql time_zone_transition PRIMARY KEY
def mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
+def mysql commit_id mysql transaction_registry UNIQUE
+def mysql PRIMARY mysql transaction_registry PRIMARY KEY
def mysql PRIMARY mysql user PRIMARY KEY
connect testuser1,localhost,testuser1,,db_datadict;
SELECT * FROM information_schema.table_constraints
@@ -73,6 +75,8 @@ def mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
def mysql PRIMARY mysql time_zone_name PRIMARY KEY
def mysql PRIMARY mysql time_zone_transition PRIMARY KEY
def mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
+def mysql commit_id mysql transaction_registry UNIQUE
+def mysql PRIMARY mysql transaction_registry PRIMARY KEY
def mysql PRIMARY mysql user PRIMARY KEY
connection default;
disconnect testuser1;
diff --git a/mysql-test/suite/funcs_1/r/is_table_privileges.result b/mysql-test/suite/funcs_1/r/is_table_privileges.result
index 340aead9aba..c448241e14e 100644
--- a/mysql-test/suite/funcs_1/r/is_table_privileges.result
+++ b/mysql-test/suite/funcs_1/r/is_table_privileges.result
@@ -96,6 +96,7 @@ GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
'testuser2'@'localhost' def db_datadict tb1 CREATE YES
'testuser2'@'localhost' def db_datadict tb1 CREATE VIEW YES
'testuser2'@'localhost' def db_datadict tb1 DELETE YES
+'testuser2'@'localhost' def db_datadict tb1 DELETE VERSIONING ROWS YES
'testuser2'@'localhost' def db_datadict tb1 DROP YES
'testuser2'@'localhost' def db_datadict tb1 INDEX YES
'testuser2'@'localhost' def db_datadict tb1 INSERT YES
@@ -131,6 +132,7 @@ GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
'testuser2'@'localhost' def db_datadict tb1 CREATE YES
'testuser2'@'localhost' def db_datadict tb1 CREATE VIEW YES
'testuser2'@'localhost' def db_datadict tb1 DELETE YES
+'testuser2'@'localhost' def db_datadict tb1 DELETE VERSIONING ROWS YES
'testuser2'@'localhost' def db_datadict tb1 DROP YES
'testuser2'@'localhost' def db_datadict tb1 INDEX YES
'testuser2'@'localhost' def db_datadict tb1 INSERT YES
@@ -184,6 +186,7 @@ GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
'testuser1'@'localhost' def test t1_table CREATE NO
'testuser1'@'localhost' def test t1_table CREATE VIEW NO
'testuser1'@'localhost' def test t1_table DELETE NO
+'testuser1'@'localhost' def test t1_table DELETE VERSIONING ROWS NO
'testuser1'@'localhost' def test t1_table DROP NO
'testuser1'@'localhost' def test t1_table INDEX NO
'testuser1'@'localhost' def test t1_table INSERT NO
@@ -196,6 +199,7 @@ GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
'testuser1'@'localhost' def test t1_view CREATE NO
'testuser1'@'localhost' def test t1_view CREATE VIEW NO
'testuser1'@'localhost' def test t1_view DELETE NO
+'testuser1'@'localhost' def test t1_view DELETE VERSIONING ROWS NO
'testuser1'@'localhost' def test t1_view DROP NO
'testuser1'@'localhost' def test t1_view INDEX NO
'testuser1'@'localhost' def test t1_view INSERT NO
diff --git a/mysql-test/suite/funcs_1/r/is_tables_mysql.result b/mysql-test/suite/funcs_1/r/is_tables_mysql.result
index 78deadf4960..2ceed585699 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_mysql.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_mysql.result
@@ -737,6 +737,31 @@ user_comment Time zone transition types
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA mysql
+TABLE_NAME transaction_registry
+TABLE_TYPE BASE TABLE
+ENGINE InnoDB
+VERSION 10
+ROW_FORMAT DYNAMIC_OR_PAGE
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+MAX_INDEX_LENGTH #MIL#
+TEMPORARY N
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG def
+TABLE_SCHEMA mysql
TABLE_NAME user
TABLE_TYPE BASE TABLE
ENGINE MYISAM_OR_MARIA
diff --git a/mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result
index 96d645dd989..77fa6ddae1e 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result
@@ -737,6 +737,31 @@ user_comment Time zone transition types
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA mysql
+TABLE_NAME transaction_registry
+TABLE_TYPE BASE TABLE
+ENGINE InnoDB
+VERSION 10
+ROW_FORMAT DYNAMIC_OR_PAGE
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+MAX_INDEX_LENGTH #MIL#
+TEMPORARY N
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG def
+TABLE_SCHEMA mysql
TABLE_NAME user
TABLE_TYPE BASE TABLE
ENGINE MYISAM_OR_MARIA
@@ -1501,6 +1526,31 @@ user_comment Time zone transition types
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA mysql
+TABLE_NAME transaction_registry
+TABLE_TYPE BASE TABLE
+ENGINE InnoDB
+VERSION 10
+ROW_FORMAT DYNAMIC_OR_PAGE
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+MAX_INDEX_LENGTH #MIL#
+TEMPORARY N
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG def
+TABLE_SCHEMA mysql
TABLE_NAME user
TABLE_TYPE BASE TABLE
ENGINE MYISAM_OR_MARIA
diff --git a/mysql-test/suite/funcs_1/r/is_triggers.result b/mysql-test/suite/funcs_1/r/is_triggers.result
index 8e5842742cb..1ea7263eb8f 100644
--- a/mysql-test/suite/funcs_1/r/is_triggers.result
+++ b/mysql-test/suite/funcs_1/r/is_triggers.result
@@ -104,7 +104,8 @@ DATABASE_COLLATION varchar(32) NO
SELECT * FROM information_schema.triggers
WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
-OR action_reference_new_table IS NOT NULL;
+OR action_reference_new_table IS NOT NULL
+ORDER BY trigger_schema, trigger_name;
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
def mtr gs_insert INSERT def mtr global_suppressions 1 NULL BEGIN DECLARE dummy INT; SELECT "" REGEXP NEW.pattern INTO dummy; END ROW BEFORE NULL NULL OLD NEW # root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
def mtr ts_insert INSERT def mtr test_suppressions 1 NULL BEGIN DECLARE dummy INT; SELECT "" REGEXP NEW.pattern INTO dummy; END ROW BEFORE NULL NULL OLD NEW # root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
@@ -144,7 +145,7 @@ connect testuser2, localhost, testuser2, , db_datadict;
SHOW GRANTS FOR 'testuser2'@'localhost';
Grants for testuser2@localhost
GRANT USAGE ON *.* TO 'testuser2'@'localhost'
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `db_datadict`.`t1` TO 'testuser2'@'localhost'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, DELETE VERSIONING ROWS ON `db_datadict`.`t1` TO 'testuser2'@'localhost'
# No TRIGGER Privilege --> no result for query
SELECT * FROM information_schema.triggers
WHERE trigger_name = 'trg1';
diff --git a/mysql-test/suite/funcs_1/r/is_triggers_embedded.result b/mysql-test/suite/funcs_1/r/is_triggers_embedded.result
index 55dc79e50d2..56c0e22d685 100644
--- a/mysql-test/suite/funcs_1/r/is_triggers_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_triggers_embedded.result
@@ -104,7 +104,8 @@ DATABASE_COLLATION varchar(32) NO
SELECT * FROM information_schema.triggers
WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
-OR action_reference_new_table IS NOT NULL;
+OR action_reference_new_table IS NOT NULL
+ORDER BY trigger_schema, trigger_name;
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
def mtr gs_insert INSERT def mtr global_suppressions 1 NULL BEGIN DECLARE dummy INT; SELECT "" REGEXP NEW.pattern INTO dummy; END ROW BEFORE NULL NULL OLD NEW # root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
def mtr ts_insert INSERT def mtr test_suppressions 1 NULL BEGIN DECLARE dummy INT; SELECT "" REGEXP NEW.pattern INTO dummy; END ROW BEFORE NULL NULL OLD NEW # root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
diff --git a/mysql-test/suite/funcs_1/r/is_user_privileges.result b/mysql-test/suite/funcs_1/r/is_user_privileges.result
index a300a1f73e7..cb619831baa 100644
--- a/mysql-test/suite/funcs_1/r/is_user_privileges.result
+++ b/mysql-test/suite/funcs_1/r/is_user_privileges.result
@@ -119,6 +119,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -165,6 +166,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -211,6 +213,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -281,6 +284,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -327,6 +331,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -373,6 +378,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -429,6 +435,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -475,6 +482,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -521,6 +529,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -599,6 +608,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -645,6 +655,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -691,6 +702,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -761,6 +773,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -807,6 +820,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -853,6 +867,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -909,6 +924,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -955,6 +971,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1001,6 +1018,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1109,6 +1127,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1155,6 +1174,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1201,6 +1221,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1304,6 +1325,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1350,6 +1372,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1396,6 +1419,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1452,6 +1476,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1498,6 +1523,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1544,6 +1570,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1607,6 +1634,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1653,6 +1681,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1699,6 +1728,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1777,6 +1807,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1823,6 +1854,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
@@ -1869,6 +1901,7 @@ Create_user_priv N
Event_priv N
Trigger_priv N
Create_tablespace_priv N
+Delete_history_priv N
ssl_type
ssl_cipher
x509_issuer
diff --git a/mysql-test/suite/funcs_1/r/is_views.result b/mysql-test/suite/funcs_1/r/is_views.result
index cc50b8033f0..62ec33c8340 100644
--- a/mysql-test/suite/funcs_1/r/is_views.result
+++ b/mysql-test/suite/funcs_1/r/is_views.result
@@ -128,13 +128,15 @@ ENGINE = <engine_type>;
DROP USER 'testuser1'@'localhost';
CREATE USER 'testuser1'@'localhost';
SELECT * FROM information_schema.views
-WHERE table_name LIKE 't1_%';
+WHERE table_name LIKE 't1_%'
+ORDER BY table_schema, table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
CREATE VIEW test.t1_view AS SELECT DISTINCT f1 FROM test.t1_table;
CREATE ALGORITHM=MERGE VIEW test.t1_view1 AS SELECT f1 FROM test.t1_table;
CREATE ALGORITHM=TEMPTABLE VIEW test.t1_view2 AS SELECT f1 FROM test.t1_table;
SELECT * FROM information_schema.views
-WHERE table_name LIKE 't1_%';
+WHERE table_name LIKE 't1_%'
+ORDER BY table_schema, table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
def test t1_view select distinct `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE NO root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
def test t1_view1 select `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE YES root@localhost DEFINER latin1 latin1_swedish_ci MERGE
diff --git a/mysql-test/suite/funcs_1/r/is_views_embedded.result b/mysql-test/suite/funcs_1/r/is_views_embedded.result
index 1f2e23c3610..c382370e892 100644
--- a/mysql-test/suite/funcs_1/r/is_views_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_views_embedded.result
@@ -131,13 +131,15 @@ ENGINE = <engine_type>;
DROP USER 'testuser1'@'localhost';
CREATE USER 'testuser1'@'localhost';
SELECT * FROM information_schema.views
-WHERE table_name LIKE 't1_%';
+WHERE table_name LIKE 't1_%'
+ORDER BY table_schema, table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
CREATE VIEW test.t1_view AS SELECT DISTINCT f1 FROM test.t1_table;
CREATE ALGORITHM=MERGE VIEW test.t1_view1 AS SELECT f1 FROM test.t1_table;
CREATE ALGORITHM=TEMPTABLE VIEW test.t1_view2 AS SELECT f1 FROM test.t1_table;
SELECT * FROM information_schema.views
-WHERE table_name LIKE 't1_%';
+WHERE table_name LIKE 't1_%'
+ORDER BY table_schema, table_name;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
def test t1_view select distinct `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE NO root@localhost DEFINER latin1 latin1_swedish_ci UNDEFINED
def test t1_view1 select `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE YES root@localhost DEFINER latin1 latin1_swedish_ci MERGE
diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_10.result b/mysql-test/suite/funcs_1/r/memory_storedproc_10.result
index 0f5fe7cf34c..ef5aa4c8570 100644
--- a/mysql-test/suite/funcs_1/r/memory_storedproc_10.result
+++ b/mysql-test/suite/funcs_1/r/memory_storedproc_10.result
@@ -265,7 +265,7 @@ agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
CALL sp_ins_3();
SELECT row_count();
row_count()
-1
+3
SELECT * FROM temp;
f1 f2 f3 f4 f5 f6
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
@@ -318,7 +318,7 @@ COUNT( f1 ) f1
4 updated
SELECT row_count();
row_count()
-3
+7
SELECT * FROM temp;
f1 f2 f3 f4 f5 f6
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
@@ -381,7 +381,7 @@ row_count() after delete
2
SELECT row_count();
row_count()
-0
+8
SELECT * FROM temp;
f1 f2 f3 f4 f5 f6
qwe xyz 1998-03-26 100 uvw 1000
diff --git a/mysql-test/suite/funcs_1/r/memory_trig_03.result b/mysql-test/suite/funcs_1/r/memory_trig_03.result
index 8fd3e034735..b86315a1a7d 100644
--- a/mysql-test/suite/funcs_1/r/memory_trig_03.result
+++ b/mysql-test/suite/funcs_1/r/memory_trig_03.result
@@ -78,7 +78,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke TRIGGER on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
@@ -168,7 +168,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke UPDATE on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -183,7 +183,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
select f1 from t1 order by f1;
f1
insert 3.5.3.2-no
@@ -248,7 +248,7 @@ connection no_privs_424b;
show grants;
Grants for test_noprivs@localhost
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.* TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg4b_1 before UPDATE on t1 for each row
set new.f1 = 'trig 3.5.3.7-1b';
@@ -329,7 +329,7 @@ connection no_privs_424c;
show grants;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg4c_1 before INSERT on t1 for each row
set new.f1 = 'trig 3.5.3.7-1c';
@@ -441,7 +441,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke SELECT on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -457,7 +457,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
create trigger trg5a_1 before INSERT on t1 for each row
set @test_var = new.f1;
connection default;
@@ -503,7 +503,7 @@ revoke SELECT on priv_db.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.* TO 'test_noprivs'@'localhost'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.* to test_yesprivs@localhost;
@@ -518,7 +518,7 @@ connection no_privs_425b;
show grants;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.* TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg5b_1 before UPDATE on t1 for each row
set @test_var= new.f1;
@@ -565,7 +565,7 @@ revoke SELECT on priv_db.t1 from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
@@ -580,7 +580,7 @@ connection no_privs_425c;
show grants;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg5c_1 before INSERT on t1 for each row
set @test_var= new.f1;
diff --git a/mysql-test/suite/funcs_1/r/memory_trig_03e.result b/mysql-test/suite/funcs_1/r/memory_trig_03e.result
index 83c36c6294f..ea0aaf0c86f 100644
--- a/mysql-test/suite/funcs_1/r/memory_trig_03e.result
+++ b/mysql-test/suite/funcs_1/r/memory_trig_03e.result
@@ -604,7 +604,7 @@ trig 1_1-yes
revoke TRIGGER on *.* from test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
disconnect yes_privs;
connect yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
select current_user;
@@ -657,7 +657,7 @@ root@localhost
grant TRIGGER on priv_db.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
GRANT TRIGGER ON `priv_db`.* TO 'test_yesprivs'@'localhost'
trigger privilege on db level for create:
@@ -930,7 +930,7 @@ grant TRIGGER on priv1_db.t1 to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
GRANT USAGE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT ON `priv1_db`.* TO 'test_yesprivs'@'localhost'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, DELETE VERSIONING ROWS ON `priv1_db`.* TO 'test_yesprivs'@'localhost'
GRANT SELECT, UPDATE ON `priv2_db`.* TO 'test_yesprivs'@'localhost'
GRANT TRIGGER ON `priv1_db`.`t1` TO 'test_yesprivs'@'localhost'
diff --git a/mysql-test/suite/funcs_1/r/memory_views.result b/mysql-test/suite/funcs_1/r/memory_views.result
index 1d3f60df5cb..5ac5c838fb5 100644
--- a/mysql-test/suite/funcs_1/r/memory_views.result
+++ b/mysql-test/suite/funcs_1/r/memory_views.result
@@ -3552,11 +3552,11 @@ CREATE VIEW v1 or REPLACE AS Select * from tb2 my_table;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'or REPLACE AS Select * from tb2 my_table' at line 1
CREATE VIEW v1 WITH CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CASCADED CHECK OPTION AS Select *
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
CREATE VIEW v1 WITH LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LOCAL CHECK OPTION AS Select *
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
SELECT * FROM tb2 my_table CREATE VIEW As v1;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CREATE VIEW As v1' at line 1
@@ -3586,7 +3586,7 @@ FROM test.tb2 my_table CHECK OPTION WITH CASCADED;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CHECK OPTION WITH CASCADED' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CASCADED CHECK OPTION
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH CASCADED CHECK OPTION;
@@ -3615,7 +3615,7 @@ FROM test.tb2 my_table CHECK OPTION WITH LOCAL;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CHECK OPTION WITH LOCAL' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CASCADED CHECK OPTION
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH LOCAL CHECK OPTION;
diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result
index 0f5fe7cf34c..ef5aa4c8570 100644
--- a/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result
+++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result
@@ -265,7 +265,7 @@ agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993
CALL sp_ins_3();
SELECT row_count();
row_count()
-1
+3
SELECT * FROM temp;
f1 f2 f3 f4 f5 f6
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
@@ -318,7 +318,7 @@ COUNT( f1 ) f1
4 updated
SELECT row_count();
row_count()
-3
+7
SELECT * FROM temp;
f1 f2 f3 f4 f5 f6
a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992
@@ -381,7 +381,7 @@ row_count() after delete
2
SELECT row_count();
row_count()
-0
+8
SELECT * FROM temp;
f1 f2 f3 f4 f5 f6
qwe xyz 1998-03-26 100 uvw 1000
diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_03.result b/mysql-test/suite/funcs_1/r/myisam_trig_03.result
index 8fd3e034735..b86315a1a7d 100644
--- a/mysql-test/suite/funcs_1/r/myisam_trig_03.result
+++ b/mysql-test/suite/funcs_1/r/myisam_trig_03.result
@@ -78,7 +78,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke TRIGGER on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
@@ -168,7 +168,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke UPDATE on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -183,7 +183,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
select f1 from t1 order by f1;
f1
insert 3.5.3.2-no
@@ -248,7 +248,7 @@ connection no_privs_424b;
show grants;
Grants for test_noprivs@localhost
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.* TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg4b_1 before UPDATE on t1 for each row
set new.f1 = 'trig 3.5.3.7-1b';
@@ -329,7 +329,7 @@ connection no_privs_424c;
show grants;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
+GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg4c_1 before INSERT on t1 for each row
set new.f1 = 'trig 3.5.3.7-1c';
@@ -441,7 +441,7 @@ grant ALL on *.* to test_noprivs@localhost;
revoke SELECT on *.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
@@ -457,7 +457,7 @@ test_noprivs@localhost
use priv_db;
show grants;
Grants for test_noprivs@localhost
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
create trigger trg5a_1 before INSERT on t1 for each row
set @test_var = new.f1;
connection default;
@@ -503,7 +503,7 @@ revoke SELECT on priv_db.* from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.* TO 'test_noprivs'@'localhost'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.* to test_yesprivs@localhost;
@@ -518,7 +518,7 @@ connection no_privs_425b;
show grants;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `priv_db`.* TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.* TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg5b_1 before UPDATE on t1 for each row
set @test_var= new.f1;
@@ -565,7 +565,7 @@ revoke SELECT on priv_db.t1 from test_noprivs@localhost;
show grants for test_noprivs@localhost;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
grant TRIGGER on *.* to test_yesprivs@localhost;
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
@@ -580,7 +580,7 @@ connection no_privs_425c;
show grants;
Grants for test_noprivs@localhost
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
+GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER, DELETE VERSIONING ROWS ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
use priv_db;
create trigger trg5c_1 before INSERT on t1 for each row
set @test_var= new.f1;
diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_03e.result b/mysql-test/suite/funcs_1/r/myisam_trig_03e.result
index a4db9050c86..60e6031f0e2 100644
--- a/mysql-test/suite/funcs_1/r/myisam_trig_03e.result
+++ b/mysql-test/suite/funcs_1/r/myisam_trig_03e.result
@@ -604,7 +604,7 @@ trig 1_1-yes
revoke TRIGGER on *.* from test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
disconnect yes_privs;
connect yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
select current_user;
@@ -657,7 +657,7 @@ root@localhost
grant TRIGGER on priv_db.* to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE, DELETE VERSIONING ROWS ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
GRANT TRIGGER ON `priv_db`.* TO 'test_yesprivs'@'localhost'
trigger privilege on db level for create:
@@ -930,7 +930,7 @@ grant TRIGGER on priv1_db.t1 to test_yesprivs@localhost;
show grants for test_yesprivs@localhost;
Grants for test_yesprivs@localhost
GRANT USAGE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
-GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT ON `priv1_db`.* TO 'test_yesprivs'@'localhost'
+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, DELETE VERSIONING ROWS ON `priv1_db`.* TO 'test_yesprivs'@'localhost'
GRANT SELECT, UPDATE ON `priv2_db`.* TO 'test_yesprivs'@'localhost'
GRANT TRIGGER ON `priv1_db`.`t1` TO 'test_yesprivs'@'localhost'
diff --git a/mysql-test/suite/funcs_1/r/myisam_views-big.result b/mysql-test/suite/funcs_1/r/myisam_views-big.result
index 3ae0ce034bb..5021cbd5324 100644
--- a/mysql-test/suite/funcs_1/r/myisam_views-big.result
+++ b/mysql-test/suite/funcs_1/r/myisam_views-big.result
@@ -4054,11 +4054,11 @@ CREATE VIEW v1 or REPLACE AS Select * from tb2 my_table;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'or REPLACE AS Select * from tb2 my_table' at line 1
CREATE VIEW v1 WITH CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CASCADED CHECK OPTION AS Select *
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH CASCADED CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
CREATE VIEW v1 WITH LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LOCAL CHECK OPTION AS Select *
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH LOCAL CHECK OPTION AS Select *
from tb2 my_table limit 50' at line 1
SELECT * FROM tb2 my_table CREATE VIEW As v1;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CREATE VIEW As v1' at line 1
@@ -4088,7 +4088,7 @@ FROM test.tb2 my_table CHECK OPTION WITH CASCADED;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CHECK OPTION WITH CASCADED' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CASCADED CHECK OPTION
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH CASCADED CHECK OPTION;
@@ -4117,7 +4117,7 @@ FROM test.tb2 my_table CHECK OPTION WITH LOCAL;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CHECK OPTION WITH LOCAL' at line 2
CREATE OR REPLACE VIEW v1 WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CASCADED CHECK OPTION
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH CASCADED CHECK OPTION
AS SELECT F59, F60 FROM test.tb2 my_table' at line 1
CREATE OR REPLACE AS SELECT F59, F60
FROM test.tb2 my_table VIEW v1 WITH LOCAL CHECK OPTION;
diff --git a/mysql-test/suite/funcs_1/r/storedproc.result b/mysql-test/suite/funcs_1/r/storedproc.result
index f3666db164b..e5e009a86de 100644
--- a/mysql-test/suite/funcs_1/r/storedproc.result
+++ b/mysql-test/suite/funcs_1/r/storedproc.result
@@ -1771,48 +1771,48 @@ Testcase 4.1.9:
drop procedure
--------------------------------------------------------------------------------
SELECT * from mysql.proc where specific_name='sp9';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
DROP PROCEDURE IF EXISTS sp9;
SELECT * from mysql.proc where specific_name='sp9';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
CREATE PROCEDURE sp9()SELECT * from t1;
SELECT * from mysql.proc where specific_name='sp9';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
-db_storedproc sp9 PROCEDURE sp9 SQL CONTAINS_SQL NO DEFINER SELECT * from t1 root@localhost created modified latin1 latin1_swedish_ci latin1_swedish_ci SELECT * from t1
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
+db_storedproc sp9 PROCEDURE sp9 SQL CONTAINS_SQL NO DEFINER SELECT * from t1 root@localhost created modified latin1 latin1_swedish_ci latin1_swedish_ci SELECT * from t1 NONE
DROP PROCEDURE sp9;
SELECT * from mysql.proc where specific_name='sp9';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
CREATE PROCEDURE sp9()SELECT * from t1;
SELECT * from mysql.proc where specific_name='sp9';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
-db_storedproc sp9 PROCEDURE sp9 SQL CONTAINS_SQL NO DEFINER SELECT * from t1 root@localhost created modified latin1 latin1_swedish_ci latin1_swedish_ci SELECT * from t1
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
+db_storedproc sp9 PROCEDURE sp9 SQL CONTAINS_SQL NO DEFINER SELECT * from t1 root@localhost created modified latin1 latin1_swedish_ci latin1_swedish_ci SELECT * from t1 NONE
DROP PROCEDURE IF EXISTS sp9;
SELECT * from mysql.proc where specific_name='sp9';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
Testcase 4.1.10:
----------------
DROP FUNCTION
--------------------------------------------------------------------------------
SELECT * from mysql.proc where specific_name='fn10' and type='function';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
DROP FUNCTION IF EXISTS fn10;
SELECT * from mysql.proc where specific_name='fn10' and type='function';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
CREATE FUNCTION fn10() returns int return 100;
SELECT * from mysql.proc where specific_name='fn10' and type='function';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
-db_storedproc fn10 FUNCTION fn10 SQL CONTAINS_SQL NO DEFINER int(11) return 100 root@localhost created modified latin1 latin1_swedish_ci latin1_swedish_ci return 100
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
+db_storedproc fn10 FUNCTION fn10 SQL CONTAINS_SQL NO DEFINER int(11) return 100 root@localhost created modified latin1 latin1_swedish_ci latin1_swedish_ci return 100 NONE
DROP FUNCTION fn10;
SELECT * from mysql.proc where specific_name='fn10' and type='function';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
CREATE FUNCTION fn10() returns int return 100;
SELECT * from mysql.proc where specific_name='fn10' and type='function';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
-db_storedproc fn10 FUNCTION fn10 SQL CONTAINS_SQL NO DEFINER int(11) return 100 root@localhost created modified latin1 latin1_swedish_ci latin1_swedish_ci return 100
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
+db_storedproc fn10 FUNCTION fn10 SQL CONTAINS_SQL NO DEFINER int(11) return 100 root@localhost created modified latin1 latin1_swedish_ci latin1_swedish_ci return 100 NONE
DROP FUNCTION IF EXISTS fn10;
SELECT * from mysql.proc where specific_name='fn10' and type='function';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
Testcase 4.1.11:
----------------
@@ -2807,7 +2807,7 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
SELECT * from t1 where f2=f1' at line 1
CREATE PROCEDURE with()
SELECT * from t1 where f2=f1;
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '()
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'with()
SELECT * from t1 where f2=f1' at line 1
CREATE PROCEDURE write()
SELECT * from t1 where f2=f1;
@@ -5596,7 +5596,7 @@ CREATE PROCEDURE sp1()
values:BEGIN
SELECT @x;
END//
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'values:BEGIN
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':BEGIN
SELECT @x;
END' at line 2
DROP PROCEDURE IF EXISTS sp1;
@@ -9222,7 +9222,7 @@ CREATE PROCEDURE sp1()
BEGIN
declare with char;
END//
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'char;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'with char;
END' at line 3
DROP PROCEDURE IF EXISTS sp1;
Warnings:
@@ -11574,9 +11574,8 @@ BEGIN
declare with condition for sqlstate '02000';
declare exit handler for with set @var2 = 1;
END//
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'condition for sqlstate '02000';
-declare exit handler for with set @var2 = 1;
-END' at line 3
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'with condition for sqlstate '02000';
+declare exit handler for with set @var2 = 1' at line 3
DROP PROCEDURE IF EXISTS sp1;
Warnings:
Note 1305 PROCEDURE db_storedproc.sp1 does not exist
@@ -13680,7 +13679,7 @@ CREATE PROCEDURE sp1( )
BEGIN
declare with handler for sqlstate '02000' set @var2 = 1;
END//
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'handler for sqlstate '02000' set @var2 = 1;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'with handler for sqlstate '02000' set @var2 = 1;
END' at line 3
DROP PROCEDURE IF EXISTS sp1;
Warnings:
@@ -16171,15 +16170,15 @@ insert into t43 values('abcde', 'a!@#$%^&*(');
CREATE PROCEDURE d1.sp4()
SELECT * from d1.t43;
SELECT * from mysql.proc where specific_name = 'sp4';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
-d1 sp4 PROCEDURE sp4 SQL CONTAINS_SQL NO DEFINER SELECT * from d1.t43 root@localhost modified created latin1 latin1_swedish_ci latin1_swedish_ci SELECT * from d1.t43
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
+d1 sp4 PROCEDURE sp4 SQL CONTAINS_SQL NO DEFINER SELECT * from d1.t43 root@localhost modified created latin1 latin1_swedish_ci latin1_swedish_ci SELECT * from d1.t43 NONE
USE db_storedproc;
DROP DATABASE d1;
CREATE DATABASE d1;
USE d1;
create table t44(a char(5), b char(10));
SELECT * from mysql.proc where specific_name = 'sp4';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
USE db_storedproc;
DROP DATABASE d1;
@@ -16221,8 +16220,8 @@ CREATE PROCEDURE sp8 ( n char(20) ) sql security DEFINER comment 'initial'
USE d2;
alter procedure d1.sp8 sql security DEFINER comment 'updated';
SELECT * from mysql.proc where specific_name='sp8' and db='d1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
-d1 sp8 PROCEDURE sp8 SQL CONTAINS_SQL NO DEFINER n char(20) SELECT * from t1 where t1.f1 = n root@localhost modified created updated latin1 latin1_swedish_ci latin1_swedish_ci SELECT * from t1 where t1.f1 = n
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
+d1 sp8 PROCEDURE sp8 SQL CONTAINS_SQL NO DEFINER n char(20) SELECT * from t1 where t1.f1 = n root@localhost modified created updated latin1 latin1_swedish_ci latin1_swedish_ci SELECT * from t1 where t1.f1 = n NONE
Testcase 4.4.9:
--------------------------------------------------------------------------------
@@ -16238,7 +16237,7 @@ END//
USE d2;
alter function d1.fn2 sql security DEFINER comment 'updated';
SELECT * from mysql.proc where specific_name='fn2' and db='d1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
d1 fn2 FUNCTION fn2 SQL CONTAINS_SQL NO DEFINER n int int(11) BEGIN
declare a int;
set a = 0.9 * n;
@@ -16247,7 +16246,7 @@ END root@localhost modified created updated latin1 latin1_swedish_ci latin1_swe
declare a int;
set a = 0.9 * n;
return a;
-END
+END NONE
Testcase 4.4.10:
--------------------------------------------------------------------------------
@@ -16257,7 +16256,7 @@ SELECT * from t1 where t1.f1 = n;
USE d2;
DROP PROCEDURE d1.sp9;
SELECT * from mysql.proc where specific_name='sp9' and db='d1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
Testcase 4.4.11:
--------------------------------------------------------------------------------
@@ -16271,7 +16270,7 @@ END//
USE d2;
DROP FUNCTION d1.fn3;
SELECT * from mysql.proc where specific_name='fn3' and db='d1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
USE db_storedproc;
DROP DATABASE d1;
DROP DATABASE d2;
diff --git a/mysql-test/suite/funcs_1/t/is_basics_mixed.test b/mysql-test/suite/funcs_1/t/is_basics_mixed.test
index c0b03a84478..901441a3557 100644
--- a/mysql-test/suite/funcs_1/t/is_basics_mixed.test
+++ b/mysql-test/suite/funcs_1/t/is_basics_mixed.test
@@ -286,9 +286,11 @@ CREATE VIEW db_datadict.v2 AS
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
FROM information_schema.tables WHERE table_schema = 'db_datadict';
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
-FROM db_datadict.v2;
+FROM db_datadict.v2
+ORDER BY TABLE_NAME;
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
-FROM information_schema.tables WHERE table_schema = 'db_datadict';
+FROM information_schema.tables WHERE table_schema = 'db_datadict'
+ORDER BY TABLE_NAME;
GRANT SELECT ON db_datadict.v2 to testuser2@localhost;
#
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
diff --git a/mysql-test/suite/funcs_1/t/is_statistics.test b/mysql-test/suite/funcs_1/t/is_statistics.test
index 3cdc5568960..3d7f23a7b2c 100644
--- a/mysql-test/suite/funcs_1/t/is_statistics.test
+++ b/mysql-test/suite/funcs_1/t/is_statistics.test
@@ -78,7 +78,8 @@ eval SHOW COLUMNS FROM information_schema.$is_table;
# Show that TABLE_CATALOG is always NULL.
SELECT table_catalog, table_schema, table_name, index_schema, index_name
-FROM information_schema.statistics WHERE table_catalog IS NOT NULL;
+FROM information_schema.statistics WHERE table_catalog IS NOT NULL
+ORDER BY table_schema, table_name, index_schema, index_name;
--echo ####################################################################################
diff --git a/mysql-test/suite/funcs_1/t/is_table_constraints.test b/mysql-test/suite/funcs_1/t/is_table_constraints.test
index 96853edac2c..cf8d3fbf2d2 100644
--- a/mysql-test/suite/funcs_1/t/is_table_constraints.test
+++ b/mysql-test/suite/funcs_1/t/is_table_constraints.test
@@ -68,8 +68,8 @@ eval SHOW COLUMNS FROM information_schema.$is_table;
SELECT constraint_catalog, constraint_schema, constraint_name,
table_schema, table_name
FROM information_schema.table_constraints
-WHERE constraint_catalog IS NOT NULL;
-
+WHERE constraint_catalog IS NOT NULL
+ORDER BY constraint_schema, table_name, constraint_name;
--echo #########################################################################################
--echo # Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.TABLE_CONSTRAINTS accessible information
diff --git a/mysql-test/suite/galera/r/galera_ist_progress.result b/mysql-test/suite/galera/r/galera_ist_progress.result
index 9fc7febbea5..ed36a217624 100644
--- a/mysql-test/suite/galera/r/galera_ist_progress.result
+++ b/mysql-test/suite/galera/r/galera_ist_progress.result
@@ -1,6 +1,10 @@
+connection node_2;
SET GLOBAL wsrep_provider_options = 'gmcast.isolate = 1';
+connection node_1;
+connection node_2;
SET SESSION wsrep_on = OFF;
SET SESSION wsrep_on = ON;
+connection node_1;
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (2);
@@ -12,8 +16,13 @@ INSERT INTO t1 VALUES (7);
INSERT INTO t1 VALUES (8);
INSERT INTO t1 VALUES (9);
INSERT INTO t1 VALUES (10);
+connection node_2;
SET GLOBAL wsrep_provider_options = 'gmcast.isolate = 0';
+connection node_1;
+connection node_2;
+connection node_1;
include/assert_grep.inc [Receiving IST: 11 writesets, seqnos]
include/assert_grep.inc [Receiving IST\.\.\. 0\.0% \( 0/11 events\) complete]
include/assert_grep.inc [Receiving IST\.\.\.100\.0% \(11/11 events\) complete]
+connection node_1;
DROP TABLE t1;
diff --git a/mysql-test/suite/galera/suite.pm b/mysql-test/suite/galera/suite.pm
index 361743f1243..bad0484be16 100644
--- a/mysql-test/suite/galera/suite.pm
+++ b/mysql-test/suite/galera/suite.pm
@@ -9,8 +9,10 @@ return "Not run for embedded server" if $::opt_embedded_server;
return "WSREP is not compiled in" unless defined $::mysqld_variables{'wsrep-on'};
my ($provider) = grep { -f $_ } $ENV{WSREP_PROVIDER},
- "/usr/lib/galera/libgalera_smm.so",
- "/usr/lib64/galera/libgalera_smm.so";
+ "/usr/lib64/galera-3/libgalera_smm.so",
+ "/usr/lib64/galera/libgalera_smm.so",
+ "/usr/lib/galera-3/libgalera_smm.so",
+ "/usr/lib/galera/libgalera_smm.so";
return "No wsrep provider library" unless -f $provider;
diff --git a/mysql-test/suite/galera_3nodes/suite.pm b/mysql-test/suite/galera_3nodes/suite.pm
index c91e6e07d76..3a1237ecf75 100644
--- a/mysql-test/suite/galera_3nodes/suite.pm
+++ b/mysql-test/suite/galera_3nodes/suite.pm
@@ -9,8 +9,10 @@ return "Not run for embedded server" if $::opt_embedded_server;
return "WSREP is not compiled in" unless defined $::mysqld_variables{'wsrep-on'};
my ($provider) = grep { -f $_ } $ENV{WSREP_PROVIDER},
- "/usr/lib/galera/libgalera_smm.so",
- "/usr/lib64/galera/libgalera_smm.so";
+ "/usr/lib64/galera-3/libgalera_smm.so",
+ "/usr/lib64/galera/libgalera_smm.so",
+ "/usr/lib/galera-3/libgalera_smm.so",
+ "/usr/lib/galera/libgalera_smm.so";
return "No wsrep provider library" unless -f $provider;
diff --git a/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc b/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc
index 88091ce42a4..9435551ce6f 100644
--- a/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc
+++ b/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc
@@ -111,7 +111,7 @@ create table t1 (a int, b int generated always as (sleep(a)) virtual);
--echo # VALUES()
-- error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
-create table t1 (a varchar(1024), b varchar(1024) generated always as (values(a)) virtual);
+create table t1 (a varchar(1024), b varchar(1024) generated always as (value(a)) virtual);
--echo # Stored procedures
diff --git a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result
index 27270654e9b..fa8f2660aef 100644
--- a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result
+++ b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result
@@ -70,8 +70,8 @@ ERROR HY000: Function or expression 'row_count()' cannot be used in the GENERATE
create table t1 (a int, b int generated always as (sleep(a)) virtual);
ERROR HY000: Function or expression 'sleep()' cannot be used in the GENERATED ALWAYS AS clause of `b`
# VALUES()
-create table t1 (a varchar(1024), b varchar(1024) generated always as (values(a)) virtual);
-ERROR HY000: Function or expression 'values()' cannot be used in the GENERATED ALWAYS AS clause of `b`
+create table t1 (a varchar(1024), b varchar(1024) generated always as (value(a)) virtual);
+ERROR HY000: Function or expression 'value()' cannot be used in the GENERATED ALWAYS AS clause of `b`
# Stored procedures
create procedure p1()
begin
diff --git a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result
index 24fd3b988c2..b777bb485de 100644
--- a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result
+++ b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result
@@ -72,8 +72,8 @@ ERROR HY000: Function or expression 'row_count()' cannot be used in the GENERATE
create table t1 (a int, b int generated always as (sleep(a)) virtual);
ERROR HY000: Function or expression 'sleep()' cannot be used in the GENERATED ALWAYS AS clause of `b`
# VALUES()
-create table t1 (a varchar(1024), b varchar(1024) generated always as (values(a)) virtual);
-ERROR HY000: Function or expression 'values()' cannot be used in the GENERATED ALWAYS AS clause of `b`
+create table t1 (a varchar(1024), b varchar(1024) generated always as (value(a)) virtual);
+ERROR HY000: Function or expression 'value()' cannot be used in the GENERATED ALWAYS AS clause of `b`
# Stored procedures
create procedure p1()
begin
diff --git a/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result b/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result
index 309d8e8f04a..e2d503cf134 100644
--- a/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result
+++ b/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result
@@ -115,7 +115,7 @@ INSERT INTO t1(a, b) VALUES (8, 8);
# enable purge
COMMIT;
# wait for purge to process the deleted/updated records.
-InnoDB 1 transactions not purged
+InnoDB 2 transactions not purged
SET DEBUG_SYNC= 'now SIGNAL purged';
disconnect con1;
connection default;
diff --git a/mysql-test/suite/gcol/r/innodb_virtual_rebuild.result b/mysql-test/suite/gcol/r/innodb_virtual_rebuild.result
index 7ebf25cf072..2e35698e47e 100644
--- a/mysql-test/suite/gcol/r/innodb_virtual_rebuild.result
+++ b/mysql-test/suite/gcol/r/innodb_virtual_rebuild.result
@@ -7,8 +7,6 @@ ROW_FORMAT=REDUNDANT;
INSERT INTO t4 SET i=1;
ALTER TABLE t4 ADD INDEX(v), LOCK=NONE;
ALTER TABLE t4 ADD COLUMN k INT, LOCK=NONE;
-ERROR 0A000: LOCK=NONE is not supported. Reason: online rebuild with indexed virtual columns. Try LOCK=SHARED
-ALTER TABLE t4 ADD COLUMN k INT;
ALTER TABLE t4 DROP k, LOCK=NONE;
ERROR 0A000: LOCK=NONE is not supported. Reason: online rebuild with indexed virtual columns. Try LOCK=SHARED
ALTER TABLE t4 DROP INDEX v, LOCK=NONE;
@@ -16,8 +14,6 @@ ALTER TABLE t4 DROP k, LOCK=NONE;
INSERT INTO t3 SET i=1;
ALTER TABLE t3 ADD INDEX(v), LOCK=NONE;
ALTER TABLE t3 ADD COLUMN k INT, LOCK=NONE;
-ERROR 0A000: LOCK=NONE is not supported. Reason: online rebuild with indexed virtual columns. Try LOCK=SHARED
-ALTER TABLE t3 ADD COLUMN k INT;
ALTER TABLE t3 DROP k, LOCK=NONE;
ERROR 0A000: LOCK=NONE is not supported. Reason: online rebuild with indexed virtual columns. Try LOCK=SHARED
ALTER TABLE t3 DROP INDEX v, LOCK=NONE;
@@ -25,8 +21,6 @@ ALTER TABLE t3 DROP k, LOCK=NONE;
INSERT INTO t2 SET i=1;
ALTER TABLE t2 ADD INDEX(v), LOCK=NONE;
ALTER TABLE t2 ADD COLUMN k INT, LOCK=NONE;
-ERROR 0A000: LOCK=NONE is not supported. Reason: online rebuild with indexed virtual columns. Try LOCK=SHARED
-ALTER TABLE t2 ADD COLUMN k INT;
ALTER TABLE t2 DROP k, LOCK=NONE;
ERROR 0A000: LOCK=NONE is not supported. Reason: online rebuild with indexed virtual columns. Try LOCK=SHARED
ALTER TABLE t2 DROP INDEX v, LOCK=NONE;
@@ -34,8 +28,6 @@ ALTER TABLE t2 DROP k, LOCK=NONE;
INSERT INTO t1 SET i=1;
ALTER TABLE t1 ADD INDEX(v), LOCK=NONE;
ALTER TABLE t1 ADD COLUMN k INT, LOCK=NONE;
-ERROR 0A000: LOCK=NONE is not supported. Reason: online rebuild with indexed virtual columns. Try LOCK=SHARED
-ALTER TABLE t1 ADD COLUMN k INT;
ALTER TABLE t1 DROP k, LOCK=NONE;
ERROR 0A000: LOCK=NONE is not supported. Reason: online rebuild with indexed virtual columns. Try LOCK=SHARED
ALTER TABLE t1 DROP INDEX v, LOCK=NONE;
diff --git a/mysql-test/suite/gcol/t/innodb_virtual_basic.test b/mysql-test/suite/gcol/t/innodb_virtual_basic.test
index 674698e77c4..aa2e1e00c8f 100644
--- a/mysql-test/suite/gcol/t/innodb_virtual_basic.test
+++ b/mysql-test/suite/gcol/t/innodb_virtual_basic.test
@@ -1,5 +1,6 @@
--source include/have_innodb.inc
--source include/have_partition.inc
+--source include/big_test.inc
call mtr.add_suppression("\\[Warning\\] InnoDB: Compute virtual");
diff --git a/mysql-test/suite/gcol/t/innodb_virtual_rebuild.test b/mysql-test/suite/gcol/t/innodb_virtual_rebuild.test
index 8eaefbe5ec0..37ab82c46db 100644
--- a/mysql-test/suite/gcol/t/innodb_virtual_rebuild.test
+++ b/mysql-test/suite/gcol/t/innodb_virtual_rebuild.test
@@ -14,9 +14,7 @@ while ($n)
{
eval INSERT INTO t$n SET i=1;
eval ALTER TABLE t$n ADD INDEX(v), LOCK=NONE;
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
eval ALTER TABLE t$n ADD COLUMN k INT, LOCK=NONE;
-eval ALTER TABLE t$n ADD COLUMN k INT;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
eval ALTER TABLE t$n DROP k, LOCK=NONE;
eval ALTER TABLE t$n DROP INDEX v, LOCK=NONE;
diff --git a/mysql-test/suite/innodb/include/innodb-page-compression.inc b/mysql-test/suite/innodb/include/innodb-page-compression.inc
index 3acbeaf0988..0e7ae8cf029 100644
--- a/mysql-test/suite/innodb/include/innodb-page-compression.inc
+++ b/mysql-test/suite/innodb/include/innodb-page-compression.inc
@@ -1,8 +1,3 @@
---disable_warnings
-set global innodb_file_format = `Barracuda`;
-set global innodb_file_per_table = on;
---enable_warnings
-
create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
diff --git a/mysql-test/suite/innodb/r/alter_crash.result b/mysql-test/suite/innodb/r/alter_crash.result
index 3b6a5d1b39a..5bf25cf8592 100644
--- a/mysql-test/suite/innodb/r/alter_crash.result
+++ b/mysql-test/suite/innodb/r/alter_crash.result
@@ -46,7 +46,7 @@ ERROR HY000: Lost connection to MySQL server during query
# Restart mysqld after the crash and reconnect.
SELECT * FROM information_schema.innodb_sys_tables
WHERE table_id = ID;
-TABLE_ID NAME FLAG N_COLS SPACE FILE_FORMAT ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
+TABLE_ID NAME FLAG N_COLS SPACE ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
# Files in datadir after manual recovery.
t1.frm
t1.ibd
@@ -84,7 +84,7 @@ ERROR HY000: Lost connection to MySQL server during query
# Startup the server after the crash
SELECT * FROM information_schema.innodb_sys_tables
WHERE name LIKE 'test/#sql-%';
-TABLE_ID NAME FLAG N_COLS SPACE FILE_FORMAT ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
+TABLE_ID NAME FLAG N_COLS SPACE ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
SHOW TABLES;
Tables_in_test
t2
@@ -121,7 +121,7 @@ ERROR HY000: Lost connection to MySQL server during query
# Restart mysqld after the crash and reconnect.
SELECT * FROM information_schema.innodb_sys_tables
WHERE table_id = ID;
-TABLE_ID NAME FLAG N_COLS SPACE FILE_FORMAT ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
+TABLE_ID NAME FLAG N_COLS SPACE ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
# Files in datadir after manual recovery.
t1.frm
t1.ibd
diff --git a/mysql-test/suite/innodb/r/alter_rename_existing.result b/mysql-test/suite/innodb/r/alter_rename_existing.result
index 881518595de..8fc54adbd10 100644
--- a/mysql-test/suite/innodb/r/alter_rename_existing.result
+++ b/mysql-test/suite/innodb/r/alter_rename_existing.result
@@ -58,15 +58,15 @@ ALTER TABLE t1 ADD COLUMN d INT, ALGORITHM=COPY;
# while a blocking t1.ibd file exists.
#
SET GLOBAL innodb_file_per_table=ON;
-ALTER TABLE t1 ADD COLUMN e1 INT, ALGORITHM=INPLACE;
+ALTER TABLE t1 FORCE, ALGORITHM=INPLACE;
ERROR HY000: Tablespace for table 'test/t1' exists. Please DISCARD the tablespace before IMPORT
-ALTER TABLE t1 ADD COLUMN e2 INT, ALGORITHM=COPY;
+ALTER TABLE t1 FORCE, ALGORITHM=COPY;
ERROR HY000: Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME' (errno: 184 "Tablespace already exists")
#
# Delete the blocking file called MYSQLD_DATADIR/test/t1.ibd
# Move t1 to file-per-table using ALGORITHM=INPLACE with no blocking t1.ibd.
#
-ALTER TABLE t1 ADD COLUMN e INT, ALGORITHM=INPLACE;
+ALTER TABLE t1 FORCE, ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -74,7 +74,6 @@ t1 CREATE TABLE `t1` (
`b` char(20) DEFAULT NULL,
`c` int(11) DEFAULT NULL,
`d` int(11) DEFAULT NULL,
- `e` int(11) DEFAULT NULL,
UNIQUE KEY `a` (`a`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
SELECT name, space=0 FROM information_schema.innodb_sys_tables WHERE name = 'test/t1';
diff --git a/mysql-test/suite/innodb/r/create-index-debug.result b/mysql-test/suite/innodb/r/create-index-debug.result
index 99f6efe9bfe..9d266c68af3 100644
--- a/mysql-test/suite/innodb/r/create-index-debug.result
+++ b/mysql-test/suite/innodb/r/create-index-debug.result
@@ -10,9 +10,6 @@ CHAR(255) NOT NULL, f13 CHAR(255) NOT NULL, f14 CHAR(255) NOT NULL,f15
CHAR(255) NOT NULL, f16 CHAR(255) NOT NULL, f17 CHAR(255) NOT NULL,f18
CHAR(255) NOT NULL)
ENGINE=INNODB ROW_FORMAT=DYNAMIC;
-Warnings:
-Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
-Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
INSERT INTO t1
VALUES('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r');
INSERT INTO t1 SELECT * FROM t1;
diff --git a/mysql-test/suite/innodb/r/ddl_purge.result b/mysql-test/suite/innodb/r/ddl_purge.result
new file mode 100644
index 00000000000..45f4c99e97b
--- /dev/null
+++ b/mysql-test/suite/innodb/r/ddl_purge.result
@@ -0,0 +1,25 @@
+CREATE TABLE t0 (pk INT PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t1 (pk INT PRIMARY KEY, b INT) ENGINE=InnoDB;
+connect con1,localhost,root,,test;
+BEGIN;
+INSERT INTO t0 SET pk=1;
+connect con2,localhost,root,,test;
+BEGIN;
+INSERT INTO t0 SET pk=2;
+connection default;
+SET DEBUG_SYNC='alter_table_inplace_after_lock_downgrade SIGNAL prepared WAIT_FOR logged';
+ALTER TABLE t1 FORCE;
+connection con1;
+SET DEBUG_SYNC='now WAIT_FOR prepared';
+INSERT INTO t1 SET pk=1;
+COMMIT;
+disconnect con1;
+connection con2;
+UPDATE t1 SET b=1;
+DELETE FROM t1;
+ROLLBACK;
+SET DEBUG_SYNC='now SIGNAL logged';
+disconnect con2;
+connection default;
+SET DEBUG_SYNC='RESET';
+DROP TABLE t0,t1;
diff --git a/mysql-test/suite/innodb/r/dml_purge.result b/mysql-test/suite/innodb/r/dml_purge.result
new file mode 100644
index 00000000000..f5a919f7a12
--- /dev/null
+++ b/mysql-test/suite/innodb/r/dml_purge.result
@@ -0,0 +1,27 @@
+#
+# MDEV-12288 Reset DB_TRX_ID when the history is removed,
+# to speed up MVCC
+#
+SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
+CREATE TABLE t1(a INT PRIMARY KEY, b INT NOT NULL)
+ROW_FORMAT=REDUNDANT ENGINE=InnoDB;
+INSERT INTO t1 VALUES(1,2),(3,4);
+UPDATE t1 SET b=-3 WHERE a=3;
+SET GLOBAL innodb_fast_shutdown=0;
+Clustered index root page contents:
+N_RECS=2; LEVEL=0
+header=0x010000030087 (a=0x696e66696d756d00)
+header=0x0000100900a6 (a=0x80000001,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
+ b=0x80000002)
+header=0x000018090074 (a=0x80000003,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
+ b=0x7ffffffd)
+header=0x030008030000 (a=0x73757072656d756d00)
+SELECT * FROM t1;
+a b
+1 2
+3 -3
+DROP TABLE t1;
diff --git a/mysql-test/suite/innodb/r/fake_changes-7000.result b/mysql-test/suite/innodb/r/fake_changes-7000.result
deleted file mode 100644
index e41020b7d74..00000000000
--- a/mysql-test/suite/innodb/r/fake_changes-7000.result
+++ /dev/null
@@ -1,6 +0,0 @@
-create table t1 (i int) engine=InnoDB;
-set innodb_fake_changes = 1;
-insert into t1 values (1);
-ERROR HY000: Got error 131 "Command not supported by database" during COMMIT
-set innodb_fake_changes = 0;
-drop table t1;
diff --git a/mysql-test/suite/innodb/r/group_commit_crash.result b/mysql-test/suite/innodb/r/group_commit_crash.result
index c9daf347ee1..005049df281 100644
--- a/mysql-test/suite/innodb/r/group_commit_crash.result
+++ b/mysql-test/suite/innodb/r/group_commit_crash.result
@@ -123,5 +123,3 @@ delete from t1;
DROP TABLE t1;
DROP TABLE t2;
DROP PROCEDURE setcrash;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
diff --git a/mysql-test/suite/innodb/r/group_commit_crash_no_optimize_thread.result b/mysql-test/suite/innodb/r/group_commit_crash_no_optimize_thread.result
index a3937b5ae3a..846500ad2b1 100644
--- a/mysql-test/suite/innodb/r/group_commit_crash_no_optimize_thread.result
+++ b/mysql-test/suite/innodb/r/group_commit_crash_no_optimize_thread.result
@@ -123,5 +123,3 @@ delete from t1;
DROP TABLE t1;
DROP TABLE t2;
DROP PROCEDURE setcrash;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
diff --git a/mysql-test/suite/innodb/r/innodb-16k.result b/mysql-test/suite/innodb/r/innodb-16k.result
index a34640310c3..07b40269e8f 100644
--- a/mysql-test/suite/innodb/r/innodb-16k.result
+++ b/mysql-test/suite/innodb/r/innodb-16k.result
@@ -1,7 +1,4 @@
call mtr.add_suppression("InnoDB: Cannot add field .* in table .* because after adding it, the row size is .* which is greater than maximum allowed size (.*) for a record on index leaf page.");
-SET GLOBAL innodb_large_prefix = OFF;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
# Test 1) Show the page size from Information Schema
SELECT variable_value FROM information_schema.global_status
WHERE LOWER(variable_name) = 'innodb_page_size';
@@ -970,5 +967,3 @@ COL196 TEXT,
COL197 TEXT)
row_format=compact,ENGINE=INNODB;
ERROR 42000: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
diff --git a/mysql-test/suite/innodb/r/innodb-alter-debug.result b/mysql-test/suite/innodb/r/innodb-alter-debug.result
index d580a641d81..d455e54be3d 100644
--- a/mysql-test/suite/innodb/r/innodb-alter-debug.result
+++ b/mysql-test/suite/innodb/r/innodb-alter-debug.result
@@ -33,7 +33,7 @@ engine = innodb;
insert into t1 select 1, 1;
insert into t1 select 2, 2;
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL s1 WAIT_FOR s2';
-alter table t1 add b int, ALGORITHM=inplace;
+alter table t1 force, add b int, ALGORITHM=inplace;
/* connection con1 */
connect con1,localhost,root,,;
SET DEBUG_SYNC = 'now WAIT_FOR s1';
@@ -42,10 +42,10 @@ ERROR 23000: Duplicate entry '1' for key 'uk'
SET DEBUG_SYNC = 'now SIGNAL s2';
/* connection default */
connection default;
-/* reap */ alter table t1 add b int, ALGORITHM=inplace;
+/* reap */ alter table t1 force, add b int, ALGORITHM=inplace;
ERROR 23000: Duplicate entry '1' for key 'uk'
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL s1 WAIT_FOR s2';
-alter table t1 add b int, ALGORITHM=inplace;;
+alter table t1 force, add b int, ALGORITHM=inplace;;
/* connection con1 */
connection con1;
set DEBUG_SYNC = 'now WAIT_FOR s1';
@@ -55,7 +55,7 @@ SET DEBUG_SYNC = 'now SIGNAL s2';
disconnect con1;
/* connection default */
connection default;
-/* reap */ alter table t1 add b int, ALGORITHM=inplace;
+/* reap */ alter table t1 force, add b int, ALGORITHM=inplace;
ERROR 23000: Duplicate entry '1' for key 'uk'
SET DEBUG_SYNC = 'RESET';
drop table t1;
diff --git a/mysql-test/suite/innodb/r/innodb-alter-nullable.result b/mysql-test/suite/innodb/r/innodb-alter-nullable.result
index 7048f49f4a2..f2c0643f0f1 100644
--- a/mysql-test/suite/innodb/r/innodb-alter-nullable.result
+++ b/mysql-test/suite/innodb/r/innodb-alter-nullable.result
@@ -54,6 +54,6 @@ connection default;
ALTER TABLE t MODIFY c2 INT NULL, ALGORITHM=INPLACE;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
WHERE NAME='test/t';
-TABLE_ID NAME FLAG N_COLS SPACE FILE_FORMAT ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
-# test/t 33 6 # Barracuda Dynamic 0 Single
+TABLE_ID NAME FLAG N_COLS SPACE ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
+# test/t 33 6 # Dynamic 0 Single
DROP TABLE t;
diff --git a/mysql-test/suite/innodb/r/innodb-alter.result b/mysql-test/suite/innodb/r/innodb-alter.result
index 8bf66bb8914..de69845dddb 100644
--- a/mysql-test/suite/innodb/r/innodb-alter.result
+++ b/mysql-test/suite/innodb/r/innodb-alter.result
@@ -440,6 +440,27 @@ tt CREATE TABLE `tt` (
PRIMARY KEY (`pk`),
FULLTEXT KEY `ct` (`ct`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE tt ADD COLUMN c CHAR(1) NOT NULL FIRST, LOCK=NONE;
+ERROR 0A000: LOCK=NONE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try LOCK=SHARED
+ALTER TABLE tt ADD COLUMN c CHAR(1) NOT NULL, LOCK=NONE;
+ERROR 0A000: LOCK=NONE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try LOCK=SHARED
+CREATE TABLE tu (
+pk INT PRIMARY KEY, FTS_DOC_ID BIGINT UNSIGNED NOT NULL, t TEXT,
+FULLTEXT INDEX(t)
+) ENGINE=InnoDB;
+ALTER TABLE tu ADD COLUMN c CHAR(1) NOT NULL FIRST, LOCK=NONE;
+ERROR 0A000: LOCK=NONE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try LOCK=SHARED
+ALTER TABLE tu ADD COLUMN c CHAR(1) NOT NULL, LOCK=NONE;
+DROP TABLE tu;
+CREATE TABLE tv (
+pk INT PRIMARY KEY, FTS_DOC_ID BIGINT UNSIGNED NOT NULL, t TEXT,
+UNIQUE INDEX FTS_DOC_ID_INDEX(FTS_DOC_ID),
+FULLTEXT INDEX(t)
+) ENGINE=InnoDB;
+ALTER TABLE tv ADD COLUMN c CHAR(1) NOT NULL FIRST, LOCK=NONE;
+ERROR 0A000: LOCK=NONE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try LOCK=SHARED
+ALTER TABLE tv ADD COLUMN c CHAR(1) NOT NULL, LOCK=NONE;
+DROP TABLE tv;
ALTER TABLE t1o CHANGE c1 dB_row_Id INT, ALGORITHM=COPY;
ERROR 42000: Incorrect column name 'dB_row_Id'
ALTER TABLE t1o CHANGE c1 dB_row_Id INT, ALGORITHM=INPLACE;
diff --git a/mysql-test/suite/innodb/r/innodb-changed-pages.result b/mysql-test/suite/innodb/r/innodb-changed-pages.result
deleted file mode 100644
index 392b5e64e2e..00000000000
--- a/mysql-test/suite/innodb/r/innodb-changed-pages.result
+++ /dev/null
@@ -1,72 +0,0 @@
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 10 AND end_lsn > 20 ;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA . `INNODB_CHANGED_PAGES` AS table1 WHERE ( ( (NOT ( ( ( ( (NOT ( table1 . `page_id` <> table1 . `start_lsn` AND table1 . `space_id` <> 8) AND table1 . `page_id` >= table1 . `end_lsn`) OR table1 . `end_lsn` = table1 . `space_id`) AND table1 . `end_lsn` <> table1 . `page_id`) OR table1 . `end_lsn` < 8) AND table1 . `space_id` >= '2000-06-10 11:33:07.046821') AND table1 . `end_lsn` >= 5) AND table1 . `start_lsn` < 'mm') OR table1 . `end_lsn` != table1 . `end_lsn`) HAVING ( table1 . `start_lsn` < '2005-09-09 01:34:19.012946' OR table1 . `page_id` < 6) ORDER BY table1 . `start_lsn`
-LIMIT 3;
-space_id page_id start_lsn end_lsn
-Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: 'mm'
-Warning 1292 Truncated incorrect DOUBLE value: '2005-09-09 01:34:19.012946'
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 2000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn <= 2000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE end_lsn > 2000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE end_lsn >= 2000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE end_lsn > 2000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE end_lsn >= 2000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 and end_lsn < 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 and end_lsn < 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 and end_lsn <= 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 and end_lsn <= 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn = 2000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE end_lsn = 2000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 2000000 or end_lsn < 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn <= 2000000 or end_lsn < 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 2000000 or end_lsn <= 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn <= 2000000 or end_lsn <= 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 or end_lsn < 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 or end_lsn < 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 or end_lsn <= 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 or end_lsn <= 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 2000000 or end_lsn > 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn <= 2000000 or end_lsn > 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 2000000 or end_lsn >= 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn <= 2000000 or end_lsn >= 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 or end_lsn > 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 or end_lsn > 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 or end_lsn >= 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 or end_lsn >= 3000000;
-space_id page_id start_lsn end_lsn
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE (start_lsn > 2000000 and end_lsn < 3000000) or (start_lsn > 4000000 and end_lsn < 5000000);
-space_id page_id start_lsn end_lsn
diff --git a/mysql-test/suite/innodb/r/innodb-fk-warnings.result b/mysql-test/suite/innodb/r/innodb-fk-warnings.result
index 792cae85b55..fc3f45f3d0a 100644
--- a/mysql-test/suite/innodb/r/innodb-fk-warnings.result
+++ b/mysql-test/suite/innodb/r/innodb-fk-warnings.result
@@ -27,7 +27,7 @@ show warnings;
Level Code Message
Warning 150 Create table '`test`.`t2`' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns near ' foreign key a (a) references t1(a)) engine=innodb'.
Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `t2`
drop table t1;
create table t1(a int not null primary key, b int) engine=innodb;
create table t2(a int, b int, constraint a foreign key a (a) references t1(a),
@@ -36,7 +36,7 @@ ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint
show warnings;
Level Code Message
Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `t2`
create table t2(a int, b int, constraint a foreign key a (a) references t1(a)) engine=innodb;
alter table t2 add constraint b foreign key (b) references t2(b);
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
@@ -44,7 +44,7 @@ show warnings;
Level Code Message
Warning 150 Alter table '`test`.`t2`' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns near ' foreign key (b) references t2(b)'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `#sql-temporary`
drop table t2, t1;
create table t1 (f1 integer primary key) engine=innodb;
alter table t1 add constraint c1 foreign key (f1) references t11(f1);
@@ -53,7 +53,7 @@ show warnings;
Level Code Message
Warning 150 Alter table `test`.`t1` with foreign key constraint failed. Referenced table `test`.`t11` not found in the data dictionary near ' foreign key (f1) references t11(f1)'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `#sql-temporary`
drop table t1;
create temporary table t1(a int not null primary key, b int, key(b)) engine=innodb;
create temporary table t2(a int, foreign key(a) references t1(a)) engine=innodb;
@@ -76,14 +76,14 @@ show warnings;
Level Code Message
Warning 150 Create table `mysqld.1`.`t2` with foreign key constraint failed. Referenced table `mysqld.1`.`t1` not found in the data dictionary near 'foreign key(a) references t1(a)) engine=innodb'.
Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `t2`
alter table t1 add foreign key(b) references t1(a);
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
show warnings;
Level Code Message
Warning 150 Alter table `mysqld.1`.`t1` with foreign key constraint failed. Referenced table `mysqld.1`.`t1` not found in the data dictionary near 'foreign key(b) references t1(a)'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `#sql-temporary`
drop table t1;
create table t1(a int not null primary key, b int, key(b)) engine=innodb;
alter table t1 add foreign key(a,b) references t1(a);
@@ -106,14 +106,14 @@ show warnings;
Level Code Message
Warning 150 Alter table `test`.`t1` with foreign key constraint failed. You have defined a SET NULL condition but column 'f1' is defined as NOT NULL in ' foreign key (f1) references t1(f1) on update set null' near ' on update set null'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `#sql-temporary`
create table t2(a int not null, foreign key(a) references t1(f1) on delete set null) engine=innodb;
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
show warnings;
Level Code Message
Warning 150 Create table `test`.`t2` with foreign key constraint failed. You have defined a SET NULL condition but column 'a' is defined as NOT NULL in 'foreign key(a) references t1(f1) on delete set null) engine=innodb' near ' on delete set null) engine=innodb'.
Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `t2`
drop table t1;
create table t1 (id int not null primary key, f1 int, f2 int, key(f1)) engine=innodb;
create table t2(a char(20), key(a), foreign key(a) references t1(f1)) engine=innodb;
@@ -122,5 +122,5 @@ show warnings;
Level Code Message
Warning 150 Create table `test`.`t2` with foreign key constraint failed. Field type or character set for column 'a' does not mach referenced column 'f1' near 'foreign key(a) references t1(f1)) engine=innodb'.
Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `t2`
drop table t1;
diff --git a/mysql-test/suite/innodb/r/innodb-fk.result b/mysql-test/suite/innodb/r/innodb-fk.result
index 2eb19764769..4efa0214999 100644
--- a/mysql-test/suite/innodb/r/innodb-fk.result
+++ b/mysql-test/suite/innodb/r/innodb-fk.result
@@ -53,7 +53,7 @@ Level Code Message
Warning 150 Create table `test`.`t2` with foreign key constraint failed. Referenced table `test`.`t3` not found in the data dictionary near ' FOREIGN KEY (f3) REFERENCES t3 (id) ON DELETE CASCADE
) ENGINE=InnoDB'.
Error 1005 Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `t2`
CREATE TABLE t2 (
id int(11) NOT NULL AUTO_INCREMENT,
f2 int(11) NOT NULL,
@@ -67,7 +67,7 @@ show warnings;
Level Code Message
Warning 150 Alter table `test`.`t2` with foreign key constraint failed. Referenced table `test`.`t3` not found in the data dictionary near ' FOREIGN KEY (f3) REFERENCES t3 (id) ON DELETE CASCADE'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `#sql-temporary`
drop table t2;
drop table t1;
CREATE DATABASE kg_test1;
diff --git a/mysql-test/suite/innodb/r/innodb-fkcheck.result b/mysql-test/suite/innodb/r/innodb-fkcheck.result
index c6beabb0f50..efa227e4035 100644
--- a/mysql-test/suite/innodb/r/innodb-fkcheck.result
+++ b/mysql-test/suite/innodb/r/innodb-fkcheck.result
@@ -37,7 +37,7 @@ ERROR HY000: Can't create table `bug_fk`.`b` (errno: 150 "Foreign key constraint
show warnings;
Level Code Message
Error 1005 Can't create table `bug_fk`.`b` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `b`
DROP TABLE IF EXISTS d;
Warnings:
Note 1051 Unknown table 'bug_fk.d'
@@ -76,7 +76,7 @@ ERROR HY000: Can't create table `bug_fk`.`b` (errno: 150 "Foreign key constraint
show warnings;
Level Code Message
Error 1005 Can't create table `bug_fk`.`b` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `b`
set foreign_key_checks=0;
drop table c;
drop table d;
diff --git a/mysql-test/suite/innodb/r/innodb-flush-changed-page-bitmaps.result b/mysql-test/suite/innodb/r/innodb-flush-changed-page-bitmaps.result
deleted file mode 100644
index 5f098b8ecbf..00000000000
--- a/mysql-test/suite/innodb/r/innodb-flush-changed-page-bitmaps.result
+++ /dev/null
@@ -1,4 +0,0 @@
-FLUSH NO_WRITE_TO_BINLOG changed_page_bitmaps;
-select * from information_schema.changed_page_bitmaps;
-dummy
-0
diff --git a/mysql-test/suite/innodb/r/innodb-index-debug.result b/mysql-test/suite/innodb/r/innodb-index-debug.result
index b1f8c9ad3cc..5d161e5e6ca 100644
--- a/mysql-test/suite/innodb/r/innodb-index-debug.result
+++ b/mysql-test/suite/innodb/r/innodb-index-debug.result
@@ -83,7 +83,7 @@ create table t1(k1 int auto_increment primary key,
k2 char(200),k3 char(200))engine=innodb;
SET DEBUG_SYNC= 'row_merge_after_scan
SIGNAL opened WAIT_FOR flushed';
-ALTER TABLE t1 ADD COLUMN k4 int;
+ALTER TABLE t1 FORCE, ADD COLUMN k4 int;
connection default;
SET DEBUG_SYNC= 'now WAIT_FOR opened';
SET debug = '+d,row_log_tmpfile_fail';
@@ -95,7 +95,7 @@ SET DEBUG_SYNC= 'now SIGNAL flushed';
SET DEBUG_DBUG = @saved_debug_dbug;
connection con1;
/*con1 reap*/ ALTER TABLE t1 ADD COLUMN k4 int;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SELECT COUNT(k1),k2,k3 FROM t1 GROUP BY k2,k3;
COUNT(k1) k2 k3
480 aaa bbb
diff --git a/mysql-test/suite/innodb/r/innodb-index-online-fk.result b/mysql-test/suite/innodb/r/innodb-index-online-fk.result
index 4bd4b060ab3..47fc8e8b840 100644
--- a/mysql-test/suite/innodb/r/innodb-index-online-fk.result
+++ b/mysql-test/suite/innodb/r/innodb-index-online-fk.result
@@ -127,6 +127,7 @@ SYS_TABLESPACES
SYS_VIRTUAL
mysql/innodb_index_stats
mysql/innodb_table_stats
+mysql/transaction_registry
test/child
test/parent
INSERT INTO child VALUES(5,4);
@@ -318,6 +319,7 @@ SYS_TABLESPACES
SYS_VIRTUAL
mysql/innodb_index_stats
mysql/innodb_table_stats
+mysql/transaction_registry
test/child
test/parent
ALTER TABLE child ADD PRIMARY KEY idx (a3), CHANGE a1 a3 INT,
@@ -343,6 +345,7 @@ SYS_TABLESPACES
SYS_VIRTUAL
mysql/innodb_index_stats
mysql/innodb_table_stats
+mysql/transaction_registry
test/child
test/parent
SHOW CREATE TABLE child;
@@ -379,6 +382,7 @@ SYS_TABLESPACES
SYS_VIRTUAL
mysql/innodb_index_stats
mysql/innodb_table_stats
+mysql/transaction_registry
test/child
test/parent
SHOW CREATE TABLE child;
@@ -415,6 +419,7 @@ SYS_TABLESPACES
SYS_VIRTUAL
mysql/innodb_index_stats
mysql/innodb_table_stats
+mysql/transaction_registry
test/child
test/parent
SHOW CREATE TABLE child;
diff --git a/mysql-test/suite/innodb/r/innodb-index-online.result b/mysql-test/suite/innodb/r/innodb-index-online.result
index 3134c64c8c6..c646645ba7a 100644
--- a/mysql-test/suite/innodb/r/innodb-index-online.result
+++ b/mysql-test/suite/innodb/r/innodb-index-online.result
@@ -37,11 +37,11 @@ connection con1;
SET @saved_debug_dbug = @@SESSION.debug_dbug;
SET DEBUG_DBUG = '+d,innodb_OOM_prepare_inplace_alter';
ALTER TABLE t1 ADD UNIQUE INDEX(c2);
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET DEBUG_DBUG = @saved_debug_dbug;
SET DEBUG_DBUG = '+d,innodb_OOM_inplace_alter';
CREATE UNIQUE INDEX c2 ON t1(c2);
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET DEBUG_DBUG = @saved_debug_dbug;
CREATE UNIQUE INDEX c2 ON t1(c2);
DROP INDEX c2 ON t1;
diff --git a/mysql-test/suite/innodb/r/innodb-page-cleaners.result b/mysql-test/suite/innodb/r/innodb-page-cleaners.result
new file mode 100644
index 00000000000..0954e42cf9f
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb-page-cleaners.result
@@ -0,0 +1,45 @@
+SET @saved_page_cleaners = @@GLOBAL.innodb_page_cleaners;
+create table t1 (a int not null primary key auto_increment,
+b bigint,
+c varchar(200),
+d int,
+key b (b),
+key d (d)) engine=INNODB;
+set GLOBAL innodb_page_cleaners = 4;
+connect con1,localhost,root,,;
+connection con1;
+update t1 set b = b + 5, d = d + 1 where a between 1 and 2000;
+connect con2,localhost,root,,;
+connection con2;
+update t1 set b = b + 5, d = d + 1 where a between 3000 and 5000;
+connect con3,localhost,root,,;
+connection con3;
+update t1 set b = b + 5, d = d + 1 where a between 8000 and 12000;
+connection default;
+set GLOBAL innodb_page_cleaners = 2;
+set GLOBAL innodb_page_cleaners = 4;
+set GLOBAL innodb_page_cleaners = 6;
+connection con1;
+connection con2;
+connection con3;
+connection default;
+set GLOBAL innodb_page_cleaners = 4;
+connection con1;
+update t1 set b = b + 5, d = d + 1 where a between 1 and 2000;
+connection con2;
+update t1 set b = b + 5, d = d + 1 where a between 3000 and 5000;
+connection con3;
+update t1 set b = b + 5, d = d + 1 where a between 8000 and 12000;
+connection default;
+set GLOBAL innodb_page_cleaners = 3;
+set GLOBAL innodb_page_cleaners = 2;
+set GLOBAL innodb_page_cleaners = 1;
+connection con1;
+connection con2;
+connection con3;
+connection default;
+disconnect con1;
+disconnect con2;
+disconnect con3;
+DROP TABLE t1;
+SET GLOBAL innodb_page_cleaners=@saved_page_cleaners;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_default.result b/mysql-test/suite/innodb/r/innodb-page_compression_default.result
index 413450e1a6d..39a14072571 100644
--- a/mysql-test/suite/innodb/r/innodb-page_compression_default.result
+++ b/mysql-test/suite/innodb/r/innodb-page_compression_default.result
@@ -1,6 +1,4 @@
call mtr.add_suppression("InnoDB: Compression failed for space [0-9]+ name test/innodb_page_compressed[0-9] len [0-9]+ err 2 write_size [0-9]+.");
-set global innodb_file_format = `Barracuda`;
-set global innodb_file_per_table = on;
create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_snappy.result b/mysql-test/suite/innodb/r/innodb-page_compression_snappy.result
index 83a17f678e4..e99e55ed9a8 100644
--- a/mysql-test/suite/innodb/r/innodb-page_compression_snappy.result
+++ b/mysql-test/suite/innodb/r/innodb-page_compression_snappy.result
@@ -1,7 +1,5 @@
call mtr.add_suppression("InnoDB: Compression failed for space [0-9]+ name test/innodb_page_compressed[0-9] len [0-9]+ err 2 write_size [0-9]+.");
set global innodb_compression_algorithm = snappy;
-set global innodb_file_format = `Barracuda`;
-set global innodb_file_per_table = on;
create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
diff --git a/mysql-test/suite/innodb/r/innodb-table-online.result b/mysql-test/suite/innodb/r/innodb-table-online.result
index 09ec3bbc252..3ac00436e07 100644
--- a/mysql-test/suite/innodb/r/innodb-table-online.result
+++ b/mysql-test/suite/innodb/r/innodb-table-online.result
@@ -42,7 +42,7 @@ connection con1;
SET @saved_debug_dbug = @@SESSION.debug_dbug;
SET DEBUG_DBUG = '+d,innodb_OOM_prepare_inplace_alter';
ALTER TABLE t1 ROW_FORMAT=REDUNDANT, ALGORITHM=INPLACE, LOCK=NONE;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION DEBUG = @saved_debug_dbug;
Warnings:
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
@@ -50,7 +50,7 @@ SET SESSION DEBUG = '+d,innodb_OOM_inplace_alter';
Warnings:
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
ALTER TABLE t1 ROW_FORMAT=REDUNDANT, ALGORITHM=INPLACE, LOCK=NONE;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION DEBUG = @saved_debug_dbug;
Warnings:
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
diff --git a/mysql-test/suite/innodb/r/innodb-timeout.result b/mysql-test/suite/innodb/r/innodb-timeout.result
index f252ebac314..52ed1a6f9b4 100644
--- a/mysql-test/suite/innodb/r/innodb-timeout.result
+++ b/mysql-test/suite/innodb/r/innodb-timeout.result
@@ -57,3 +57,63 @@ disconnect a;
connection default;
drop table t1;
set global innodb_lock_wait_timeout=<initial_timeout>;
+#
+# MDEV-11379 - AliSQL: [Feature] Issue#8: SELECT FOR UPDATE WAIT
+#
+CREATE TABLE t1 (c1 INT, c2 INT) ENGINE=InnoDB;
+INSERT INTO t1 (c1,c2) values (1,1),(2,2),(3,3),(4,4);
+CREATE VIEW v1 AS SELECT * FROM t1 WHERE c1=4 FOR UPDATE NOWAIT;
+ERROR HY000: View's SELECT contains a '[NO]WAIT' clause
+CREATE VIEW v1 AS SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 0;
+ERROR HY000: View's SELECT contains a '[NO]WAIT' clause
+CREATE PROCEDURE p1() SELECT * FROM t1 WHERE c1=4 FOR UPDATE NOWAIT;
+ERROR 0A000: [NO]WAIT is not allowed in stored procedures
+CREATE PROCEDURE p1() SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 0;
+ERROR 0A000: [NO]WAIT is not allowed in stored procedures
+connect con1,localhost,root,,;
+LOCK TABLE t1 WRITE;
+connect con2,localhost,root,,;
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE NOWAIT;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 0;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+PREPARE stmt FROM 'SELECT * FROM t1 WHERE c1=4 FOR UPDATE NOWAIT';
+EXECUTE stmt;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+DEALLOCATE PREPARE stmt;
+PREPARE stmt FROM 'SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 0';
+EXECUTE stmt;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+DEALLOCATE PREPARE stmt;
+connection con1;
+INSERT INTO t1 VALUES(5,5);
+UNLOCK TABLES;
+set AUTOCOMMIT=0;
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE;
+connection con2;
+set AUTOCOMMIT=0;
+SET INNODB_LOCK_WAIT_TIMEOUT=1;
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE NOWAIT;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 0;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+connection con1;
+UPDATE t1 SET c2=5 WHERE c1=4;
+COMMIT;
+set AUTOCOMMIT=0;
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE;
+c1 c2
+4 5
+connection con2;
+set AUTOCOMMIT=0;
+SET INNODB_LOCK_WAIT_TIMEOUT=1;
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 10;
+connection con1;
+COMMIT;
+connection con2;
+disconnect con1;
+disconnect con2;
+connection default;
+DROP TABLE t1;
diff --git a/mysql-test/suite/innodb/r/innodb-wl5522-debug.result b/mysql-test/suite/innodb/r/innodb-wl5522-debug.result
index 99e9c49eee9..ec3856c20b8 100644
--- a/mysql-test/suite/innodb/r/innodb-wl5522-debug.result
+++ b/mysql-test/suite/innodb/r/innodb-wl5522-debug.result
@@ -323,7 +323,7 @@ ERROR HY000: Tablespace has been discarded for table `t1`
restore: t1 .ibd and .cfg files
SET SESSION debug_dbug="+d,ib_import_OOM_1";
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE test_wl5522.t1;
unlink: t1.ibd
@@ -336,7 +336,7 @@ ERROR HY000: Tablespace has been discarded for table `t1`
restore: t1 .ibd and .cfg files
SET SESSION debug_dbug="+d,ib_import_OOM_2";
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE test_wl5522.t1;
unlink: t1.ibd
@@ -349,7 +349,7 @@ ERROR HY000: Tablespace has been discarded for table `t1`
restore: t1 .ibd and .cfg files
SET SESSION debug_dbug="+d,ib_import_OOM_4";
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE test_wl5522.t1;
unlink: t1.ibd
@@ -362,7 +362,7 @@ ERROR HY000: Tablespace has been discarded for table `t1`
restore: t1 .ibd and .cfg files
SET SESSION debug_dbug="+d,ib_import_OOM_5";
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE test_wl5522.t1;
unlink: t1.ibd
@@ -375,7 +375,7 @@ ERROR HY000: Tablespace has been discarded for table `t1`
restore: t1 .ibd and .cfg files
SET SESSION debug_dbug="+d,ib_import_OOM_6";
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE test_wl5522.t1;
unlink: t1.ibd
@@ -388,7 +388,7 @@ ERROR HY000: Tablespace has been discarded for table `t1`
restore: t1 .ibd and .cfg files
SET SESSION debug_dbug="+d,ib_import_OOM_7";
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE test_wl5522.t1;
unlink: t1.ibd
@@ -401,7 +401,7 @@ ERROR HY000: Tablespace has been discarded for table `t1`
restore: t1 .ibd and .cfg files
SET SESSION debug_dbug="+d,ib_import_OOM_8";
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE test_wl5522.t1;
unlink: t1.ibd
@@ -414,7 +414,7 @@ ERROR HY000: Tablespace has been discarded for table `t1`
restore: t1 .ibd and .cfg files
SET SESSION debug_dbug="+d,ib_import_OOM_9";
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE test_wl5522.t1;
unlink: t1.ibd
@@ -427,7 +427,7 @@ ERROR HY000: Tablespace has been discarded for table `t1`
restore: t1 .ibd and .cfg files
SET SESSION debug_dbug="+d,ib_import_OOM_10";
ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE test_wl5522.t1;
unlink: t1.ibd
diff --git a/mysql-test/suite/innodb/r/innodb.result b/mysql-test/suite/innodb/r/innodb.result
index ed8720a0df9..aafd31ae6f1 100644
--- a/mysql-test/suite/innodb/r/innodb.result
+++ b/mysql-test/suite/innodb/r/innodb.result
@@ -2297,15 +2297,9 @@ a b
20 NULL
drop table t1;
SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
-SET GLOBAL innodb_large_prefix=OFF;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create table t1 (v varchar(65530), key(v));
Warnings:
-Warning 1071 Specified key was too long; max key length is 767 bytes
-SET GLOBAL innodb_large_prefix=default;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
+Warning 1071 Specified key was too long; max key length is 3072 bytes
drop table t1;
create table t1 (v varchar(65536));
Warnings:
@@ -2470,55 +2464,6 @@ t9 CREATE TABLE `t9` (
KEY `col1` (`col1`,`col2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1, t2, t3, t4, t5, t6, t7, t8, t9;
-SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
-SET GLOBAL innodb_large_prefix=OFF;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-create table t1 (col1 varchar(768), index(col1))
-character set = latin1 engine = innodb;
-Warnings:
-Warning 1071 Specified key was too long; max key length is 767 bytes
-create table t2 (col1 varbinary(768), index(col1))
-character set = latin1 engine = innodb;
-Warnings:
-Warning 1071 Specified key was too long; max key length is 767 bytes
-create table t3 (col1 text, index(col1(768)))
-character set = latin1 engine = innodb;
-Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
-create table t4 (col1 blob, index(col1(768)))
-character set = latin1 engine = innodb;
-Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
-SET GLOBAL innodb_large_prefix=default;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `col1` varchar(768) DEFAULT NULL,
- KEY `col1` (`col1`(767))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-drop table t1, t2, t3, t4;
-set global innodb_large_prefix=OFF;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-create table t1 (col1 varchar(768) primary key)
-character set = latin1 engine = innodb;
-ERROR 42000: Specified key was too long; max key length is 767 bytes
-create table t2 (col1 varbinary(768) primary key)
-character set = latin1 engine = innodb;
-ERROR 42000: Specified key was too long; max key length is 767 bytes
-create table t3 (col1 text, primary key(col1(768)))
-character set = latin1 engine = innodb;
-ERROR 42000: Specified key was too long; max key length is 767 bytes
-create table t4 (col1 blob, primary key(col1(768)))
-character set = latin1 engine = innodb;
-ERROR 42000: Specified key was too long; max key length is 767 bytes
-SET sql_mode = default;
-set global innodb_large_prefix=default;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
CREATE TABLE t1
(
id INT PRIMARY KEY
diff --git a/mysql-test/suite/innodb/r/innodb_bug14147491.result b/mysql-test/suite/innodb/r/innodb_bug14147491.result
index 40b9c7515c2..15d72b74922 100644
--- a/mysql-test/suite/innodb/r/innodb_bug14147491.result
+++ b/mysql-test/suite/innodb/r/innodb_bug14147491.result
@@ -1,3 +1,6 @@
+# Ensure that purge will not crash on the table after we corrupt it.
+SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
+SET GLOBAL innodb_fast_shutdown=0;
# Create and populate the table to be corrupted
set global innodb_file_per_table=ON;
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
diff --git a/mysql-test/suite/innodb/r/innodb_bug47167.result b/mysql-test/suite/innodb/r/innodb_bug47167.result
deleted file mode 100644
index 14977539b3b..00000000000
--- a/mysql-test/suite/innodb/r/innodb_bug47167.result
+++ /dev/null
@@ -1,32 +0,0 @@
-set @old_innodb_file_format_max=@@innodb_file_format_max;
-select @old_innodb_file_format_max;
-@old_innodb_file_format_max
-Barracuda
-set global innodb_file_format_max = Barracuda;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@innodb_file_format_max;
-@@innodb_file_format_max
-Barracuda
-set global innodb_file_format_max = DEFAULT;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@innodb_file_format_max;
-@@innodb_file_format_max
-Antelope
-set global innodb_file_format_max = @old_innodb_file_format_max;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@innodb_file_format_max;
-@@innodb_file_format_max
-Barracuda
-set global innodb_file_format_max = cheetah;
-ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'cheetah'
-set global innodb_file_format_max = Bear;
-ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'Bear'
-set global innodb_file_format_max = on;
-ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'ON'
-set global innodb_file_format_max = off;
-ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'off'
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
diff --git a/mysql-test/suite/innodb/r/innodb_bug54044.result b/mysql-test/suite/innodb/r/innodb_bug54044.result
index 0761c7764e6..01e8c58f896 100644
--- a/mysql-test/suite/innodb/r/innodb_bug54044.result
+++ b/mysql-test/suite/innodb/r/innodb_bug54044.result
@@ -19,6 +19,6 @@ DROP TABLE tmp;
CREATE TABLE t1 (a VARCHAR(3)) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('foo'),('bar');
FLUSH TABLES;
-CREATE TEMPORARY TABLE tmp ENGINE=InnoDB AS SELECT VALUES(a) FROM t1;
+CREATE TEMPORARY TABLE tmp ENGINE=InnoDB AS SELECT VALUE(a) FROM t1;
ERROR HY000: Can't create table `test`.`tmp` (errno: 168 "Unknown (generic) error from engine")
DROP TABLE t1;
diff --git a/mysql-test/suite/innodb/r/innodb_bulk_create_index_flush.result b/mysql-test/suite/innodb/r/innodb_bulk_create_index_flush.result
index c795ee044e6..d2b812642f6 100644
--- a/mysql-test/suite/innodb/r/innodb_bulk_create_index_flush.result
+++ b/mysql-test/suite/innodb/r/innodb_bulk_create_index_flush.result
@@ -33,7 +33,7 @@ ERROR 70100: Query execution was interrupted
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
-ALTER TABLE t1 ADD COLUMN content TEXT;
+ALTER TABLE t1 ADD COLUMN content TEXT, FORCE;
ERROR 70100: Query execution was interrupted
CHECK TABLE t1;
Table Op Msg_type Msg_text
diff --git a/mysql-test/suite/innodb/r/innodb_file_format.result b/mysql-test/suite/innodb/r/innodb_file_format.result
deleted file mode 100644
index 48f330f90fe..00000000000
--- a/mysql-test/suite/innodb/r/innodb_file_format.result
+++ /dev/null
@@ -1,66 +0,0 @@
-select @@innodb_file_format;
-@@innodb_file_format
-Barracuda
-select @@innodb_file_format_check;
-@@innodb_file_format_check
-1
-select @@innodb_file_format_max;
-@@innodb_file_format_max
-Barracuda
-set global innodb_file_format=antelope;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-set global innodb_file_format=barracuda;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-set global innodb_file_format=cheetah;
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'cheetah'
-select @@innodb_file_format;
-@@innodb_file_format
-Barracuda
-set global innodb_file_format=default;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@innodb_file_format;
-@@innodb_file_format
-Barracuda
-set global innodb_file_format=on;
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'ON'
-set global innodb_file_format=off;
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'off'
-select @@innodb_file_format;
-@@innodb_file_format
-Barracuda
-set global innodb_file_format_max=antelope;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-set global innodb_file_format_max=barracuda;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-set global innodb_file_format_max=cheetah;
-ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'cheetah'
-select @@innodb_file_format_max;
-@@innodb_file_format_max
-Barracuda
-set global innodb_file_format_max=default;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@innodb_file_format_max;
-@@innodb_file_format_max
-Antelope
-set global innodb_file_format=on;
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'ON'
-set global innodb_file_format=off;
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'off'
-select @@innodb_file_format_max;
-@@innodb_file_format_max
-Antelope
-set global innodb_file_format_max=antelope;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-set global innodb_file_format_check=off;
-ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
diff --git a/mysql-test/suite/innodb/r/innodb_information_schema.result b/mysql-test/suite/innodb/r/innodb_information_schema.result
index 36c76b03bd0..c1625f2bc3c 100644
--- a/mysql-test/suite/innodb/r/innodb_information_schema.result
+++ b/mysql-test/suite/innodb/r/innodb_information_schema.result
@@ -42,7 +42,6 @@ trx_isolation_level varchar(16) NO
trx_unique_checks int(1) NO 0
trx_foreign_key_checks int(1) NO 0
trx_last_foreign_key_error varchar(256) YES NULL
-trx_adaptive_hash_latched int(1) NO 0
trx_is_read_only int(1) NO 0
trx_autocommit_non_locking int(1) NO 0
trx_state trx_weight trx_tables_in_use trx_tables_locked trx_rows_locked trx_rows_modified trx_concurrency_tickets trx_isolation_level trx_unique_checks trx_foreign_key_checks
diff --git a/mysql-test/suite/innodb/r/innodb_mysql.result b/mysql-test/suite/innodb/r/innodb_mysql.result
index 4c815c7c212..3663c18ea44 100644
--- a/mysql-test/suite/innodb/r/innodb_mysql.result
+++ b/mysql-test/suite/innodb/r/innodb_mysql.result
@@ -238,14 +238,14 @@ select 1, max(1) from t1i where 1=99;
1 NULL
explain select count(*), min(7), max(7) from t1m, t1i;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1m system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1m system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t1i ALL NULL NULL NULL NULL 1
select count(*), min(7), max(7) from t1m, t1i;
count(*) min(7) max(7)
0 NULL NULL
explain select count(*), min(7), max(7) from t1m, t2i;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1m system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1m system NULL NULL NULL NULL 0 Const row not found
1 SIMPLE t2i ALL NULL NULL NULL NULL 1
select count(*), min(7), max(7) from t1m, t2i;
count(*) min(7) max(7)
@@ -1165,8 +1165,6 @@ a b
drop table t1,t2;
create table t1(f1 varchar(800) binary not null, key(f1))
character set utf8 collate utf8_general_ci;
-Warnings:
-Warning 1071 Specified key was too long; max key length is 767 bytes
insert into t1 values('aaa');
drop table t1;
CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c FLOAT, KEY b(b)) ENGINE = INNODB;
@@ -1546,13 +1544,11 @@ create table t1(a text) engine=innodb default charset=utf8;
insert into t1 values('aaa');
set statement sql_mode = 'NO_ENGINE_SUBSTITUTION' for
alter table t1 add index(a(1024));
-Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` text DEFAULT NULL,
- KEY `a` (`a`(255))
+ KEY `a` (`a`(1024))
) ENGINE=InnoDB DEFAULT CHARSET=utf8
drop table t1;
CREATE TABLE t1 (
@@ -1857,7 +1853,7 @@ explain
select b from t1 where a not in (select max(b) from t1,t2 group by a) group by a;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
-2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 0 const row not found
+2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 0 Const row not found
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 1
set optimizer_switch=@save_optimizer_switch;
DROP TABLE t1,t2;
diff --git a/mysql-test/suite/innodb/r/innodb_prefix_index_restart_server.result b/mysql-test/suite/innodb/r/innodb_prefix_index_restart_server.result
index 6fe101c58d7..620157d67b1 100644
--- a/mysql-test/suite/innodb/r/innodb_prefix_index_restart_server.result
+++ b/mysql-test/suite/innodb/r/innodb_prefix_index_restart_server.result
@@ -1,6 +1,3 @@
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
CREATE TABLE worklog5743 (
col_1_text TEXT(4000) , col_2_text TEXT(4000) ,
PRIMARY KEY (col_1_text(3072))
@@ -87,6 +84,3 @@ worklog5743;
col_1_text = REPEAT("a", 3500) col_2_text = REPEAT("o", 3500)
1 1
DROP TABLE worklog5743;
-SET GLOBAL innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
diff --git a/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result b/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result
index 4cde68b5505..79f0e73e745 100644
--- a/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result
+++ b/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result
@@ -1,5 +1,5 @@
select * from information_schema.innodb_trx;
-trx_id trx_state trx_started trx_requested_lock_id trx_wait_started trx_weight trx_mysql_thread_id trx_query trx_operation_state trx_tables_in_use trx_tables_locked trx_lock_structs trx_lock_memory_bytes trx_rows_locked trx_rows_modified trx_concurrency_tickets trx_isolation_level trx_unique_checks trx_foreign_key_checks trx_last_foreign_key_error trx_adaptive_hash_latched trx_is_read_only trx_autocommit_non_locking
+trx_id trx_state trx_started trx_requested_lock_id trx_wait_started trx_weight trx_mysql_thread_id trx_query trx_operation_state trx_tables_in_use trx_tables_locked trx_lock_structs trx_lock_memory_bytes trx_rows_locked trx_rows_modified trx_concurrency_tickets trx_isolation_level trx_unique_checks trx_foreign_key_checks trx_last_foreign_key_error trx_is_read_only trx_autocommit_non_locking
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_trx but the InnoDB storage engine is not installed
select * from information_schema.innodb_locks;
@@ -346,7 +346,7 @@ Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_buffer_page_lru but the InnoDB storage engine is not installed
select * from information_schema.innodb_buffer_stats;
select * from information_schema.innodb_sys_tables;
-TABLE_ID NAME FLAG N_COLS SPACE FILE_FORMAT ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
+TABLE_ID NAME FLAG N_COLS SPACE ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_sys_tables but the InnoDB storage engine is not installed
select * from information_schema.innodb_sys_tablestats;
@@ -374,7 +374,7 @@ ID FOR_COL_NAME REF_COL_NAME POS
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_sys_foreign_cols but the InnoDB storage engine is not installed
select * from information_schema.innodb_sys_tablespaces;
-SPACE NAME FLAG FILE_FORMAT ROW_FORMAT PAGE_SIZE ZIP_PAGE_SIZE SPACE_TYPE FS_BLOCK_SIZE FILE_SIZE ALLOCATED_SIZE
+SPACE NAME FLAG ROW_FORMAT PAGE_SIZE ZIP_PAGE_SIZE SPACE_TYPE FS_BLOCK_SIZE FILE_SIZE ALLOCATED_SIZE
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_sys_tablespaces but the InnoDB storage engine is not installed
select * from information_schema.innodb_sys_datafiles;
@@ -395,6 +395,6 @@ NAME CREATE_FILE CREATE_LINE OS_WAITS
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_mutexes but the InnoDB storage engine is not installed
select * from information_schema.innodb_sys_semaphore_waits;
-THREAD_ID OBJECT_NAME FILE LINE WAIT_TIME WAIT_OBJECT WAIT_TYPE HOLDER_THREAD_ID HOLDER_FILE HOLDER_LINE CREATED_FILE CREATED_LINE WRITER_THREAD RESERVATION_MODE READERS WAITERS_FLAG LOCK_WORD LAST_READER_FILE LAST_READER_LINE LAST_WRITER_FILE LAST_WRITER_LINE OS_WAIT_COUNT
+THREAD_ID OBJECT_NAME FILE LINE WAIT_TIME WAIT_OBJECT WAIT_TYPE HOLDER_THREAD_ID HOLDER_FILE HOLDER_LINE CREATED_FILE CREATED_LINE WRITER_THREAD RESERVATION_MODE READERS WAITERS_FLAG LOCK_WORD LAST_WRITER_FILE LAST_WRITER_LINE OS_WAIT_COUNT
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_sys_semaphore_waits but the InnoDB storage engine is not installed
diff --git a/mysql-test/suite/innodb/r/innodb_xtradb_compat.result b/mysql-test/suite/innodb/r/innodb_xtradb_compat.result
deleted file mode 100644
index 20b6ac4c892..00000000000
--- a/mysql-test/suite/innodb/r/innodb_xtradb_compat.result
+++ /dev/null
@@ -1,313 +0,0 @@
-select @@innodb_adaptive_hash_index_partitions, @@innodb_adaptive_hash_index_parts;
-@@innodb_adaptive_hash_index_partitions @@innodb_adaptive_hash_index_parts
-16 16
-set global innodb_adaptive_hash_index_partitions=1;
-ERROR HY000: Variable 'innodb_adaptive_hash_index_partitions' is a read only variable
-select @@innodb_buffer_pool_populate;
-@@innodb_buffer_pool_populate
-1
-set global innodb_buffer_pool_populate=1;
-ERROR HY000: Variable 'innodb_buffer_pool_populate' is a read only variable
-select @@innodb_cleaner_eviction_factor;
-@@innodb_cleaner_eviction_factor
-1
-set global innodb_cleaner_eviction_factor=1;
-Warnings:
-Warning 1287 Using innodb_cleaner_eviction_factor is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_cleaner_eviction_factor;
-@@innodb_cleaner_eviction_factor
-1
-select @@innodb_cleaner_flush_chunk_size;
-@@innodb_cleaner_flush_chunk_size
-16
-set global innodb_cleaner_flush_chunk_size=8;
-Warnings:
-Warning 1287 Using innodb_cleaner_flush_chunk_size is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_cleaner_flush_chunk_size;
-@@innodb_cleaner_flush_chunk_size
-16
-select @@innodb_cleaner_free_list_lwm;
-@@innodb_cleaner_free_list_lwm
-1
-set global innodb_cleaner_free_list_lwm=1;
-Warnings:
-Warning 1287 Using innodb_cleaner_free_list_lwm is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_cleaner_free_list_lwm;
-@@innodb_cleaner_free_list_lwm
-1
-select @@innodb_cleaner_lru_chunk_size;
-@@innodb_cleaner_lru_chunk_size
-1
-set global innodb_cleaner_lru_chunk_size=8;
-Warnings:
-Warning 1287 Using innodb_cleaner_lru_chunk_size is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_cleaner_lru_chunk_size;
-@@innodb_cleaner_lru_chunk_size
-1
-select @@innodb_cleaner_lsn_age_factor;
-@@innodb_cleaner_lsn_age_factor
-HIGH_CHECKPOINT
-set global innodb_cleaner_lsn_age_factor=HIGH_CHECKPOINT;
-Warnings:
-Warning 1287 Using innodb_cleaner_lsn_age_factor is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_cleaner_lsn_age_factor;
-@@innodb_cleaner_lsn_age_factor
-HIGH_CHECKPOINT
-select @@innodb_cleaner_max_flush_time;
-@@innodb_cleaner_max_flush_time
-1
-set global innodb_cleaner_max_flush_time=1;
-Warnings:
-Warning 1287 Using innodb_cleaner_max_flush_time is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_cleaner_max_flush_time;
-@@innodb_cleaner_max_flush_time
-1
-select @@innodb_cleaner_max_lru_time;
-@@innodb_cleaner_max_lru_time
-1
-set global innodb_cleaner_max_lru_time=1;
-Warnings:
-Warning 1287 Using innodb_cleaner_max_lru_time is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_cleaner_max_lru_time;
-@@innodb_cleaner_max_lru_time
-1
-select @@innodb_corrupt_table_action;
-@@innodb_corrupt_table_action
-salvage
-set global innodb_corrupt_table_action=salvage;
-Warnings:
-Warning 1287 Using innodb_corrupt_table_action is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_corrupt_table_action;
-@@innodb_corrupt_table_action
-salvage
-select @@innodb_empty_free_list_algorithm;
-@@innodb_empty_free_list_algorithm
-BACKOFF
-set global innodb_empty_free_list_algorithm=BACKOFF;
-Warnings:
-Warning 1287 Using innodb_empty_free_list_algorithm is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_empty_free_list_algorithm;
-@@innodb_empty_free_list_algorithm
-BACKOFF
-select @@innodb_fake_changes;
-@@innodb_fake_changes
-1
-set global innodb_fake_changes=1;
-Warnings:
-Warning 1287 Using innodb_fake_changes is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_fake_changes;
-@@innodb_fake_changes
-1
-# @@innodb_file_io_threads is absent
-select @@innodb_foreground_preflush;
-@@innodb_foreground_preflush
-EXPONENTIAL_BACKOFF
-set global innodb_foreground_preflush=EXPONENTIAL_BACKOFF;
-Warnings:
-Warning 1287 Using innodb_foreground_preflush is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_foreground_preflush;
-@@innodb_foreground_preflush
-EXPONENTIAL_BACKOFF
-select @@innodb_kill_idle_transaction;
-@@innodb_kill_idle_transaction
-1
-set global innodb_kill_idle_transaction=1;
-Warnings:
-Warning 1287 Using innodb_kill_idle_transaction is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_kill_idle_transaction;
-@@innodb_kill_idle_transaction
-1
-select @@innodb_locking_fake_changes;
-@@innodb_locking_fake_changes
-1
-set global innodb_locking_fake_changes=1;
-Warnings:
-Warning 1287 Using innodb_locking_fake_changes is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_locking_fake_changes;
-@@innodb_locking_fake_changes
-1
-select @@innodb_log_arch_expire_sec;
-@@innodb_log_arch_expire_sec
-1
-set global innodb_log_arch_expire_sec=1;
-Warnings:
-Warning 1287 Using innodb_log_arch_expire_sec is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_log_arch_expire_sec;
-@@innodb_log_arch_expire_sec
-1
-select @@innodb_log_block_size;
-@@innodb_log_block_size
-16
-set global innodb_log_block_size= 8;
-ERROR HY000: Variable 'innodb_log_block_size' is a read only variable
-select @@innodb_log_checksum_algorithm, @@innodb_log_checksums;
-@@innodb_log_checksum_algorithm @@innodb_log_checksums
-STRICT_INNODB 1
-set global innodb_log_checksum_algorithm=NONE;
-Warnings:
-Warning 1287 Using innodb_log_checksum_algorithm is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_log_checksum_algorithm, @@innodb_log_checksums;
-@@innodb_log_checksum_algorithm @@innodb_log_checksums
-NONE 0
-set global innodb_log_checksum_algorithm=STRICT_INNODB;
-Warnings:
-Warning 1287 Using innodb_log_checksum_algorithm is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_log_checksum_algorithm, @@innodb_log_checksums;
-@@innodb_log_checksum_algorithm @@innodb_log_checksums
-STRICT_INNODB 1
-select @@innodb_max_bitmap_file_size;
-@@innodb_max_bitmap_file_size
-1
-set global innodb_max_bitmap_file_size=1;
-Warnings:
-Warning 1287 Using innodb_max_bitmap_file_size is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_max_bitmap_file_size;
-@@innodb_max_bitmap_file_size
-1
-select @@innodb_max_changed_pages;
-@@innodb_max_changed_pages
-1
-set global innodb_max_changed_pages=1;
-Warnings:
-Warning 1287 Using innodb_max_changed_pages is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_max_changed_pages;
-@@innodb_max_changed_pages
-1
-select @@innodb_mirrored_log_groups;
-@@innodb_mirrored_log_groups
-8
-set global innodb_mirrored_log_groups= 4;
-ERROR HY000: Variable 'innodb_mirrored_log_groups' is a read only variable
-select @@innodb_priority_cleaner;
-@@innodb_priority_cleaner
-1
-set global innodb_priority_cleaner=1;
-Warnings:
-Warning 1287 Using innodb_priority_cleaner is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_priority_cleaner;
-@@innodb_priority_cleaner
-1
-select @@innodb_priority_io;
-@@innodb_priority_io
-1
-set global innodb_priority_io=1;
-Warnings:
-Warning 1287 Using innodb_priority_io is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_priority_io;
-@@innodb_priority_io
-1
-select @@innodb_priority_master;
-@@innodb_priority_master
-1
-set global innodb_priority_master=1;
-Warnings:
-Warning 1287 Using innodb_priority_master is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_priority_master;
-@@innodb_priority_master
-1
-select @@innodb_priority_purge;
-@@innodb_priority_purge
-1
-set global innodb_priority_purge=1;
-Warnings:
-Warning 1287 Using innodb_priority_purge is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_priority_purge;
-@@innodb_priority_purge
-1
-select @@innodb_sched_priority_cleaner;
-@@innodb_sched_priority_cleaner
-16
-set global innodb_sched_priority_cleaner=8;
-Warnings:
-Warning 1287 Using innodb_sched_priority_cleaner is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_sched_priority_cleaner;
-@@innodb_sched_priority_cleaner
-16
-select @@innodb_sched_priority_io;
-@@innodb_sched_priority_io
-16
-set global innodb_sched_priority_io=8;
-Warnings:
-Warning 1287 Using innodb_sched_priority_io is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_sched_priority_io;
-@@innodb_sched_priority_io
-16
-select @@innodb_sched_priority_master;
-@@innodb_sched_priority_master
-16
-set global innodb_sched_priority_master=8;
-Warnings:
-Warning 1287 Using innodb_sched_priority_master is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_sched_priority_master;
-@@innodb_sched_priority_master
-16
-select @@innodb_sched_priority_purge;
-@@innodb_sched_priority_purge
-16
-set global innodb_sched_priority_purge=8;
-Warnings:
-Warning 1287 Using innodb_sched_priority_purge is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_sched_priority_purge;
-@@innodb_sched_priority_purge
-16
-select @@innodb_show_locks_held;
-@@innodb_show_locks_held
-16
-set global innodb_show_locks_held=8;
-Warnings:
-Warning 1287 Using innodb_show_locks_held is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_show_locks_held;
-@@innodb_show_locks_held
-16
-select @@innodb_show_verbose_locks;
-@@innodb_show_verbose_locks
-1
-set global innodb_show_verbose_locks=1;
-Warnings:
-Warning 1287 Using innodb_show_verbose_locks is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_show_verbose_locks;
-@@innodb_show_verbose_locks
-1
-select @@innodb_track_changed_pages;
-@@innodb_track_changed_pages
-1
-set global innodb_track_changed_pages=1;
-ERROR HY000: Variable 'innodb_track_changed_pages' is a read only variable
-select @@innodb_track_redo_log_now;
-@@innodb_track_redo_log_now
-1
-set global innodb_track_redo_log_now=1;
-Warnings:
-Warning 1287 Using innodb_track_redo_log_now is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_track_redo_log_now;
-@@innodb_track_redo_log_now
-1
-select @@innodb_use_global_flush_log_at_trx_commit;
-@@innodb_use_global_flush_log_at_trx_commit
-1
-set global innodb_use_global_flush_log_at_trx_commit=1;
-Warnings:
-Warning 1287 Using innodb_use_global_flush_log_at_trx_commit is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_use_global_flush_log_at_trx_commit;
-@@innodb_use_global_flush_log_at_trx_commit
-1
-select @@innodb_use_stacktrace;
-@@innodb_use_stacktrace
-1
-set global innodb_use_stacktrace=1;
-ERROR HY000: Variable 'innodb_use_stacktrace' is a read only variable
-select @@innodb_log_archive;
-@@innodb_log_archive
-1
-set global innodb_log_archive=1;
-Warnings:
-Warning 1287 Using innodb_log_archive is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
-select @@innodb_log_archive;
-@@innodb_log_archive
-1
-select @@innodb_log_arch_dir;
-@@innodb_log_arch_dir
-ttt
-set global innodb_log_arch_dir="ttt";
-ERROR HY000: Variable 'innodb_log_arch_dir' is a read only variable
-FOUND 36 /Using [A-Za-z\-]* is deprecated and the parameter may be removed in future releases. Ignoning the parameter./ in mysqld.1.err
diff --git a/mysql-test/suite/innodb/r/instant_alter,32k.rdiff b/mysql-test/suite/innodb/r/instant_alter,32k.rdiff
new file mode 100644
index 00000000000..37c3c479e68
--- /dev/null
+++ b/mysql-test/suite/innodb/r/instant_alter,32k.rdiff
@@ -0,0 +1,113 @@
+--- instant_alter.result
++++ instant_alter,32k.result
+@@ -2,7 +2,7 @@
+ # MDEV-11369: Instant ADD COLUMN for InnoDB
+ #
+ CREATE TABLE t(a INT UNIQUE)ENGINE=InnoDB ROW_FORMAT=COMPACT;
+-ALTER TABLE t ADD e INT, ROW_FORMAT=COMPRESSED;
++ALTER TABLE t ADD e INT, ROW_FORMAT=DYNAMIC;
+ INSERT INTO t SET a=1;
+ SET @old_instant=
+ (SELECT variable_value FROM information_schema.global_status
+@@ -33,17 +33,17 @@
+ `c` int(11) NOT NULL,
+ `d` int(11) NOT NULL,
+ UNIQUE KEY `a` (`a`)
+-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
++) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
+ SELECT variable_value-@old_instant instants
+ FROM information_schema.global_status
+ WHERE variable_name = 'innodb_instant_alter_column';
+ instants
+-0
++1
+ SELECT variable_value-@old_instant instants
+ FROM information_schema.global_status
+ WHERE variable_name = 'innodb_instant_alter_column';
+ instants
+-0
++1
+ DROP TABLE t;
+ connect analyze, localhost, root;
+ connection default;
+@@ -374,7 +374,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -397,7 +397,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++5
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -410,7 +410,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
+@@ -734,7 +734,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -757,7 +757,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++5
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -770,7 +770,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
+@@ -1094,7 +1094,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -1117,7 +1117,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++5
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -1130,7 +1130,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
diff --git a/mysql-test/suite/innodb/r/instant_alter,4k.rdiff b/mysql-test/suite/innodb/r/instant_alter,4k.rdiff
new file mode 100644
index 00000000000..d274d834faa
--- /dev/null
+++ b/mysql-test/suite/innodb/r/instant_alter,4k.rdiff
@@ -0,0 +1,191 @@
+--- instant_alter.result
++++ instant_alter,4k.result
+@@ -181,7 +181,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++6
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -250,7 +250,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++4
+ connection default;
+ BEGIN;
+ UPDATE t2 SET d1 = repeat(id, 200);
+@@ -261,7 +261,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++4
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -271,7 +271,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++4
+ connection default;
+ ALTER TABLE t2 DROP p;
+ affected rows: 0
+@@ -374,7 +374,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++8
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -397,7 +397,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++28
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -410,7 +410,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++8
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
+@@ -600,7 +600,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++6
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -610,7 +610,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++4
+ connection default;
+ BEGIN;
+ UPDATE t2 SET d1 = repeat(id, 200);
+@@ -621,7 +621,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++4
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -631,7 +631,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++4
+ connection default;
+ ALTER TABLE t2 DROP p;
+ affected rows: 0
+@@ -734,7 +734,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++7
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -757,7 +757,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++23
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -770,7 +770,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++7
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
+@@ -960,7 +960,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++6
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -970,7 +970,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++4
+ connection default;
+ BEGIN;
+ UPDATE t2 SET d1 = repeat(id, 200);
+@@ -981,7 +981,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++4
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -991,7 +991,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++4
+ connection default;
+ ALTER TABLE t2 DROP p;
+ affected rows: 0
+@@ -1094,7 +1094,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++7
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -1117,7 +1117,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++23
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -1130,7 +1130,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++7
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
diff --git a/mysql-test/suite/innodb/r/instant_alter,64k.rdiff b/mysql-test/suite/innodb/r/instant_alter,64k.rdiff
new file mode 100644
index 00000000000..d9a398fc8c8
--- /dev/null
+++ b/mysql-test/suite/innodb/r/instant_alter,64k.rdiff
@@ -0,0 +1,113 @@
+--- instant_alter.result
++++ instant_alter,64k.result
+@@ -2,7 +2,7 @@
+ # MDEV-11369: Instant ADD COLUMN for InnoDB
+ #
+ CREATE TABLE t(a INT UNIQUE)ENGINE=InnoDB ROW_FORMAT=COMPACT;
+-ALTER TABLE t ADD e INT, ROW_FORMAT=COMPRESSED;
++ALTER TABLE t ADD e INT, ROW_FORMAT=DYNAMIC;
+ INSERT INTO t SET a=1;
+ SET @old_instant=
+ (SELECT variable_value FROM information_schema.global_status
+@@ -33,17 +33,17 @@
+ `c` int(11) NOT NULL,
+ `d` int(11) NOT NULL,
+ UNIQUE KEY `a` (`a`)
+-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
++) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
+ SELECT variable_value-@old_instant instants
+ FROM information_schema.global_status
+ WHERE variable_name = 'innodb_instant_alter_column';
+ instants
+-0
++1
+ SELECT variable_value-@old_instant instants
+ FROM information_schema.global_status
+ WHERE variable_name = 'innodb_instant_alter_column';
+ instants
+-0
++1
+ DROP TABLE t;
+ connect analyze, localhost, root;
+ connection default;
+@@ -374,7 +374,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -397,7 +397,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++3
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -410,7 +410,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
+@@ -734,7 +734,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -757,7 +757,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++3
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -770,7 +770,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
+@@ -1094,7 +1094,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -1117,7 +1117,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++3
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -1130,7 +1130,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++1
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
diff --git a/mysql-test/suite/innodb/r/instant_alter,8k.rdiff b/mysql-test/suite/innodb/r/instant_alter,8k.rdiff
new file mode 100644
index 00000000000..b96262866e5
--- /dev/null
+++ b/mysql-test/suite/innodb/r/instant_alter,8k.rdiff
@@ -0,0 +1,191 @@
+--- instant_alter.result
++++ instant_alter,8k.result
+@@ -240,7 +240,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++5
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -250,7 +250,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++3
+ connection default;
+ BEGIN;
+ UPDATE t2 SET d1 = repeat(id, 200);
+@@ -261,7 +261,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++3
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -271,7 +271,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++3
+ connection default;
+ ALTER TABLE t2 DROP p;
+ affected rows: 0
+@@ -374,7 +374,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++5
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -397,7 +397,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++13
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -410,7 +410,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++5
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
+@@ -600,7 +600,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++5
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -610,7 +610,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++3
+ connection default;
+ BEGIN;
+ UPDATE t2 SET d1 = repeat(id, 200);
+@@ -621,7 +621,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++3
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -631,7 +631,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++3
+ connection default;
+ ALTER TABLE t2 DROP p;
+ affected rows: 0
+@@ -734,7 +734,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++5
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -757,7 +757,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++13
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -770,7 +770,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++5
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
+@@ -960,7 +960,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++5
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -970,7 +970,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++3
+ connection default;
+ BEGIN;
+ UPDATE t2 SET d1 = repeat(id, 200);
+@@ -981,7 +981,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++3
+ connection default;
+ ROLLBACK;
+ connection analyze;
+@@ -991,7 +991,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/t2';
+ clust_index_size
+-1
++3
+ connection default;
+ ALTER TABLE t2 DROP p;
+ affected rows: 0
+@@ -1094,7 +1094,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++5
+ connection default;
+ ALTER TABLE big ADD COLUMN
+ (d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+@@ -1117,7 +1117,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-7
++13
+ connection default;
+ ROLLBACK;
+ CHECKSUM TABLE big;
+@@ -1130,7 +1130,7 @@
+ SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+ WHERE name = 'test/big';
+ clust_index_size
+-3
++5
+ connection default;
+ InnoDB 0 transactions not purged
+ DROP TABLE t1,t2,t3,big;
diff --git a/mysql-test/suite/innodb/r/instant_alter.result b/mysql-test/suite/innodb/r/instant_alter.result
new file mode 100644
index 00000000000..1580ba29717
--- /dev/null
+++ b/mysql-test/suite/innodb/r/instant_alter.result
@@ -0,0 +1,1221 @@
+#
+# MDEV-11369: Instant ADD COLUMN for InnoDB
+#
+CREATE TABLE t(a INT UNIQUE)ENGINE=InnoDB ROW_FORMAT=COMPACT;
+ALTER TABLE t ADD e INT, ROW_FORMAT=COMPRESSED;
+INSERT INTO t SET a=1;
+SET @old_instant=
+(SELECT variable_value FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column');
+ALTER TABLE t ADD b INT NOT NULL, ALGORITHM=COPY;
+affected rows: 1
+info: Records: 1 Duplicates: 0 Warnings: 0
+ALTER TABLE t ADD c INT NOT NULL, FORCE;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT variable_value-@old_instant instants
+FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column';
+instants
+0
+ALTER TABLE t ADD d INT NOT NULL;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT * FROM t;
+a e b c d
+1 NULL 0 0 0
+SHOW CREATE TABLE t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `e` int(11) DEFAULT NULL,
+ `b` int(11) NOT NULL,
+ `c` int(11) NOT NULL,
+ `d` int(11) NOT NULL,
+ UNIQUE KEY `a` (`a`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
+SELECT variable_value-@old_instant instants
+FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column';
+instants
+0
+SELECT variable_value-@old_instant instants
+FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column';
+instants
+0
+DROP TABLE t;
+connect analyze, localhost, root;
+connection default;
+SET timestamp = 42;
+SET time_zone='+03:00';
+SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+SET @old_instant=
+(SELECT variable_value FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column');
+CREATE TABLE t1
+(id INT PRIMARY KEY, c2 INT UNIQUE,
+c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'),
+SPATIAL INDEX(c3)) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+INSERT INTO t1 (id, c2) values(1,1);
+SELECT id,c2,ST_AsText(c3) c3 FROM t1;
+id c2 c3
+1 1 POINT(3 4)
+ALTER TABLE t1 ADD COLUMN (
+d1 INT, d2 INT UNSIGNED DEFAULT 10, d3 VARCHAR(20) NOT NULL DEFAULT 'abcde',
+d4 TIMESTAMP NOT NULL DEFAULT current_timestamp());
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD INDEX(d3);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+BEGIN;
+UPDATE t1 SET d3='';
+ROLLBACK;
+SELECT id,c2,ST_AsText(c3) c3, d1, d2, d3, d4 FROM t1;
+id c2 c3 d1 d2 d3 d4
+1 1 POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+INSERT INTO t1 (id) VALUES(2),(3),(4),(5),(6);
+ALTER TABLE t1 CHANGE d1 d1 INT DEFAULT 5, CHANGE d2 d2 INT DEFAULT 15,
+CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'fghij',
+CHANGE d4 dfour TIMESTAMP NOT NULL DEFAULT now();
+affected rows: 6
+info: Records: 6 Duplicates: 0 Warnings: 0
+UPDATE t1 SET d3='foo' WHERE id = 2;
+UPDATE t1 SET d3=DEFAULT WHERE id = 4;
+INSERT INTO t1 SET id = 7;
+SELECT id,c2,ST_AsText(c3) c3, d1, d2, d3, dfour FROM t1;
+id c2 c3 d1 d2 d3 dfour
+1 1 POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+2 NULL POINT(3 4) NULL 10 foo 1970-01-01 03:00:42
+3 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+4 NULL POINT(3 4) NULL 10 fghij 1970-01-01 03:00:42
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+6 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+7 NULL POINT(3 4) 5 15 fghij 1970-01-01 03:00:42
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+ALTER TABLE t1 ADD COLUMN e1 INT AS (id * 3);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD COLUMN e2 VARCHAR(30) AS (d3);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD COLUMN e3 INT AS (id * 2);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'foobar',
+ADD COLUMN (d5 CHAR(20) DEFAULT 'hijkl', d6 INT DEFAULT -12345, d7 INT),
+DROP INDEX d3;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+INSERT INTO t1 SET id = 8;
+UPDATE t1 SET d3 = 'yyyyy' WHERE id = 1;
+UPDATE t1 SET d3 = 'xxxxx' WHERE id = 2;
+BEGIN;
+UPDATE t1 SET d3 = 'xxxxx' WHERE id = 3;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 3;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+3 NULL POINT(3 4) NULL 10 xxxxx 1970-01-01 03:00:42 9 xxxxx 6 hijkl -12345 NULL
+ROLLBACK;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 3;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+3 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 9 abcde 6 hijkl -12345 NULL
+BEGIN;
+UPDATE t1 SET d7 = NULL WHERE ID = 5;
+ROLLBACK;
+BEGIN;
+UPDATE t1 SET d7 = NULL, d6 = 10 WHERE id = 5;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 5;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl 10 NULL
+ROLLBACK;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 5;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl -12345 NULL
+ALTER TABLE t1 ADD COLUMN (f1 VARCHAR(20) AS (concat('x', e2)) STORED);
+affected rows: 8
+info: Records: 8 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD COLUMN (d8 VARCHAR(20) DEFAULT 'omnopq');
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7, f1, d8 FROM t1;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7 f1 d8
+1 1 POINT(3 4) NULL 10 yyyyy 1970-01-01 03:00:42 3 yyyyy 2 hijkl -12345 NULL xyyyyy omnopq
+2 NULL POINT(3 4) NULL 10 xxxxx 1970-01-01 03:00:42 6 xxxxx 4 hijkl -12345 NULL xxxxxx omnopq
+3 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 9 abcde 6 hijkl -12345 NULL xabcde omnopq
+4 NULL POINT(3 4) NULL 10 fghij 1970-01-01 03:00:42 12 fghij 8 hijkl -12345 NULL xfghij omnopq
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl -12345 NULL xabcde omnopq
+6 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 18 abcde 12 hijkl -12345 NULL xabcde omnopq
+7 NULL POINT(3 4) 5 15 fghij 1970-01-01 03:00:42 21 fghij 14 hijkl -12345 NULL xfghij omnopq
+8 NULL POINT(3 4) 5 15 foobar 1970-01-01 03:00:42 24 foobar 16 hijkl -12345 NULL xfoobar omnopq
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `id` int(11) NOT NULL,
+ `c2` int(11) DEFAULT NULL,
+ `c3` point NOT NULL DEFAULT st_geometryfromtext('POINT(3 4)'),
+ `d1` int(11) DEFAULT 5,
+ `d2` int(11) DEFAULT 15,
+ `d3` varchar(20) NOT NULL DEFAULT 'foobar',
+ `dfour` timestamp NOT NULL DEFAULT current_timestamp(),
+ `e1` int(11) GENERATED ALWAYS AS (`id` * 3) VIRTUAL,
+ `e2` varchar(30) GENERATED ALWAYS AS (`d3`) VIRTUAL,
+ `e3` int(11) GENERATED ALWAYS AS (`id` * 2) VIRTUAL,
+ `d5` char(20) DEFAULT 'hijkl',
+ `d6` int(11) DEFAULT -12345,
+ `d7` int(11) DEFAULT NULL,
+ `f1` varchar(20) GENERATED ALWAYS AS (concat('x',`e2`)) STORED,
+ `d8` varchar(20) DEFAULT 'omnopq',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `c2` (`c2`),
+ SPATIAL KEY `c3` (`c3`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
+ALTER TABLE t1
+CHANGE c2 c2 INT DEFAULT 42,
+CHANGE d1 d1 INT DEFAULT 1,
+CHANGE d2 d2 INT DEFAULT 20,
+CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'boofar';
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+INSERT INTO t1 SET id=9;
+ALTER TABLE t1 DROP c3;
+affected rows: 9
+info: Records: 9 Duplicates: 0 Warnings: 0
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `id` int(11) NOT NULL,
+ `c2` int(11) DEFAULT 42,
+ `d1` int(11) DEFAULT 1,
+ `d2` int(11) DEFAULT 20,
+ `d3` varchar(20) NOT NULL DEFAULT 'boofar',
+ `dfour` timestamp NOT NULL DEFAULT current_timestamp(),
+ `e1` int(11) GENERATED ALWAYS AS (`id` * 3) VIRTUAL,
+ `e2` varchar(30) GENERATED ALWAYS AS (`d3`) VIRTUAL,
+ `e3` int(11) GENERATED ALWAYS AS (`id` * 2) VIRTUAL,
+ `d5` char(20) DEFAULT 'hijkl',
+ `d6` int(11) DEFAULT -12345,
+ `d7` int(11) DEFAULT NULL,
+ `f1` varchar(20) GENERATED ALWAYS AS (concat('x',`e2`)) STORED,
+ `d8` varchar(20) DEFAULT 'omnopq',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `c2` (`c2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
+SELECT * FROM t1;
+id c2 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7 f1 d8
+1 1 NULL 10 yyyyy 1970-01-01 03:00:42 3 yyyyy 2 hijkl -12345 NULL xyyyyy omnopq
+2 NULL NULL 10 xxxxx 1970-01-01 03:00:42 6 xxxxx 4 hijkl -12345 NULL xxxxxx omnopq
+3 NULL NULL 10 abcde 1970-01-01 03:00:42 9 abcde 6 hijkl -12345 NULL xabcde omnopq
+4 NULL NULL 10 fghij 1970-01-01 03:00:42 12 fghij 8 hijkl -12345 NULL xfghij omnopq
+5 NULL NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl -12345 NULL xabcde omnopq
+6 NULL NULL 10 abcde 1970-01-01 03:00:42 18 abcde 12 hijkl -12345 NULL xabcde omnopq
+7 NULL 5 15 fghij 1970-01-01 03:00:42 21 fghij 14 hijkl -12345 NULL xfghij omnopq
+8 NULL 5 15 foobar 1970-01-01 03:00:42 24 foobar 16 hijkl -12345 NULL xfoobar omnopq
+9 42 1 20 boofar 1970-01-01 03:00:42 27 boofar 18 hijkl -12345 NULL xboofar omnopq
+CREATE TABLE t2
+(id INT primary key, c1 VARCHAR(4000),
+p GEOMETRY NOT NULL DEFAULT ST_GeomFromText('LINESTRING(0 0,0 1,1 1)'),
+SPATIAL INDEX(p))
+ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+BEGIN;
+INSERT INTO t2 SET id=1, c1=REPEAT('a', 4000);
+INSERT INTO t2 SET id=2, c1=REPEAT('a', 4000), p=ST_GeomFromText('POINT(1 1)');
+COMMIT;
+ALTER TABLE t2 ADD COLUMN d1 VARCHAR(2000) DEFAULT REPEAT('asdf',500);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c1, ST_AsText(p) p, d1 FROM t2;
+id c1 p d1
+1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa LINESTRING(0 0,0 1,1 1) asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa POINT(1 1) asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+BEGIN;
+UPDATE t2 SET c1 = repeat(id, 4000);
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+ROLLBACK;
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+BEGIN;
+UPDATE t2 SET d1 = repeat(id, 200);
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+ROLLBACK;
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+ALTER TABLE t2 DROP p;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT * FROM t2;
+id c1 d1
+1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+CREATE TABLE t3
+(id INT PRIMARY KEY, c2 INT UNSIGNED NOT NULL UNIQUE,
+c3 POLYGON NOT NULL DEFAULT ST_PolyFromText('POLYGON((1 1,2 2,3 3,1 1))'),
+SPATIAL INDEX(c3))
+ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+INSERT INTO t3(id,c2) VALUES(1,1),(2,2),(3,3);
+SELECT id, c2, ST_AsText(c3) c3 FROM t3;
+id c2 c3
+1 1 POLYGON((1 1,2 2,3 3,1 1))
+2 2 POLYGON((1 1,2 2,3 3,1 1))
+3 3 POLYGON((1 1,2 2,3 3,1 1))
+ALTER TABLE t3 ADD COLUMN
+(c4 DATETIME DEFAULT current_timestamp(),
+c5 TIMESTAMP NOT NULL DEFAULT current_timestamp(),
+c6 POINT);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6 FROM t3;
+id c2 c3 c4 c5 c6
+1 1 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL
+2 2 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL
+3 3 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL
+affected rows: 3
+ALTER TABLE t3 ADD COLUMN c7 TIME NOT NULL DEFAULT current_timestamp();
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t3 ADD COLUMN c8 DATE NOT NULL DEFAULT current_timestamp();
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6, c7, c8 FROM t3;
+id c2 c3 c4 c5 c6 c7 c8
+1 1 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01
+2 2 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01
+3 3 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01
+ALTER TABLE t3 ADD COLUMN t TEXT CHARSET utf8
+DEFAULT 'The quick brown fox jumps over the lazy dog';
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t3 ADD COLUMN b BLOB NOT NULL;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+INSERT INTO t3 SET id=4;
+ERROR HY000: Field 'c2' doesn't have a default value
+INSERT INTO t3 SET id=4, c2=0, b=0xf09f98b1;
+affected rows: 1
+Warnings:
+Note 1265 Data truncated for column 'c7' at row 1
+Note 1265 Data truncated for column 'c8' at row 1
+ALTER TABLE t3 CHANGE t phrase TEXT DEFAULT 0xc3a4c3a448,
+CHANGE b b BLOB NOT NULL DEFAULT 'binary line of business';
+affected rows: 4
+info: Records: 4 Duplicates: 0 Warnings: 0
+INSERT INTO t3 SET id=5, c2=9;
+Warnings:
+Note 1265 Data truncated for column 'c7' at row 1
+Note 1265 Data truncated for column 'c8' at row 1
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6, c7, c8, phrase, b FROM t3;
+id c2 c3 c4 c5 c6 c7 c8 phrase b
+1 1 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog
+2 2 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog
+3 3 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog
+4 0 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog 😱
+5 9 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 ääH binary line of business
+ALTER TABLE t3 DROP c3, DROP c7;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT * FROM t3;
+id c2 c4 c5 c6 c8 phrase b
+1 1 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog
+2 2 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog
+3 3 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog
+4 0 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog 😱
+5 9 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 ääH binary line of business
+CREATE TABLE t4
+(id INT, foo INT DEFAULT 0, c1 VARCHAR(4000),
+p GEOMETRY NOT NULL DEFAULT ST_GeomFromText('LINESTRING(0 0,0 1,1 1)'),
+PRIMARY KEY(id,foo))
+ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+INSERT INTO t4 (id,c1) VALUES (1, REPEAT('a', 4000)), (2, REPEAT('a', 4000));
+ALTER TABLE t4 ADD COLUMN d1 INT;
+BEGIN;
+UPDATE t4 SET c1 = repeat('1', 4000), foo=1 WHERE id=1;
+INSERT INTO t4 (id,c1) VALUES (1, REPEAT('a', 4000));
+UPDATE t4 SET c1 = repeat('2', 4000), foo=1 WHERE id=2;
+ROLLBACK;
+BEGIN;
+UPDATE t4 SET d1 = 1,foo=2 WHERE id=1;
+INSERT INTO t4 (id,foo,c1) VALUES (1, 1, REPEAT('1', 4000));
+COMMIT;
+CREATE TABLE big
+(id INT PRIMARY KEY, c1 VARCHAR(4000), c2 VARCHAR(4000), c3 VARCHAR(1000),
+p POINT NOT NULL DEFAULT ST_GeomFromText('POINT(0 0)'), SPATIAL INDEX(p))
+ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+BEGIN;
+INSERT INTO big
+SET id=1, c1=REPEAT('a', 200), c2=REPEAT('b', 200), c3=REPEAT('c', 159);
+SET @i:=1;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+COMMIT;
+connection analyze;
+ANALYZE TABLE big;
+Table Op Msg_type Msg_text
+test.big analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+clust_index_size
+3
+connection default;
+ALTER TABLE big ADD COLUMN
+(d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+d3 TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+CHECKSUM TABLE big;
+Table Checksum
+test.big 1705165209
+BEGIN;
+INSERT INTO big(id, c1, c2, c3) SELECT @i:=@i+1, c1, c2, c3 FROM big;
+INSERT INTO big(id, c1, c2, c3) SELECT @i:=@i+1, c1, c2, c3 FROM big;
+CHECKSUM TABLE big;
+Table Checksum
+test.big 385477733
+connection analyze;
+ANALYZE TABLE big;
+Table Op Msg_type Msg_text
+test.big analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+clust_index_size
+7
+connection default;
+ROLLBACK;
+CHECKSUM TABLE big;
+Table Checksum
+test.big 1705165209
+connection analyze;
+ANALYZE TABLE big;
+Table Op Msg_type Msg_text
+test.big analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+clust_index_size
+3
+connection default;
+InnoDB 0 transactions not purged
+DROP TABLE t1,t2,t3,t4,big;
+CREATE TABLE t1 (a VARCHAR(1) PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+INSERT INTO t1 SET a='a';
+ALTER TABLE t1 ADD COLUMN b INT NOT NULL DEFAULT 0;
+UPDATE t1 SET b = 1;
+INSERT INTO t1 SET a='a';
+ERROR 23000: Duplicate entry 'a' for key 'PRIMARY'
+SELECT * FROM t1;
+a b
+a 1
+DROP TABLE t1;
+CREATE TABLE t1
+(id INT PRIMARY KEY, c2 INT UNIQUE,
+c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'),
+SPATIAL INDEX(c3)) ENGINE=InnoDB ROW_FORMAT=COMPACT;
+INSERT INTO t1 (id, c2) values(1,1);
+SELECT id,c2,ST_AsText(c3) c3 FROM t1;
+id c2 c3
+1 1 POINT(3 4)
+ALTER TABLE t1 ADD COLUMN (
+d1 INT, d2 INT UNSIGNED DEFAULT 10, d3 VARCHAR(20) NOT NULL DEFAULT 'abcde',
+d4 TIMESTAMP NOT NULL DEFAULT current_timestamp());
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD INDEX(d3);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+BEGIN;
+UPDATE t1 SET d3='';
+ROLLBACK;
+SELECT id,c2,ST_AsText(c3) c3, d1, d2, d3, d4 FROM t1;
+id c2 c3 d1 d2 d3 d4
+1 1 POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+INSERT INTO t1 (id) VALUES(2),(3),(4),(5),(6);
+ALTER TABLE t1 CHANGE d1 d1 INT DEFAULT 5, CHANGE d2 d2 INT DEFAULT 15,
+CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'fghij',
+CHANGE d4 dfour TIMESTAMP NOT NULL DEFAULT now();
+affected rows: 6
+info: Records: 6 Duplicates: 0 Warnings: 0
+UPDATE t1 SET d3='foo' WHERE id = 2;
+UPDATE t1 SET d3=DEFAULT WHERE id = 4;
+INSERT INTO t1 SET id = 7;
+SELECT id,c2,ST_AsText(c3) c3, d1, d2, d3, dfour FROM t1;
+id c2 c3 d1 d2 d3 dfour
+1 1 POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+2 NULL POINT(3 4) NULL 10 foo 1970-01-01 03:00:42
+3 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+4 NULL POINT(3 4) NULL 10 fghij 1970-01-01 03:00:42
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+6 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+7 NULL POINT(3 4) 5 15 fghij 1970-01-01 03:00:42
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+ALTER TABLE t1 ADD COLUMN e1 INT AS (id * 3);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD COLUMN e2 VARCHAR(30) AS (d3);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD COLUMN e3 INT AS (id * 2);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'foobar',
+ADD COLUMN (d5 CHAR(20) DEFAULT 'hijkl', d6 INT DEFAULT -12345, d7 INT),
+DROP INDEX d3;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+INSERT INTO t1 SET id = 8;
+UPDATE t1 SET d3 = 'yyyyy' WHERE id = 1;
+UPDATE t1 SET d3 = 'xxxxx' WHERE id = 2;
+BEGIN;
+UPDATE t1 SET d3 = 'xxxxx' WHERE id = 3;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 3;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+3 NULL POINT(3 4) NULL 10 xxxxx 1970-01-01 03:00:42 9 xxxxx 6 hijkl -12345 NULL
+ROLLBACK;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 3;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+3 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 9 abcde 6 hijkl -12345 NULL
+BEGIN;
+UPDATE t1 SET d7 = NULL WHERE ID = 5;
+ROLLBACK;
+BEGIN;
+UPDATE t1 SET d7 = NULL, d6 = 10 WHERE id = 5;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 5;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl 10 NULL
+ROLLBACK;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 5;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl -12345 NULL
+ALTER TABLE t1 ADD COLUMN (f1 VARCHAR(20) AS (concat('x', e2)) STORED);
+affected rows: 8
+info: Records: 8 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD COLUMN (d8 VARCHAR(20) DEFAULT 'omnopq');
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7, f1, d8 FROM t1;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7 f1 d8
+1 1 POINT(3 4) NULL 10 yyyyy 1970-01-01 03:00:42 3 yyyyy 2 hijkl -12345 NULL xyyyyy omnopq
+2 NULL POINT(3 4) NULL 10 xxxxx 1970-01-01 03:00:42 6 xxxxx 4 hijkl -12345 NULL xxxxxx omnopq
+3 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 9 abcde 6 hijkl -12345 NULL xabcde omnopq
+4 NULL POINT(3 4) NULL 10 fghij 1970-01-01 03:00:42 12 fghij 8 hijkl -12345 NULL xfghij omnopq
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl -12345 NULL xabcde omnopq
+6 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 18 abcde 12 hijkl -12345 NULL xabcde omnopq
+7 NULL POINT(3 4) 5 15 fghij 1970-01-01 03:00:42 21 fghij 14 hijkl -12345 NULL xfghij omnopq
+8 NULL POINT(3 4) 5 15 foobar 1970-01-01 03:00:42 24 foobar 16 hijkl -12345 NULL xfoobar omnopq
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `id` int(11) NOT NULL,
+ `c2` int(11) DEFAULT NULL,
+ `c3` point NOT NULL DEFAULT st_geometryfromtext('POINT(3 4)'),
+ `d1` int(11) DEFAULT 5,
+ `d2` int(11) DEFAULT 15,
+ `d3` varchar(20) NOT NULL DEFAULT 'foobar',
+ `dfour` timestamp NOT NULL DEFAULT current_timestamp(),
+ `e1` int(11) GENERATED ALWAYS AS (`id` * 3) VIRTUAL,
+ `e2` varchar(30) GENERATED ALWAYS AS (`d3`) VIRTUAL,
+ `e3` int(11) GENERATED ALWAYS AS (`id` * 2) VIRTUAL,
+ `d5` char(20) DEFAULT 'hijkl',
+ `d6` int(11) DEFAULT -12345,
+ `d7` int(11) DEFAULT NULL,
+ `f1` varchar(20) GENERATED ALWAYS AS (concat('x',`e2`)) STORED,
+ `d8` varchar(20) DEFAULT 'omnopq',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `c2` (`c2`),
+ SPATIAL KEY `c3` (`c3`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
+ALTER TABLE t1
+CHANGE c2 c2 INT DEFAULT 42,
+CHANGE d1 d1 INT DEFAULT 1,
+CHANGE d2 d2 INT DEFAULT 20,
+CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'boofar';
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+INSERT INTO t1 SET id=9;
+ALTER TABLE t1 DROP c3;
+affected rows: 9
+info: Records: 9 Duplicates: 0 Warnings: 0
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `id` int(11) NOT NULL,
+ `c2` int(11) DEFAULT 42,
+ `d1` int(11) DEFAULT 1,
+ `d2` int(11) DEFAULT 20,
+ `d3` varchar(20) NOT NULL DEFAULT 'boofar',
+ `dfour` timestamp NOT NULL DEFAULT current_timestamp(),
+ `e1` int(11) GENERATED ALWAYS AS (`id` * 3) VIRTUAL,
+ `e2` varchar(30) GENERATED ALWAYS AS (`d3`) VIRTUAL,
+ `e3` int(11) GENERATED ALWAYS AS (`id` * 2) VIRTUAL,
+ `d5` char(20) DEFAULT 'hijkl',
+ `d6` int(11) DEFAULT -12345,
+ `d7` int(11) DEFAULT NULL,
+ `f1` varchar(20) GENERATED ALWAYS AS (concat('x',`e2`)) STORED,
+ `d8` varchar(20) DEFAULT 'omnopq',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `c2` (`c2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
+SELECT * FROM t1;
+id c2 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7 f1 d8
+1 1 NULL 10 yyyyy 1970-01-01 03:00:42 3 yyyyy 2 hijkl -12345 NULL xyyyyy omnopq
+2 NULL NULL 10 xxxxx 1970-01-01 03:00:42 6 xxxxx 4 hijkl -12345 NULL xxxxxx omnopq
+3 NULL NULL 10 abcde 1970-01-01 03:00:42 9 abcde 6 hijkl -12345 NULL xabcde omnopq
+4 NULL NULL 10 fghij 1970-01-01 03:00:42 12 fghij 8 hijkl -12345 NULL xfghij omnopq
+5 NULL NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl -12345 NULL xabcde omnopq
+6 NULL NULL 10 abcde 1970-01-01 03:00:42 18 abcde 12 hijkl -12345 NULL xabcde omnopq
+7 NULL 5 15 fghij 1970-01-01 03:00:42 21 fghij 14 hijkl -12345 NULL xfghij omnopq
+8 NULL 5 15 foobar 1970-01-01 03:00:42 24 foobar 16 hijkl -12345 NULL xfoobar omnopq
+9 42 1 20 boofar 1970-01-01 03:00:42 27 boofar 18 hijkl -12345 NULL xboofar omnopq
+CREATE TABLE t2
+(id INT primary key, c1 VARCHAR(4000),
+p GEOMETRY NOT NULL DEFAULT ST_GeomFromText('LINESTRING(0 0,0 1,1 1)'),
+SPATIAL INDEX(p))
+ENGINE=InnoDB ROW_FORMAT=COMPACT;
+BEGIN;
+INSERT INTO t2 SET id=1, c1=REPEAT('a', 4000);
+INSERT INTO t2 SET id=2, c1=REPEAT('a', 4000), p=ST_GeomFromText('POINT(1 1)');
+COMMIT;
+ALTER TABLE t2 ADD COLUMN d1 VARCHAR(2000) DEFAULT REPEAT('asdf',500);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c1, ST_AsText(p) p, d1 FROM t2;
+id c1 p d1
+1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa LINESTRING(0 0,0 1,1 1) asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa POINT(1 1) asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+BEGIN;
+UPDATE t2 SET c1 = repeat(id, 4000);
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+ROLLBACK;
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+BEGIN;
+UPDATE t2 SET d1 = repeat(id, 200);
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+ROLLBACK;
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+ALTER TABLE t2 DROP p;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT * FROM t2;
+id c1 d1
+1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+CREATE TABLE t3
+(id INT PRIMARY KEY, c2 INT UNSIGNED NOT NULL UNIQUE,
+c3 POLYGON NOT NULL DEFAULT ST_PolyFromText('POLYGON((1 1,2 2,3 3,1 1))'),
+SPATIAL INDEX(c3))
+ENGINE=InnoDB ROW_FORMAT=COMPACT;
+INSERT INTO t3(id,c2) VALUES(1,1),(2,2),(3,3);
+SELECT id, c2, ST_AsText(c3) c3 FROM t3;
+id c2 c3
+1 1 POLYGON((1 1,2 2,3 3,1 1))
+2 2 POLYGON((1 1,2 2,3 3,1 1))
+3 3 POLYGON((1 1,2 2,3 3,1 1))
+ALTER TABLE t3 ADD COLUMN
+(c4 DATETIME DEFAULT current_timestamp(),
+c5 TIMESTAMP NOT NULL DEFAULT current_timestamp(),
+c6 POINT);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6 FROM t3;
+id c2 c3 c4 c5 c6
+1 1 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL
+2 2 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL
+3 3 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL
+affected rows: 3
+ALTER TABLE t3 ADD COLUMN c7 TIME NOT NULL DEFAULT current_timestamp();
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t3 ADD COLUMN c8 DATE NOT NULL DEFAULT current_timestamp();
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6, c7, c8 FROM t3;
+id c2 c3 c4 c5 c6 c7 c8
+1 1 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01
+2 2 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01
+3 3 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01
+ALTER TABLE t3 ADD COLUMN t TEXT CHARSET utf8
+DEFAULT 'The quick brown fox jumps over the lazy dog';
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t3 ADD COLUMN b BLOB NOT NULL;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+INSERT INTO t3 SET id=4;
+ERROR HY000: Field 'c2' doesn't have a default value
+INSERT INTO t3 SET id=4, c2=0, b=0xf09f98b1;
+affected rows: 1
+Warnings:
+Note 1265 Data truncated for column 'c7' at row 1
+Note 1265 Data truncated for column 'c8' at row 1
+ALTER TABLE t3 CHANGE t phrase TEXT DEFAULT 0xc3a4c3a448,
+CHANGE b b BLOB NOT NULL DEFAULT 'binary line of business';
+affected rows: 4
+info: Records: 4 Duplicates: 0 Warnings: 0
+INSERT INTO t3 SET id=5, c2=9;
+Warnings:
+Note 1265 Data truncated for column 'c7' at row 1
+Note 1265 Data truncated for column 'c8' at row 1
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6, c7, c8, phrase, b FROM t3;
+id c2 c3 c4 c5 c6 c7 c8 phrase b
+1 1 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog
+2 2 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog
+3 3 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog
+4 0 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog 😱
+5 9 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 ääH binary line of business
+ALTER TABLE t3 DROP c3, DROP c7;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT * FROM t3;
+id c2 c4 c5 c6 c8 phrase b
+1 1 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog
+2 2 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog
+3 3 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog
+4 0 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog 😱
+5 9 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 ääH binary line of business
+CREATE TABLE t4
+(id INT, foo INT DEFAULT 0, c1 VARCHAR(4000),
+p GEOMETRY NOT NULL DEFAULT ST_GeomFromText('LINESTRING(0 0,0 1,1 1)'),
+PRIMARY KEY(id,foo))
+ENGINE=InnoDB ROW_FORMAT=COMPACT;
+INSERT INTO t4 (id,c1) VALUES (1, REPEAT('a', 4000)), (2, REPEAT('a', 4000));
+ALTER TABLE t4 ADD COLUMN d1 INT;
+BEGIN;
+UPDATE t4 SET c1 = repeat('1', 4000), foo=1 WHERE id=1;
+INSERT INTO t4 (id,c1) VALUES (1, REPEAT('a', 4000));
+UPDATE t4 SET c1 = repeat('2', 4000), foo=1 WHERE id=2;
+ROLLBACK;
+BEGIN;
+UPDATE t4 SET d1 = 1,foo=2 WHERE id=1;
+INSERT INTO t4 (id,foo,c1) VALUES (1, 1, REPEAT('1', 4000));
+COMMIT;
+CREATE TABLE big
+(id INT PRIMARY KEY, c1 VARCHAR(4000), c2 VARCHAR(4000), c3 VARCHAR(1000),
+p POINT NOT NULL DEFAULT ST_GeomFromText('POINT(0 0)'), SPATIAL INDEX(p))
+ENGINE=InnoDB ROW_FORMAT=COMPACT;
+BEGIN;
+INSERT INTO big
+SET id=1, c1=REPEAT('a', 200), c2=REPEAT('b', 200), c3=REPEAT('c', 159);
+SET @i:=1;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+COMMIT;
+connection analyze;
+ANALYZE TABLE big;
+Table Op Msg_type Msg_text
+test.big analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+clust_index_size
+3
+connection default;
+ALTER TABLE big ADD COLUMN
+(d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+d3 TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+CHECKSUM TABLE big;
+Table Checksum
+test.big 1705165209
+BEGIN;
+INSERT INTO big(id, c1, c2, c3) SELECT @i:=@i+1, c1, c2, c3 FROM big;
+INSERT INTO big(id, c1, c2, c3) SELECT @i:=@i+1, c1, c2, c3 FROM big;
+CHECKSUM TABLE big;
+Table Checksum
+test.big 385477733
+connection analyze;
+ANALYZE TABLE big;
+Table Op Msg_type Msg_text
+test.big analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+clust_index_size
+7
+connection default;
+ROLLBACK;
+CHECKSUM TABLE big;
+Table Checksum
+test.big 1705165209
+connection analyze;
+ANALYZE TABLE big;
+Table Op Msg_type Msg_text
+test.big analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+clust_index_size
+3
+connection default;
+InnoDB 0 transactions not purged
+DROP TABLE t1,t2,t3,t4,big;
+CREATE TABLE t1 (a VARCHAR(1) PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=COMPACT;
+INSERT INTO t1 SET a='a';
+ALTER TABLE t1 ADD COLUMN b INT NOT NULL DEFAULT 0;
+UPDATE t1 SET b = 1;
+INSERT INTO t1 SET a='a';
+ERROR 23000: Duplicate entry 'a' for key 'PRIMARY'
+SELECT * FROM t1;
+a b
+a 1
+DROP TABLE t1;
+CREATE TABLE t1
+(id INT PRIMARY KEY, c2 INT UNIQUE,
+c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'),
+SPATIAL INDEX(c3)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+INSERT INTO t1 (id, c2) values(1,1);
+SELECT id,c2,ST_AsText(c3) c3 FROM t1;
+id c2 c3
+1 1 POINT(3 4)
+ALTER TABLE t1 ADD COLUMN (
+d1 INT, d2 INT UNSIGNED DEFAULT 10, d3 VARCHAR(20) NOT NULL DEFAULT 'abcde',
+d4 TIMESTAMP NOT NULL DEFAULT current_timestamp());
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD INDEX(d3);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+BEGIN;
+UPDATE t1 SET d3='';
+ROLLBACK;
+SELECT id,c2,ST_AsText(c3) c3, d1, d2, d3, d4 FROM t1;
+id c2 c3 d1 d2 d3 d4
+1 1 POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+INSERT INTO t1 (id) VALUES(2),(3),(4),(5),(6);
+ALTER TABLE t1 CHANGE d1 d1 INT DEFAULT 5, CHANGE d2 d2 INT DEFAULT 15,
+CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'fghij',
+CHANGE d4 dfour TIMESTAMP NOT NULL DEFAULT now();
+affected rows: 6
+info: Records: 6 Duplicates: 0 Warnings: 0
+UPDATE t1 SET d3='foo' WHERE id = 2;
+UPDATE t1 SET d3=DEFAULT WHERE id = 4;
+INSERT INTO t1 SET id = 7;
+SELECT id,c2,ST_AsText(c3) c3, d1, d2, d3, dfour FROM t1;
+id c2 c3 d1 d2 d3 dfour
+1 1 POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+2 NULL POINT(3 4) NULL 10 foo 1970-01-01 03:00:42
+3 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+4 NULL POINT(3 4) NULL 10 fghij 1970-01-01 03:00:42
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+6 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42
+7 NULL POINT(3 4) 5 15 fghij 1970-01-01 03:00:42
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+ALTER TABLE t1 ADD COLUMN e1 INT AS (id * 3);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD COLUMN e2 VARCHAR(30) AS (d3);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD COLUMN e3 INT AS (id * 2);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'foobar',
+ADD COLUMN (d5 CHAR(20) DEFAULT 'hijkl', d6 INT DEFAULT -12345, d7 INT),
+DROP INDEX d3;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+INSERT INTO t1 SET id = 8;
+UPDATE t1 SET d3 = 'yyyyy' WHERE id = 1;
+UPDATE t1 SET d3 = 'xxxxx' WHERE id = 2;
+BEGIN;
+UPDATE t1 SET d3 = 'xxxxx' WHERE id = 3;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 3;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+3 NULL POINT(3 4) NULL 10 xxxxx 1970-01-01 03:00:42 9 xxxxx 6 hijkl -12345 NULL
+ROLLBACK;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 3;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+3 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 9 abcde 6 hijkl -12345 NULL
+BEGIN;
+UPDATE t1 SET d7 = NULL WHERE ID = 5;
+ROLLBACK;
+BEGIN;
+UPDATE t1 SET d7 = NULL, d6 = 10 WHERE id = 5;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 5;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl 10 NULL
+ROLLBACK;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 5;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl -12345 NULL
+ALTER TABLE t1 ADD COLUMN (f1 VARCHAR(20) AS (concat('x', e2)) STORED);
+affected rows: 8
+info: Records: 8 Duplicates: 0 Warnings: 0
+ALTER TABLE t1 ADD COLUMN (d8 VARCHAR(20) DEFAULT 'omnopq');
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7, f1, d8 FROM t1;
+id c2 c3 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7 f1 d8
+1 1 POINT(3 4) NULL 10 yyyyy 1970-01-01 03:00:42 3 yyyyy 2 hijkl -12345 NULL xyyyyy omnopq
+2 NULL POINT(3 4) NULL 10 xxxxx 1970-01-01 03:00:42 6 xxxxx 4 hijkl -12345 NULL xxxxxx omnopq
+3 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 9 abcde 6 hijkl -12345 NULL xabcde omnopq
+4 NULL POINT(3 4) NULL 10 fghij 1970-01-01 03:00:42 12 fghij 8 hijkl -12345 NULL xfghij omnopq
+5 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl -12345 NULL xabcde omnopq
+6 NULL POINT(3 4) NULL 10 abcde 1970-01-01 03:00:42 18 abcde 12 hijkl -12345 NULL xabcde omnopq
+7 NULL POINT(3 4) 5 15 fghij 1970-01-01 03:00:42 21 fghij 14 hijkl -12345 NULL xfghij omnopq
+8 NULL POINT(3 4) 5 15 foobar 1970-01-01 03:00:42 24 foobar 16 hijkl -12345 NULL xfoobar omnopq
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `id` int(11) NOT NULL,
+ `c2` int(11) DEFAULT NULL,
+ `c3` point NOT NULL DEFAULT st_geometryfromtext('POINT(3 4)'),
+ `d1` int(11) DEFAULT 5,
+ `d2` int(11) DEFAULT 15,
+ `d3` varchar(20) NOT NULL DEFAULT 'foobar',
+ `dfour` timestamp NOT NULL DEFAULT current_timestamp(),
+ `e1` int(11) GENERATED ALWAYS AS (`id` * 3) VIRTUAL,
+ `e2` varchar(30) GENERATED ALWAYS AS (`d3`) VIRTUAL,
+ `e3` int(11) GENERATED ALWAYS AS (`id` * 2) VIRTUAL,
+ `d5` char(20) DEFAULT 'hijkl',
+ `d6` int(11) DEFAULT -12345,
+ `d7` int(11) DEFAULT NULL,
+ `f1` varchar(20) GENERATED ALWAYS AS (concat('x',`e2`)) STORED,
+ `d8` varchar(20) DEFAULT 'omnopq',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `c2` (`c2`),
+ SPATIAL KEY `c3` (`c3`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
+ALTER TABLE t1
+CHANGE c2 c2 INT DEFAULT 42,
+CHANGE d1 d1 INT DEFAULT 1,
+CHANGE d2 d2 INT DEFAULT 20,
+CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'boofar';
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+INSERT INTO t1 SET id=9;
+ALTER TABLE t1 DROP c3;
+affected rows: 9
+info: Records: 9 Duplicates: 0 Warnings: 0
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `id` int(11) NOT NULL,
+ `c2` int(11) DEFAULT 42,
+ `d1` int(11) DEFAULT 1,
+ `d2` int(11) DEFAULT 20,
+ `d3` varchar(20) NOT NULL DEFAULT 'boofar',
+ `dfour` timestamp NOT NULL DEFAULT current_timestamp(),
+ `e1` int(11) GENERATED ALWAYS AS (`id` * 3) VIRTUAL,
+ `e2` varchar(30) GENERATED ALWAYS AS (`d3`) VIRTUAL,
+ `e3` int(11) GENERATED ALWAYS AS (`id` * 2) VIRTUAL,
+ `d5` char(20) DEFAULT 'hijkl',
+ `d6` int(11) DEFAULT -12345,
+ `d7` int(11) DEFAULT NULL,
+ `f1` varchar(20) GENERATED ALWAYS AS (concat('x',`e2`)) STORED,
+ `d8` varchar(20) DEFAULT 'omnopq',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `c2` (`c2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
+SELECT * FROM t1;
+id c2 d1 d2 d3 dfour e1 e2 e3 d5 d6 d7 f1 d8
+1 1 NULL 10 yyyyy 1970-01-01 03:00:42 3 yyyyy 2 hijkl -12345 NULL xyyyyy omnopq
+2 NULL NULL 10 xxxxx 1970-01-01 03:00:42 6 xxxxx 4 hijkl -12345 NULL xxxxxx omnopq
+3 NULL NULL 10 abcde 1970-01-01 03:00:42 9 abcde 6 hijkl -12345 NULL xabcde omnopq
+4 NULL NULL 10 fghij 1970-01-01 03:00:42 12 fghij 8 hijkl -12345 NULL xfghij omnopq
+5 NULL NULL 10 abcde 1970-01-01 03:00:42 15 abcde 10 hijkl -12345 NULL xabcde omnopq
+6 NULL NULL 10 abcde 1970-01-01 03:00:42 18 abcde 12 hijkl -12345 NULL xabcde omnopq
+7 NULL 5 15 fghij 1970-01-01 03:00:42 21 fghij 14 hijkl -12345 NULL xfghij omnopq
+8 NULL 5 15 foobar 1970-01-01 03:00:42 24 foobar 16 hijkl -12345 NULL xfoobar omnopq
+9 42 1 20 boofar 1970-01-01 03:00:42 27 boofar 18 hijkl -12345 NULL xboofar omnopq
+CREATE TABLE t2
+(id INT primary key, c1 VARCHAR(4000),
+p GEOMETRY NOT NULL DEFAULT ST_GeomFromText('LINESTRING(0 0,0 1,1 1)'),
+SPATIAL INDEX(p))
+ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+BEGIN;
+INSERT INTO t2 SET id=1, c1=REPEAT('a', 4000);
+INSERT INTO t2 SET id=2, c1=REPEAT('a', 4000), p=ST_GeomFromText('POINT(1 1)');
+COMMIT;
+ALTER TABLE t2 ADD COLUMN d1 VARCHAR(2000) DEFAULT REPEAT('asdf',500);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c1, ST_AsText(p) p, d1 FROM t2;
+id c1 p d1
+1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa LINESTRING(0 0,0 1,1 1) asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa POINT(1 1) asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+BEGIN;
+UPDATE t2 SET c1 = repeat(id, 4000);
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+ROLLBACK;
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+BEGIN;
+UPDATE t2 SET d1 = repeat(id, 200);
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+ROLLBACK;
+connection analyze;
+ANALYZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+clust_index_size
+1
+connection default;
+ALTER TABLE t2 DROP p;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT * FROM t2;
+id c1 d1
+1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
+CREATE TABLE t3
+(id INT PRIMARY KEY, c2 INT UNSIGNED NOT NULL UNIQUE,
+c3 POLYGON NOT NULL DEFAULT ST_PolyFromText('POLYGON((1 1,2 2,3 3,1 1))'),
+SPATIAL INDEX(c3))
+ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+INSERT INTO t3(id,c2) VALUES(1,1),(2,2),(3,3);
+SELECT id, c2, ST_AsText(c3) c3 FROM t3;
+id c2 c3
+1 1 POLYGON((1 1,2 2,3 3,1 1))
+2 2 POLYGON((1 1,2 2,3 3,1 1))
+3 3 POLYGON((1 1,2 2,3 3,1 1))
+ALTER TABLE t3 ADD COLUMN
+(c4 DATETIME DEFAULT current_timestamp(),
+c5 TIMESTAMP NOT NULL DEFAULT current_timestamp(),
+c6 POINT);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6 FROM t3;
+id c2 c3 c4 c5 c6
+1 1 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL
+2 2 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL
+3 3 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL
+affected rows: 3
+ALTER TABLE t3 ADD COLUMN c7 TIME NOT NULL DEFAULT current_timestamp();
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t3 ADD COLUMN c8 DATE NOT NULL DEFAULT current_timestamp();
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6, c7, c8 FROM t3;
+id c2 c3 c4 c5 c6 c7 c8
+1 1 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01
+2 2 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01
+3 3 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01
+ALTER TABLE t3 ADD COLUMN t TEXT CHARSET utf8
+DEFAULT 'The quick brown fox jumps over the lazy dog';
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE t3 ADD COLUMN b BLOB NOT NULL;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+INSERT INTO t3 SET id=4;
+ERROR HY000: Field 'c2' doesn't have a default value
+INSERT INTO t3 SET id=4, c2=0, b=0xf09f98b1;
+affected rows: 1
+Warnings:
+Note 1265 Data truncated for column 'c7' at row 1
+Note 1265 Data truncated for column 'c8' at row 1
+ALTER TABLE t3 CHANGE t phrase TEXT DEFAULT 0xc3a4c3a448,
+CHANGE b b BLOB NOT NULL DEFAULT 'binary line of business';
+affected rows: 4
+info: Records: 4 Duplicates: 0 Warnings: 0
+INSERT INTO t3 SET id=5, c2=9;
+Warnings:
+Note 1265 Data truncated for column 'c7' at row 1
+Note 1265 Data truncated for column 'c8' at row 1
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6, c7, c8, phrase, b FROM t3;
+id c2 c3 c4 c5 c6 c7 c8 phrase b
+1 1 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog
+2 2 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog
+3 3 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog
+4 0 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 The quick brown fox jumps over the lazy dog 😱
+5 9 POLYGON((1 1,2 2,3 3,1 1)) 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 03:00:42 1970-01-01 ääH binary line of business
+ALTER TABLE t3 DROP c3, DROP c7;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+SELECT * FROM t3;
+id c2 c4 c5 c6 c8 phrase b
+1 1 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog
+2 2 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog
+3 3 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog
+4 0 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 The quick brown fox jumps over the lazy dog 😱
+5 9 1970-01-01 03:00:42 1970-01-01 03:00:42 NULL 1970-01-01 ääH binary line of business
+CREATE TABLE t4
+(id INT, foo INT DEFAULT 0, c1 VARCHAR(4000),
+p GEOMETRY NOT NULL DEFAULT ST_GeomFromText('LINESTRING(0 0,0 1,1 1)'),
+PRIMARY KEY(id,foo))
+ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+INSERT INTO t4 (id,c1) VALUES (1, REPEAT('a', 4000)), (2, REPEAT('a', 4000));
+ALTER TABLE t4 ADD COLUMN d1 INT;
+BEGIN;
+UPDATE t4 SET c1 = repeat('1', 4000), foo=1 WHERE id=1;
+INSERT INTO t4 (id,c1) VALUES (1, REPEAT('a', 4000));
+UPDATE t4 SET c1 = repeat('2', 4000), foo=1 WHERE id=2;
+ROLLBACK;
+BEGIN;
+UPDATE t4 SET d1 = 1,foo=2 WHERE id=1;
+INSERT INTO t4 (id,foo,c1) VALUES (1, 1, REPEAT('1', 4000));
+COMMIT;
+CREATE TABLE big
+(id INT PRIMARY KEY, c1 VARCHAR(4000), c2 VARCHAR(4000), c3 VARCHAR(1000),
+p POINT NOT NULL DEFAULT ST_GeomFromText('POINT(0 0)'), SPATIAL INDEX(p))
+ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+BEGIN;
+INSERT INTO big
+SET id=1, c1=REPEAT('a', 200), c2=REPEAT('b', 200), c3=REPEAT('c', 159);
+SET @i:=1;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+COMMIT;
+connection analyze;
+ANALYZE TABLE big;
+Table Op Msg_type Msg_text
+test.big analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+clust_index_size
+3
+connection default;
+ALTER TABLE big ADD COLUMN
+(d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+d3 TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp);
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
+CHECKSUM TABLE big;
+Table Checksum
+test.big 1705165209
+BEGIN;
+INSERT INTO big(id, c1, c2, c3) SELECT @i:=@i+1, c1, c2, c3 FROM big;
+INSERT INTO big(id, c1, c2, c3) SELECT @i:=@i+1, c1, c2, c3 FROM big;
+CHECKSUM TABLE big;
+Table Checksum
+test.big 385477733
+connection analyze;
+ANALYZE TABLE big;
+Table Op Msg_type Msg_text
+test.big analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+clust_index_size
+7
+connection default;
+ROLLBACK;
+CHECKSUM TABLE big;
+Table Checksum
+test.big 1705165209
+connection analyze;
+ANALYZE TABLE big;
+Table Op Msg_type Msg_text
+test.big analyze status OK
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+clust_index_size
+3
+connection default;
+InnoDB 0 transactions not purged
+DROP TABLE t1,t2,t3,t4,big;
+CREATE TABLE t1 (a VARCHAR(1) PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+INSERT INTO t1 SET a='a';
+ALTER TABLE t1 ADD COLUMN b INT NOT NULL DEFAULT 0;
+UPDATE t1 SET b = 1;
+INSERT INTO t1 SET a='a';
+ERROR 23000: Duplicate entry 'a' for key 'PRIMARY'
+SELECT * FROM t1;
+a b
+a 1
+DROP TABLE t1;
+disconnect analyze;
+SELECT variable_value-@old_instant instants
+FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column';
+instants
+36
+SET GLOBAL innodb_purge_rseg_truncate_frequency= @saved_frequency;
diff --git a/mysql-test/suite/innodb/r/instant_alter_crash.result b/mysql-test/suite/innodb/r/instant_alter_crash.result
new file mode 100644
index 00000000000..2daaf10fa67
--- /dev/null
+++ b/mysql-test/suite/innodb/r/instant_alter_crash.result
@@ -0,0 +1,104 @@
+FLUSH TABLES;
+#
+# MDEV-11369: Instant ADD COLUMN for InnoDB
+#
+CREATE TABLE t1(id INT PRIMARY KEY, c2 INT UNIQUE)
+ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t1 VALUES(1,2);
+BEGIN;
+INSERT INTO t2 VALUES(2,1);
+ALTER TABLE t2 ADD COLUMN (c3 TEXT NOT NULL DEFAULT 'De finibus bonorum');
+connect ddl, localhost, root;
+SET DEBUG_SYNC='innodb_alter_inplace_before_commit SIGNAL ddl WAIT_FOR ever';
+ALTER TABLE t1 ADD COLUMN (c3 TEXT NOT NULL DEFAULT ' et malorum');
+connection default;
+SET DEBUG_SYNC='now WAIT_FOR ddl';
+SET GLOBAL innodb_flush_log_at_trx_commit=1;
+COMMIT;
+# Kill the server
+disconnect ddl;
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+SELECT * FROM t1;
+id c2
+1 2
+SELECT * FROM t2;
+id c2 c3
+2 1 De finibus bonorum
+BEGIN;
+DELETE FROM t1;
+ROLLBACK;
+InnoDB 0 transactions not purged
+INSERT INTO t2 VALUES (64,42,'De finibus bonorum'), (347,33101,' et malorum');
+connect ddl, localhost, root;
+SET DEBUG_SYNC='innodb_alter_inplace_before_commit SIGNAL ddl WAIT_FOR ever';
+ALTER TABLE t2 ADD COLUMN (c4 TEXT NOT NULL DEFAULT ' et malorum');
+connection default;
+SET DEBUG_SYNC='now WAIT_FOR ddl';
+SET GLOBAL innodb_flush_log_at_trx_commit=1;
+DELETE FROM t1;
+# Kill the server
+disconnect ddl;
+SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+SELECT * FROM t1;
+id c2
+SELECT * FROM t2;
+id c2 c3
+2 1 De finibus bonorum
+64 42 De finibus bonorum
+347 33101 et malorum
+BEGIN;
+INSERT INTO t1 SET id=1;
+DELETE FROM t2;
+ROLLBACK;
+InnoDB 0 transactions not purged
+FLUSH TABLE t1,t2 FOR EXPORT;
+t1 clustered index root page(type 17855):
+N_RECS=0; LEVEL=0
+header=0x010000030074 (id=0x696e66696d756d00)
+header=0x010008030000 (id=0x73757072656d756d00)
+t2 clustered index root page(type 18):
+N_RECS=4; LEVEL=0
+header=0x010000030088 (id=0x696e66696d756d00)
+header=0x1000100b00b9 (id=0x80000000,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
+ c2=NULL(4 bytes),
+ c3=0x44652066696e6962757320626f6e6f72756d)
+header=0x0000180900d8 (id=0x80000002,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
+ c2=0x80000001)
+header=0x0000200900f8 (id=0x80000040,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
+ c2=0x8000002a)
+header=0x0000280b0074 (id=0x8000015b,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
+ c2=0x8000814d,
+ c3=0x206574206d616c6f72756d)
+header=0x050008030000 (id=0x73757072656d756d00)
+UNLOCK TABLES;
+DELETE FROM t2;
+InnoDB 0 transactions not purged
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `id` int(11) NOT NULL,
+ `c2` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `c2` (`c2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `c2` int(11) DEFAULT NULL,
+ `c3` text NOT NULL DEFAULT 'De finibus bonorum',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `c2` (`c2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
+DROP TABLE t1,t2;
+SET GLOBAL innodb_purge_rseg_truncate_frequency=@saved_frequency;
diff --git a/mysql-test/suite/innodb/r/instant_alter_debug.result b/mysql-test/suite/innodb/r/instant_alter_debug.result
new file mode 100644
index 00000000000..8b483693163
--- /dev/null
+++ b/mysql-test/suite/innodb/r/instant_alter_debug.result
@@ -0,0 +1,167 @@
+SET @save_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+CREATE TABLE t1 (
+pk INT AUTO_INCREMENT PRIMARY KEY,
+c1 INT,
+c2 VARCHAR(255),
+c3 VARCHAR(255),
+c4 INT,
+c5 INT,
+c6 INT,
+c7 VARCHAR(255),
+c8 TIMESTAMP NULL
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (NULL,1,NULL,'foo',NULL,1,NULL,NULL,'2011-11-11 00:00:00');
+ALTER TABLE t1 ADD COLUMN f INT;
+REPLACE INTO t1 (c7) VALUES ('bar');
+CREATE TABLE t2 (i INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (-1),(1);
+ALTER TABLE t2 ADD COLUMN j INT;
+BEGIN;
+DELETE FROM t2;
+ROLLBACK;
+TRUNCATE TABLE t2;
+INSERT INTO t2 VALUES (1,2);
+CREATE TABLE t3 (pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t3 () VALUES ();
+ALTER TABLE t3 ADD COLUMN f INT;
+UPDATE t3 SET pk = DEFAULT;
+SELECT * FROM t3;
+pk f
+0 NULL
+CREATE TABLE t4 (pk INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t4 VALUES (0);
+ALTER TABLE t4 ADD COLUMN b INT;
+SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
+LEFT JOIN t4 ON (NUMERIC_SCALE = pk);
+COUNT(*)
+1744
+SET DEBUG_SYNC='innodb_inplace_alter_table_enter SIGNAL enter WAIT_FOR delete';
+ALTER TABLE t4 ADD COLUMN c INT;
+connect dml,localhost,root,,;
+SET DEBUG_SYNC='now WAIT_FOR enter';
+DELETE FROM t4;
+InnoDB 0 transactions not purged
+SET DEBUG_SYNC='now SIGNAL delete';
+connection default;
+CREATE TABLE t5 (i INT, KEY(i)) ENGINE=InnoDB;
+INSERT INTO t5 VALUES (-42);
+ALTER TABLE t5 ADD UNIQUE ui(i);
+ALTER TABLE t5 ADD COLUMN i2 INT, DROP INDEX i;
+CREATE TABLE t6 (i INT NOT NULL) ENGINE=InnoDB;
+INSERT INTO t6 VALUES (0);
+ALTER TABLE t6 ADD COLUMN j INT;
+TRUNCATE TABLE t6;
+INSERT INTO t6 VALUES (1,2);
+CREATE TABLE t7 (i INT) ENGINE=InnoDB;
+INSERT INTO t7 VALUES (1),(2),(3),(4),(5);
+ALTER TABLE t7 ADD t TEXT DEFAULT '';
+CREATE TABLE t8 (i INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+INSERT INTO t8 VALUES (NULL);
+ALTER TABLE t8 ADD c CHAR(3);
+SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL rebuilt WAIT_FOR dml';
+ALTER TABLE t8 FORCE;
+connection dml;
+SET DEBUG_SYNC='now WAIT_FOR rebuilt';
+BEGIN;
+INSERT INTO t8 SET i=1;
+UPDATE t8 SET i=ISNULL(i);
+ROLLBACK;
+SET DEBUG_SYNC='now SIGNAL dml';
+connection default;
+SET DEBUG_SYNC='RESET';
+CREATE TABLE t9 (
+pk INT AUTO_INCREMENT PRIMARY KEY,
+c1 BIGINT UNSIGNED,
+c2 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
+c3 BIGINT,
+c4 VARCHAR(257) CHARACTER SET utf8,
+c5 TINYINT UNSIGNED,
+c6 TINYINT,
+c7 VARCHAR(257) CHARACTER SET latin1,
+c8 VARCHAR(257) CHARACTER SET binary
+) ENGINE=InnoDB;
+INSERT INTO t9 () VALUES ();
+ALTER TABLE t9 ADD COLUMN IF NOT EXISTS t TIMESTAMP NULL KEY;
+Warnings:
+Note 1061 Multiple primary key defined
+SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL rebuilt WAIT_FOR dml';
+OPTIMIZE TABLE t9;
+connection dml;
+SET DEBUG_SYNC='now WAIT_FOR rebuilt';
+BEGIN;
+INSERT INTO t9 () VALUES (),();
+UPDATE t9 SET t=current_timestamp();
+ROLLBACK;
+SET DEBUG_SYNC='now SIGNAL dml';
+disconnect dml;
+connection default;
+Table Op Msg_type Msg_text
+test.t9 optimize note Table does not support optimize, doing recreate + analyze instead
+test.t9 optimize status OK
+SET DEBUG_SYNC='RESET';
+CREATE TABLE t10 (pk INT DEFAULT 0 KEY) ENGINE=InnoDB;
+INSERT INTO t10 (pk) VALUES (1);
+ALTER TABLE t10 ADD c INT;
+TRUNCATE TABLE t10;
+INSERT INTO t10 VALUES (1,1),(2,2);
+ALTER TABLE t10 FORCE;
+CREATE TABLE t11 (
+c01 enum('a','b'),
+c02 bit,
+c03 blob,
+c04 enum('c','d'),
+c05 blob,
+c06 decimal,
+c07 char(1),
+c08 int,
+c09 char(1),
+c10 set('e','f'),
+c11 char(1),
+c12 float,
+c13 bit,
+c14 char(1),
+c15 int,
+c16 float,
+c17 decimal,
+c18 char(1) CHARACTER SET utf8 not null default '',
+c19 float,
+c20 set('g','h'),
+c21 char(1),
+c22 int,
+c23 int,
+c24 int,
+c25 set('i','j'),
+c26 decimal,
+c27 float,
+c28 char(1),
+c29 int,
+c30 enum('k','l'),
+c31 decimal,
+c32 char(1),
+c33 decimal,
+c34 bit,
+c35 enum('m','n'),
+c36 set('o','p'),
+c37 enum('q','r'),
+c38 blob,
+c39 decimal,
+c40 blob not null default '',
+c41 char(1),
+c42 int,
+c43 float,
+c44 float,
+c45 enum('s','t'),
+c46 decimal,
+c47 set('u','v'),
+c48 enum('w','x'),
+c49 set('y','z'),
+c50 float
+) ENGINE=InnoDB;
+INSERT INTO t11 () VALUES ();
+ALTER TABLE t11 ADD COLUMN f INT;
+INSERT INTO t11 () VALUES ();
+UPDATE t11 SET c22 = 1;
+InnoDB 0 transactions not purged
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11;
+SET GLOBAL innodb_purge_rseg_truncate_frequency = @save_frequency;
diff --git a/mysql-test/suite/innodb/r/instant_alter_inject.result b/mysql-test/suite/innodb/r/instant_alter_inject.result
new file mode 100644
index 00000000000..fe175f5bed0
--- /dev/null
+++ b/mysql-test/suite/innodb/r/instant_alter_inject.result
@@ -0,0 +1,66 @@
+CREATE TABLE t1(a INT PRIMARY KEY, b INT, KEY(b)) ENGINE=InnoDB
+ROW_FORMAT=REDUNDANT PARTITION BY KEY() PARTITIONS 3;
+INSERT INTO t1 (a) VALUES (1),(2),(3),(4),(5);
+SET @saved_dbug= @@SESSION.debug_dbug;
+SET DEBUG_DBUG='+d,ib_commit_inplace_fail_2';
+ALTER TABLE t1 ADD COLUMN c CHAR(3) DEFAULT 'lie';
+ERROR HY000: Internal error: Injected error!
+SET DEBUG_DBUG= @saved_dbug;
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+BEGIN;
+UPDATE t1 SET b=a+1;
+INSERT INTO t1 VALUES (0,1);
+ROLLBACK;
+SELECT * FROM t1;
+a b
+1 NULL
+2 NULL
+3 NULL
+4 NULL
+5 NULL
+ALTER TABLE t1 ADD COLUMN c CHAR(3) DEFAULT 'lie';
+SET DEBUG_DBUG='+d,ib_commit_inplace_fail_1';
+ALTER TABLE t1 ADD COLUMN d INT NOT NULL DEFAULT -42;
+ERROR HY000: Internal error: Injected error!
+SET DEBUG_DBUG= @saved_dbug;
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+BEGIN;
+DELETE FROM t1;
+INSERT INTO t1 VALUES (1,2,'foo');
+ROLLBACK;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) NOT NULL,
+ `b` int(11) DEFAULT NULL,
+ `c` char(3) DEFAULT 'lie',
+ PRIMARY KEY (`a`),
+ KEY `b` (`b`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
+ PARTITION BY KEY ()
+PARTITIONS 3
+DROP TABLE t1;
+CREATE TABLE t2(a INT, KEY(a)) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1);
+SET DEBUG_DBUG='+d,ib_commit_inplace_fail_1';
+ALTER TABLE t2 ADD COLUMN b INT;
+ERROR HY000: Internal error: Injected error!
+SET DEBUG_DBUG= @saved_dbug;
+CHECK TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 check status OK
+BEGIN;
+DELETE FROM t2;
+INSERT INTO t2 VALUES (1);
+ROLLBACK;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` int(11) DEFAULT NULL,
+ KEY `a` (`a`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+DROP TABLE t2;
diff --git a/mysql-test/suite/innodb/r/instant_alter_rollback.result b/mysql-test/suite/innodb/r/instant_alter_rollback.result
new file mode 100644
index 00000000000..ce49cea2343
--- /dev/null
+++ b/mysql-test/suite/innodb/r/instant_alter_rollback.result
@@ -0,0 +1,91 @@
+FLUSH TABLES;
+#
+# MDEV-11369: Instant ADD COLUMN for InnoDB
+#
+connect to_be_killed, localhost, root;
+CREATE TABLE empty_REDUNDANT
+(id INT PRIMARY KEY, c2 INT UNIQUE) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+CREATE TABLE once_REDUNDANT LIKE empty_REDUNDANT;
+CREATE TABLE twice_REDUNDANT LIKE empty_REDUNDANT;
+INSERT INTO once_REDUNDANT SET id=1,c2=1;
+INSERT INTO twice_REDUNDANT SET id=1,c2=1;
+ALTER TABLE empty_REDUNDANT ADD COLUMN (d1 INT DEFAULT 15);
+ALTER TABLE once_REDUNDANT ADD COLUMN (d1 INT DEFAULT 20);
+ALTER TABLE twice_REDUNDANT ADD COLUMN (d1 INT DEFAULT 20);
+ALTER TABLE twice_REDUNDANT ADD COLUMN
+(d2 INT NOT NULL DEFAULT 10,
+d3 VARCHAR(15) NOT NULL DEFAULT 'var och en char');
+CREATE TABLE empty_COMPACT
+(id INT PRIMARY KEY, c2 INT UNIQUE) ENGINE=InnoDB ROW_FORMAT=COMPACT;
+CREATE TABLE once_COMPACT LIKE empty_COMPACT;
+CREATE TABLE twice_COMPACT LIKE empty_COMPACT;
+INSERT INTO once_COMPACT SET id=1,c2=1;
+INSERT INTO twice_COMPACT SET id=1,c2=1;
+ALTER TABLE empty_COMPACT ADD COLUMN (d1 INT DEFAULT 15);
+ALTER TABLE once_COMPACT ADD COLUMN (d1 INT DEFAULT 20);
+ALTER TABLE twice_COMPACT ADD COLUMN (d1 INT DEFAULT 20);
+ALTER TABLE twice_COMPACT ADD COLUMN
+(d2 INT NOT NULL DEFAULT 10,
+d3 VARCHAR(15) NOT NULL DEFAULT 'var och en char');
+CREATE TABLE empty_DYNAMIC
+(id INT PRIMARY KEY, c2 INT UNIQUE) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+CREATE TABLE once_DYNAMIC LIKE empty_DYNAMIC;
+CREATE TABLE twice_DYNAMIC LIKE empty_DYNAMIC;
+INSERT INTO once_DYNAMIC SET id=1,c2=1;
+INSERT INTO twice_DYNAMIC SET id=1,c2=1;
+ALTER TABLE empty_DYNAMIC ADD COLUMN (d1 INT DEFAULT 15);
+ALTER TABLE once_DYNAMIC ADD COLUMN (d1 INT DEFAULT 20);
+ALTER TABLE twice_DYNAMIC ADD COLUMN (d1 INT DEFAULT 20);
+ALTER TABLE twice_DYNAMIC ADD COLUMN
+(d2 INT NOT NULL DEFAULT 10,
+d3 VARCHAR(15) NOT NULL DEFAULT 'var och en char');
+BEGIN;
+INSERT INTO empty_REDUNDANT set id=0,c2=42;
+UPDATE once_REDUNDANT set c2=c2+1;
+UPDATE twice_REDUNDANT set c2=c2+1;
+INSERT INTO twice_REDUNDANT SET id=2,c2=0,d3='';
+INSERT INTO empty_COMPACT set id=0,c2=42;
+UPDATE once_COMPACT set c2=c2+1;
+UPDATE twice_COMPACT set c2=c2+1;
+INSERT INTO twice_COMPACT SET id=2,c2=0,d3='';
+INSERT INTO empty_DYNAMIC set id=0,c2=42;
+UPDATE once_DYNAMIC set c2=c2+1;
+UPDATE twice_DYNAMIC set c2=c2+1;
+INSERT INTO twice_DYNAMIC SET id=2,c2=0,d3='';
+connection default;
+SET GLOBAL innodb_flush_log_at_trx_commit=1;
+CREATE TABLE foo(a INT PRIMARY KEY) ENGINE=InnoDB;
+# Kill the server
+disconnect to_be_killed;
+SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+DROP TABLE foo;
+InnoDB 0 transactions not purged
+SET GLOBAL innodb_purge_rseg_truncate_frequency=@saved_frequency;
+SELECT * FROM empty_REDUNDANT;
+id c2 d1
+SELECT * FROM once_REDUNDANT;
+id c2 d1
+1 1 20
+SELECT * FROM twice_REDUNDANT;
+id c2 d1 d2 d3
+1 1 20 10 var och en char
+DROP TABLE empty_REDUNDANT, once_REDUNDANT, twice_REDUNDANT;
+SELECT * FROM empty_COMPACT;
+id c2 d1
+SELECT * FROM once_COMPACT;
+id c2 d1
+1 1 20
+SELECT * FROM twice_COMPACT;
+id c2 d1 d2 d3
+1 1 20 10 var och en char
+DROP TABLE empty_COMPACT, once_COMPACT, twice_COMPACT;
+SELECT * FROM empty_DYNAMIC;
+id c2 d1
+SELECT * FROM once_DYNAMIC;
+id c2 d1
+1 1 20
+SELECT * FROM twice_DYNAMIC;
+id c2 d1 d2 d3
+1 1 20 10 var och en char
+DROP TABLE empty_DYNAMIC, once_DYNAMIC, twice_DYNAMIC;
diff --git a/mysql-test/suite/innodb/r/log_corruption.result b/mysql-test/suite/innodb/r/log_corruption.result
index 49f6e6b85d2..6bc10c970fc 100644
--- a/mysql-test/suite/innodb/r/log_corruption.result
+++ b/mysql-test/suite/innodb/r/log_corruption.result
@@ -49,6 +49,13 @@ AND support IN ('YES', 'DEFAULT', 'ENABLED');
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
FOUND 1 /InnoDB: Invalid log block checksum. block: 2372 checkpoint no: 1 expected: 3362026715 found: 144444122/ in mysqld.1.err
FOUND 1 /InnoDB: Missing MLOG_CHECKPOINT between the checkpoint 1213964 and the end 1213952\./ in mysqld.1.err
+# same, but with current-version header
+SELECT * FROM INFORMATION_SCHEMA.ENGINES
+WHERE engine = 'innodb'
+AND support IN ('YES', 'DEFAULT', 'ENABLED');
+ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
+FOUND 2 /InnoDB: Invalid log block checksum. block: 2372 checkpoint no: 1 expected: 3362026715 found: 144444122/ in mysqld.1.err
+FOUND 2 /InnoDB: Missing MLOG_CHECKPOINT between the checkpoint 1213964 and the end 1213952\./ in mysqld.1.err
# --innodb-force-recovery=6 (skip the entire redo log)
SELECT * FROM INFORMATION_SCHEMA.ENGINES
WHERE engine = 'innodb'
@@ -104,15 +111,21 @@ SELECT * FROM INFORMATION_SCHEMA.ENGINES
WHERE engine = 'innodb'
AND support IN ('YES', 'DEFAULT', 'ENABLED');
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
-FOUND 1 /InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42/ in mysqld.1.err
-FOUND 1 /Downgrade after a crash is not supported\. The redo log was created with MariaDB 10\.3\.1/ in mysqld.1.err
+FOUND 2 /InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42/ in mysqld.1.err
# Empty 10.3 redo log
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
WHERE engine = 'innodb'
AND support IN ('YES', 'DEFAULT', 'ENABLED');
COUNT(*)
1
-FOUND 1 /InnoDB: Downgrading redo log:/ in mysqld.1.err
+FOUND 1 /InnoDB: .* started; log sequence number 121397[09]/ in mysqld.1.err
+# Empty 10.2 redo log
+SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
+WHERE engine = 'innodb'
+AND support IN ('YES', 'DEFAULT', 'ENABLED');
+COUNT(*)
+1
+FOUND 2 /InnoDB: Upgrading redo log:/ in mysqld.1.err
# Minimal MariaDB 10.1.21 encrypted redo log
SELECT * FROM INFORMATION_SCHEMA.ENGINES
WHERE engine = 'innodb'
diff --git a/mysql-test/suite/innodb/r/monitor.result b/mysql-test/suite/innodb/r/monitor.result
index 33a09a553b9..2700479e7f7 100644
--- a/mysql-test/suite/innodb/r/monitor.result
+++ b/mysql-test/suite/innodb/r/monitor.result
@@ -622,46 +622,46 @@ set global innodb_monitor_reset_all = default;
# MONITORS
#
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
-NAME COUNT
+NAME COUNT > 0
buffer_page_written_index_leaf 0
SET GLOBAL innodb_monitor_enable='module_buffer_page';
INSERT INTO t1 VALUES (1), (2), (3), (4);
FLUSH TABLES t1 FOR EXPORT;
UNLOCK TABLES;
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
-NAME COUNT
-buffer_page_written_index_leaf NNNN
+NAME COUNT > 0
+buffer_page_written_index_leaf 1
SET GLOBAL innodb_monitor_disable='module_buffer_page';
SET GLOBAL innodb_monitor_reset_all='module_buffer_page';
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
-NAME COUNT
+NAME COUNT > 0
buffer_page_written_index_leaf 0
SET GLOBAL innodb_monitor_enable='%';
INSERT INTO t1 VALUES (5), (6), (7), (8);
FLUSH TABLES t1 FOR EXPORT;
UNLOCK TABLES;
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
-NAME COUNT
-buffer_page_written_index_leaf NNNN
+NAME COUNT > 0
+buffer_page_written_index_leaf 1
SET GLOBAL innodb_monitor_disable='%';
SET GLOBAL innodb_monitor_reset_all='%';
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
-NAME COUNT
+NAME COUNT > 0
buffer_page_written_index_leaf 0
SET GLOBAL innodb_monitor_enable='ALL';
INSERT INTO t1 VALUES (9), (10), (11), (12);
FLUSH TABLES t1 FOR EXPORT;
UNLOCK TABLES;
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
-NAME COUNT
-buffer_page_written_index_leaf NNNN
+NAME COUNT > 0
+buffer_page_written_index_leaf 1
SET GLOBAL innodb_monitor_enable=default;
SET GLOBAL innodb_monitor_disable=default;
SET GLOBAL innodb_monitor_reset_all=default;
diff --git a/mysql-test/suite/innodb/r/mvcc.result b/mysql-test/suite/innodb/r/mvcc.result
index 6826978d6a7..fc2d403fa63 100644
--- a/mysql-test/suite/innodb/r/mvcc.result
+++ b/mysql-test/suite/innodb/r/mvcc.result
@@ -23,6 +23,7 @@ connection default;
# FIXME: Block this with ER_TABLE_DEF_CHANGED
SELECT * FROM t1;
a
+0
COMMIT;
SELECT * FROM t1;
a
diff --git a/mysql-test/suite/innodb/r/recovery_shutdown.result b/mysql-test/suite/innodb/r/recovery_shutdown.result
index 694fd4d9194..d26163a0c4a 100644
--- a/mysql-test/suite/innodb/r/recovery_shutdown.result
+++ b/mysql-test/suite/innodb/r/recovery_shutdown.result
@@ -1,3 +1,4 @@
+FLUSH TABLES;
#
# MDEV-13797 InnoDB may hang if shutdown is initiated soon after startup
# while rolling back recovered incomplete transactions
diff --git a/mysql-test/suite/innodb/r/rename_table_debug.result b/mysql-test/suite/innodb/r/rename_table_debug.result
index 7c9b961dee5..976b609bdd5 100644
--- a/mysql-test/suite/innodb/r/rename_table_debug.result
+++ b/mysql-test/suite/innodb/r/rename_table_debug.result
@@ -9,27 +9,4 @@ disconnect con1;
SELECT * FROM t1;
a b c d
1 NULL NULL NULL
-BEGIN;
-COMMIT;
-UPDATE t1 SET b=a%7, c=a%11, d=a%13;
-SET DEBUG_DBUG='+d,crash_commit_before';
-ALTER TABLE t1
-ADD INDEX(b,c,d,a),ADD INDEX(b,c,a,d),ADD INDEX(b,a,c,d),ADD INDEX(b,a,d,c),
-ADD INDEX(b,d,a,c),ADD INDEX(b,d,c,a),ADD INDEX(a,b,c,d),ADD INDEX(a,b,d,c),
-ADD INDEX(a,c,b,d),ADD INDEX(a,c,d,b),ADD INDEX(a,d,b,c),ADD INDEX(a,d,c,b),
-ADD INDEX(c,a,b,d),ADD INDEX(c,a,d,b),ADD INDEX(c,b,a,d),ADD INDEX(c,b,d,a),
-ADD INDEX(c,d,a,b),ADD INDEX(c,d,b,a),ADD INDEX(d,a,b,c),ADD INDEX(d,a,c,b),
-ADD INDEX(d,b,a,c),ADD INDEX(d,b,c,a),ADD INDEX(d,c,a,b),ADD INDEX(d,c,b,a),
-ADD INDEX(a,b,c), ADD INDEX(a,c,b), ADD INDEX(a,c,d), ADD INDEX(a,d,c),
-ADD INDEX(a,b,d), ADD INDEX(a,d,b), ADD INDEX(b,c,d), ADD INDEX(b,d,c),
-ALGORITHM=COPY;
-ERROR HY000: Lost connection to MySQL server during query
-CHECK TABLE t1;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-1000
DROP TABLE t1;
-SET GLOBAL innodb_background_drop_list_empty=
-@@GLOBAL.innodb_background_drop_list_empty;
diff --git a/mysql-test/suite/innodb/r/row_format_redundant.result b/mysql-test/suite/innodb/r/row_format_redundant.result
index a2d5bbef8df..6deecd10ada 100644
--- a/mysql-test/suite/innodb/r/row_format_redundant.result
+++ b/mysql-test/suite/innodb/r/row_format_redundant.result
@@ -72,7 +72,7 @@ DROP TABLE t1;
Warnings:
Warning 1932 Table 'test.t1' doesn't exist in engine
DROP TABLE t2,t3;
-FOUND 49 /\[ERROR\] InnoDB: Table `test`\.`t1` in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=1 SYS_TABLES\.MIX_LEN=255\b/ in mysqld.1.err
+FOUND 49 /\[ERROR\] InnoDB: Table `test`\.`t1` in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=1 SYS_TABLES\.MIX_LEN=511\b/ in mysqld.1.err
ib_buffer_pool
ib_logfile0
ib_logfile1
diff --git a/mysql-test/suite/innodb/r/table_flags,32k.rdiff b/mysql-test/suite/innodb/r/table_flags,32k.rdiff
index ea2d7048bb7..ce1ff623d50 100644
--- a/mysql-test/suite/innodb/r/table_flags,32k.rdiff
+++ b/mysql-test/suite/innodb/r/table_flags,32k.rdiff
@@ -9,93 +9,8 @@
SET innodb_strict_mode=ON;
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
-@@ -13,7 +15,7 @@
- header=0x01000003016e (NAME=0x696e66696d756d00)
- header=0x00002815008d (NAME='SYS_DATAFILES',
- DB_TRX_ID=0x000000000302,
-- DB_ROLL_PTR=0x81000001320194,
-+ DB_ROLL_PTR=0x81000001310194,
- ID=0x000000000000000e,
- N_COLS=0x00000002,
- TYPE=0x00000001,
-@@ -23,7 +25,7 @@
- SPACE=0x00000000)
- header=0x0000101500d5 (NAME='SYS_FOREIGN',
- DB_TRX_ID=0x000000000300,
-- DB_ROLL_PTR=0x800000012d0110,
-+ DB_ROLL_PTR=0x800000012c0110,
- ID=0x000000000000000b,
- N_COLS=0x00000004,
- TYPE=0x00000001,
-@@ -33,7 +35,7 @@
- SPACE=0x00000000)
- header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
- DB_TRX_ID=0x000000000300,
-- DB_ROLL_PTR=0x800000012d0201,
-+ DB_ROLL_PTR=0x800000012c0201,
- ID=0x000000000000000c,
- N_COLS=0x00000004,
- TYPE=0x00000001,
-@@ -43,7 +45,7 @@
- SPACE=0x00000000)
- header=0x0400201501b8 (NAME='SYS_TABLESPACES',
- DB_TRX_ID=0x000000000302,
-- DB_ROLL_PTR=0x81000001320110,
-+ DB_ROLL_PTR=0x81000001310110,
- ID=0x000000000000000d,
- N_COLS=0x00000003,
- TYPE=0x00000001,
-@@ -53,7 +55,7 @@
- SPACE=0x00000000)
- header=0x000030150244 (NAME='SYS_VIRTUAL',
- DB_TRX_ID=0x000000000304,
-- DB_ROLL_PTR=0x82000001350110,
-+ DB_ROLL_PTR=0x82000001340110,
- ID=0x000000000000000f,
- N_COLS=0x00000003,
- TYPE=0x00000001,
-@@ -63,7 +65,7 @@
- SPACE=0x00000000)
- header=0x000040150288 (NAME='test/tc',
- DB_TRX_ID=0x000000000308,
-- DB_ROLL_PTR=0x84000001380110,
-+ DB_ROLL_PTR=0x84000001370110,
- ID=0x0000000000000011,
- N_COLS=0x80000001,
- TYPE=0x00000001,
-@@ -73,7 +75,7 @@
- SPACE=0x00000002)
- header=0x000048150310 (NAME='test/td',
- DB_TRX_ID=0x00000000030a,
-- DB_ROLL_PTR=0x85000001390110,
-+ DB_ROLL_PTR=0x85000001380110,
- ID=0x0000000000000012,
- N_COLS=0x80000001,
- TYPE=0x00000021,
-@@ -83,7 +85,7 @@
- SPACE=0x00000003)
- header=0x000058150200 (NAME='test/tp',
- DB_TRX_ID=0x00000000030e,
-- DB_ROLL_PTR=0x870000013b0110,
-+ DB_ROLL_PTR=0x870000013a0110,
- ID=0x0000000000000014,
- N_COLS=0x80000001,
- TYPE=0x000009a1,
-@@ -93,7 +95,7 @@
- SPACE=0x00000005)
- header=0x0000381502cc (NAME='test/tr',
- DB_TRX_ID=0x000000000306,
-- DB_ROLL_PTR=0x83000001370110,
-+ DB_ROLL_PTR=0x83000001360110,
- ID=0x0000000000000010,
- N_COLS=0x00000001,
- TYPE=0x00000001,
-@@ -103,10 +105,10 @@
- SPACE=0x00000001)
- header=0x000050150074 (NAME='test/tz',
- DB_TRX_ID=0x00000000030c,
-- DB_ROLL_PTR=0x860000013a0110,
-+ DB_ROLL_PTR=0x86000001390110,
+@@ -103,7 +105,7 @@
+ DB_ROLL_PTR=0x80000000000000,
ID=0x0000000000000013,
N_COLS=0x80000001,
- TYPE=0x00000023,
diff --git a/mysql-test/suite/innodb/r/table_flags,4k.rdiff b/mysql-test/suite/innodb/r/table_flags,4k.rdiff
deleted file mode 100644
index 0e469ee631b..00000000000
--- a/mysql-test/suite/innodb/r/table_flags,4k.rdiff
+++ /dev/null
@@ -1,92 +0,0 @@
---- suite/innodb/r/table_flags.result
-+++ suite/innodb/r/table_flags,4k.reject
-@@ -13,7 +13,7 @@
- header=0x01000003016e (NAME=0x696e66696d756d00)
- header=0x00002815008d (NAME='SYS_DATAFILES',
- DB_TRX_ID=0x000000000302,
-- DB_ROLL_PTR=0x81000001320194,
-+ DB_ROLL_PTR=0x81000003260194,
- ID=0x000000000000000e,
- N_COLS=0x00000002,
- TYPE=0x00000001,
-@@ -23,7 +23,7 @@
- SPACE=0x00000000)
- header=0x0000101500d5 (NAME='SYS_FOREIGN',
- DB_TRX_ID=0x000000000300,
-- DB_ROLL_PTR=0x800000012d0110,
-+ DB_ROLL_PTR=0x80000003200110,
- ID=0x000000000000000b,
- N_COLS=0x00000004,
- TYPE=0x00000001,
-@@ -33,7 +33,7 @@
- SPACE=0x00000000)
- header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
- DB_TRX_ID=0x000000000300,
-- DB_ROLL_PTR=0x800000012d0201,
-+ DB_ROLL_PTR=0x80000003200201,
- ID=0x000000000000000c,
- N_COLS=0x00000004,
- TYPE=0x00000001,
-@@ -43,7 +43,7 @@
- SPACE=0x00000000)
- header=0x0400201501b8 (NAME='SYS_TABLESPACES',
- DB_TRX_ID=0x000000000302,
-- DB_ROLL_PTR=0x81000001320110,
-+ DB_ROLL_PTR=0x81000003260110,
- ID=0x000000000000000d,
- N_COLS=0x00000003,
- TYPE=0x00000001,
-@@ -53,7 +53,7 @@
- SPACE=0x00000000)
- header=0x000030150244 (NAME='SYS_VIRTUAL',
- DB_TRX_ID=0x000000000304,
-- DB_ROLL_PTR=0x82000001350110,
-+ DB_ROLL_PTR=0x820000032a0110,
- ID=0x000000000000000f,
- N_COLS=0x00000003,
- TYPE=0x00000001,
-@@ -63,7 +63,7 @@
- SPACE=0x00000000)
- header=0x000040150288 (NAME='test/tc',
- DB_TRX_ID=0x000000000308,
-- DB_ROLL_PTR=0x84000001380110,
-+ DB_ROLL_PTR=0x840000032d0110,
- ID=0x0000000000000011,
- N_COLS=0x80000001,
- TYPE=0x00000001,
-@@ -73,7 +73,7 @@
- SPACE=0x00000002)
- header=0x000048150310 (NAME='test/td',
- DB_TRX_ID=0x00000000030a,
-- DB_ROLL_PTR=0x85000001390110,
-+ DB_ROLL_PTR=0x850000032f0110,
- ID=0x0000000000000012,
- N_COLS=0x80000001,
- TYPE=0x00000021,
-@@ -83,7 +83,7 @@
- SPACE=0x00000003)
- header=0x000058150200 (NAME='test/tp',
- DB_TRX_ID=0x00000000030e,
-- DB_ROLL_PTR=0x870000013b0110,
-+ DB_ROLL_PTR=0x87000003310110,
- ID=0x0000000000000014,
- N_COLS=0x80000001,
- TYPE=0x000009a1,
-@@ -93,7 +93,7 @@
- SPACE=0x00000005)
- header=0x0000381502cc (NAME='test/tr',
- DB_TRX_ID=0x000000000306,
-- DB_ROLL_PTR=0x83000001370110,
-+ DB_ROLL_PTR=0x830000032c0110,
- ID=0x0000000000000010,
- N_COLS=0x00000001,
- TYPE=0x00000001,
-@@ -103,7 +103,7 @@
- SPACE=0x00000001)
- header=0x000050150074 (NAME='test/tz',
- DB_TRX_ID=0x00000000030c,
-- DB_ROLL_PTR=0x860000013a0110,
-+ DB_ROLL_PTR=0x86000003300110,
- ID=0x0000000000000013,
- N_COLS=0x80000001,
- TYPE=0x00000023,
diff --git a/mysql-test/suite/innodb/r/table_flags,64k.rdiff b/mysql-test/suite/innodb/r/table_flags,64k.rdiff
index ce2d7faa925..f2ba1280be3 100644
--- a/mysql-test/suite/innodb/r/table_flags,64k.rdiff
+++ b/mysql-test/suite/innodb/r/table_flags,64k.rdiff
@@ -9,93 +9,8 @@
SET innodb_strict_mode=ON;
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
-@@ -13,7 +15,7 @@
- header=0x01000003016e (NAME=0x696e66696d756d00)
- header=0x00002815008d (NAME='SYS_DATAFILES',
- DB_TRX_ID=0x000000000302,
-- DB_ROLL_PTR=0x81000001320194,
-+ DB_ROLL_PTR=0x81000001310194,
- ID=0x000000000000000e,
- N_COLS=0x00000002,
- TYPE=0x00000001,
-@@ -23,7 +25,7 @@
- SPACE=0x00000000)
- header=0x0000101500d5 (NAME='SYS_FOREIGN',
- DB_TRX_ID=0x000000000300,
-- DB_ROLL_PTR=0x800000012d0110,
-+ DB_ROLL_PTR=0x800000012c0110,
- ID=0x000000000000000b,
- N_COLS=0x00000004,
- TYPE=0x00000001,
-@@ -33,7 +35,7 @@
- SPACE=0x00000000)
- header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
- DB_TRX_ID=0x000000000300,
-- DB_ROLL_PTR=0x800000012d0201,
-+ DB_ROLL_PTR=0x800000012c0201,
- ID=0x000000000000000c,
- N_COLS=0x00000004,
- TYPE=0x00000001,
-@@ -43,7 +45,7 @@
- SPACE=0x00000000)
- header=0x0400201501b8 (NAME='SYS_TABLESPACES',
- DB_TRX_ID=0x000000000302,
-- DB_ROLL_PTR=0x81000001320110,
-+ DB_ROLL_PTR=0x81000001310110,
- ID=0x000000000000000d,
- N_COLS=0x00000003,
- TYPE=0x00000001,
-@@ -53,7 +55,7 @@
- SPACE=0x00000000)
- header=0x000030150244 (NAME='SYS_VIRTUAL',
- DB_TRX_ID=0x000000000304,
-- DB_ROLL_PTR=0x82000001350110,
-+ DB_ROLL_PTR=0x82000001340110,
- ID=0x000000000000000f,
- N_COLS=0x00000003,
- TYPE=0x00000001,
-@@ -63,7 +65,7 @@
- SPACE=0x00000000)
- header=0x000040150288 (NAME='test/tc',
- DB_TRX_ID=0x000000000308,
-- DB_ROLL_PTR=0x84000001380110,
-+ DB_ROLL_PTR=0x84000001370110,
- ID=0x0000000000000011,
- N_COLS=0x80000001,
- TYPE=0x00000001,
-@@ -73,7 +75,7 @@
- SPACE=0x00000002)
- header=0x000048150310 (NAME='test/td',
- DB_TRX_ID=0x00000000030a,
-- DB_ROLL_PTR=0x85000001390110,
-+ DB_ROLL_PTR=0x85000001380110,
- ID=0x0000000000000012,
- N_COLS=0x80000001,
- TYPE=0x00000021,
-@@ -83,7 +85,7 @@
- SPACE=0x00000003)
- header=0x000058150200 (NAME='test/tp',
- DB_TRX_ID=0x00000000030e,
-- DB_ROLL_PTR=0x870000013b0110,
-+ DB_ROLL_PTR=0x870000013a0110,
- ID=0x0000000000000014,
- N_COLS=0x80000001,
- TYPE=0x000009a1,
-@@ -93,7 +95,7 @@
- SPACE=0x00000005)
- header=0x0000381502cc (NAME='test/tr',
- DB_TRX_ID=0x000000000306,
-- DB_ROLL_PTR=0x83000001370110,
-+ DB_ROLL_PTR=0x83000001360110,
- ID=0x0000000000000010,
- N_COLS=0x00000001,
- TYPE=0x00000001,
-@@ -103,10 +105,10 @@
- SPACE=0x00000001)
- header=0x000050150074 (NAME='test/tz',
- DB_TRX_ID=0x00000000030c,
-- DB_ROLL_PTR=0x860000013a0110,
-+ DB_ROLL_PTR=0x86000001390110,
+@@ -103,7 +105,7 @@
+ DB_ROLL_PTR=0x80000000000000,
ID=0x0000000000000013,
N_COLS=0x80000001,
- TYPE=0x00000023,
diff --git a/mysql-test/suite/innodb/r/table_flags,8k.rdiff b/mysql-test/suite/innodb/r/table_flags,8k.rdiff
deleted file mode 100644
index d5b5731b305..00000000000
--- a/mysql-test/suite/innodb/r/table_flags,8k.rdiff
+++ /dev/null
@@ -1,92 +0,0 @@
---- suite/innodb/r/table_flags.result
-+++ suite/innodb/r/table_flags,8k.reject
-@@ -13,7 +13,7 @@
- header=0x01000003016e (NAME=0x696e66696d756d00)
- header=0x00002815008d (NAME='SYS_DATAFILES',
- DB_TRX_ID=0x000000000302,
-- DB_ROLL_PTR=0x81000001320194,
-+ DB_ROLL_PTR=0x81000001d70194,
- ID=0x000000000000000e,
- N_COLS=0x00000002,
- TYPE=0x00000001,
-@@ -23,7 +23,7 @@
- SPACE=0x00000000)
- header=0x0000101500d5 (NAME='SYS_FOREIGN',
- DB_TRX_ID=0x000000000300,
-- DB_ROLL_PTR=0x800000012d0110,
-+ DB_ROLL_PTR=0x80000001d10110,
- ID=0x000000000000000b,
- N_COLS=0x00000004,
- TYPE=0x00000001,
-@@ -33,7 +33,7 @@
- SPACE=0x00000000)
- header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
- DB_TRX_ID=0x000000000300,
-- DB_ROLL_PTR=0x800000012d0201,
-+ DB_ROLL_PTR=0x80000001d10201,
- ID=0x000000000000000c,
- N_COLS=0x00000004,
- TYPE=0x00000001,
-@@ -43,7 +43,7 @@
- SPACE=0x00000000)
- header=0x0400201501b8 (NAME='SYS_TABLESPACES',
- DB_TRX_ID=0x000000000302,
-- DB_ROLL_PTR=0x81000001320110,
-+ DB_ROLL_PTR=0x81000001d70110,
- ID=0x000000000000000d,
- N_COLS=0x00000003,
- TYPE=0x00000001,
-@@ -53,7 +53,7 @@
- SPACE=0x00000000)
- header=0x000030150244 (NAME='SYS_VIRTUAL',
- DB_TRX_ID=0x000000000304,
-- DB_ROLL_PTR=0x82000001350110,
-+ DB_ROLL_PTR=0x82000001da0110,
- ID=0x000000000000000f,
- N_COLS=0x00000003,
- TYPE=0x00000001,
-@@ -63,7 +63,7 @@
- SPACE=0x00000000)
- header=0x000040150288 (NAME='test/tc',
- DB_TRX_ID=0x000000000308,
-- DB_ROLL_PTR=0x84000001380110,
-+ DB_ROLL_PTR=0x84000001dd0110,
- ID=0x0000000000000011,
- N_COLS=0x80000001,
- TYPE=0x00000001,
-@@ -73,7 +73,7 @@
- SPACE=0x00000002)
- header=0x000048150310 (NAME='test/td',
- DB_TRX_ID=0x00000000030a,
-- DB_ROLL_PTR=0x85000001390110,
-+ DB_ROLL_PTR=0x85000001de0110,
- ID=0x0000000000000012,
- N_COLS=0x80000001,
- TYPE=0x00000021,
-@@ -83,7 +83,7 @@
- SPACE=0x00000003)
- header=0x000058150200 (NAME='test/tp',
- DB_TRX_ID=0x00000000030e,
-- DB_ROLL_PTR=0x870000013b0110,
-+ DB_ROLL_PTR=0x87000001e00110,
- ID=0x0000000000000014,
- N_COLS=0x80000001,
- TYPE=0x000009a1,
-@@ -93,7 +93,7 @@
- SPACE=0x00000005)
- header=0x0000381502cc (NAME='test/tr',
- DB_TRX_ID=0x000000000306,
-- DB_ROLL_PTR=0x83000001370110,
-+ DB_ROLL_PTR=0x83000001dc0110,
- ID=0x0000000000000010,
- N_COLS=0x00000001,
- TYPE=0x00000001,
-@@ -103,7 +103,7 @@
- SPACE=0x00000001)
- header=0x000050150074 (NAME='test/tz',
- DB_TRX_ID=0x00000000030c,
-- DB_ROLL_PTR=0x860000013a0110,
-+ DB_ROLL_PTR=0x86000001df0110,
- ID=0x0000000000000013,
- N_COLS=0x80000001,
- TYPE=0x00000023,
diff --git a/mysql-test/suite/innodb/r/table_flags.result b/mysql-test/suite/innodb/r/table_flags.result
index 1cd60bbcc3e..c82cd6ceccb 100644
--- a/mysql-test/suite/innodb/r/table_flags.result
+++ b/mysql-test/suite/innodb/r/table_flags.result
@@ -12,8 +12,8 @@ SYS_TABLES clustered index root page (8):
N_RECS=10; LEVEL=0; INDEX_ID=0x0000000000000001
header=0x01000003016e (NAME=0x696e66696d756d00)
header=0x00002815008d (NAME='SYS_DATAFILES',
- DB_TRX_ID=0x000000000302,
- DB_ROLL_PTR=0x81000001320194,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
ID=0x000000000000000e,
N_COLS=0x00000002,
TYPE=0x00000001,
@@ -22,8 +22,8 @@ header=0x00002815008d (NAME='SYS_DATAFILES',
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
header=0x0000101500d5 (NAME='SYS_FOREIGN',
- DB_TRX_ID=0x000000000300,
- DB_ROLL_PTR=0x800000012d0110,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
ID=0x000000000000000b,
N_COLS=0x00000004,
TYPE=0x00000001,
@@ -32,8 +32,8 @@ header=0x0000101500d5 (NAME='SYS_FOREIGN',
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
- DB_TRX_ID=0x000000000300,
- DB_ROLL_PTR=0x800000012d0201,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
ID=0x000000000000000c,
N_COLS=0x00000004,
TYPE=0x00000001,
@@ -42,8 +42,8 @@ header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
header=0x0400201501b8 (NAME='SYS_TABLESPACES',
- DB_TRX_ID=0x000000000302,
- DB_ROLL_PTR=0x81000001320110,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
ID=0x000000000000000d,
N_COLS=0x00000003,
TYPE=0x00000001,
@@ -52,8 +52,8 @@ header=0x0400201501b8 (NAME='SYS_TABLESPACES',
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
header=0x000030150244 (NAME='SYS_VIRTUAL',
- DB_TRX_ID=0x000000000304,
- DB_ROLL_PTR=0x82000001350110,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
ID=0x000000000000000f,
N_COLS=0x00000003,
TYPE=0x00000001,
@@ -62,8 +62,8 @@ header=0x000030150244 (NAME='SYS_VIRTUAL',
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000000)
header=0x000040150288 (NAME='test/tc',
- DB_TRX_ID=0x000000000308,
- DB_ROLL_PTR=0x84000001380110,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
ID=0x0000000000000011,
N_COLS=0x80000001,
TYPE=0x00000001,
@@ -72,8 +72,8 @@ header=0x000040150288 (NAME='test/tc',
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000002)
header=0x000048150310 (NAME='test/td',
- DB_TRX_ID=0x00000000030a,
- DB_ROLL_PTR=0x85000001390110,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
ID=0x0000000000000012,
N_COLS=0x80000001,
TYPE=0x00000021,
@@ -82,8 +82,8 @@ header=0x000048150310 (NAME='test/td',
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000003)
header=0x000058150200 (NAME='test/tp',
- DB_TRX_ID=0x00000000030e,
- DB_ROLL_PTR=0x870000013b0110,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
ID=0x0000000000000014,
N_COLS=0x80000001,
TYPE=0x000009a1,
@@ -92,8 +92,8 @@ header=0x000058150200 (NAME='test/tp',
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000005)
header=0x0000381502cc (NAME='test/tr',
- DB_TRX_ID=0x000000000306,
- DB_ROLL_PTR=0x83000001370110,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
ID=0x0000000000000010,
N_COLS=0x00000001,
TYPE=0x00000001,
@@ -102,8 +102,8 @@ header=0x0000381502cc (NAME='test/tr',
CLUSTER_NAME=NULL(0 bytes),
SPACE=0x00000001)
header=0x000050150074 (NAME='test/tz',
- DB_TRX_ID=0x00000000030c,
- DB_ROLL_PTR=0x860000013a0110,
+ DB_TRX_ID=0x000000000000,
+ DB_ROLL_PTR=0x80000000000000,
ID=0x0000000000000013,
N_COLS=0x80000001,
TYPE=0x00000023,
diff --git a/mysql-test/suite/innodb/r/truncate_debug.result b/mysql-test/suite/innodb/r/truncate_debug.result
index c04b83dbbe8..27410b9417a 100644
--- a/mysql-test/suite/innodb/r/truncate_debug.result
+++ b/mysql-test/suite/innodb/r/truncate_debug.result
@@ -7,10 +7,10 @@ SET GLOBAL innodb_adaptive_hash_index=ON;
Test_1 :- Check if DDL operations are possible on
table being truncated. Also check if
DDL operations on other tables succeed.
-create table t1 (f1 int,f2 int,key(f2),f3 int) engine=innodb;
+create table t1 (f1 int,f2 int,key(f2),f3 int) engine=innodb row_format=redundant;
create index idx1 on t1(f3);
-create table t2 (f1 int,f2 int,key(f2),f3 int) engine=innodb;
-create table t3 (f1 int,f2 int,key(f2)) engine=innodb;
+create table t2 (f1 int,f2 int,key(f2),f3 int) engine=innodb row_format=redundant;
+create table t3 (f1 int,f2 int,key(f2)) engine=innodb row_format=redundant;
insert into t1 values (10,20,30),(30,40,50),(50,60,70);
insert into t1 select * from t1;
insert into t1 select * from t1;
diff --git a/mysql-test/suite/innodb/r/update_time_wl6658.result b/mysql-test/suite/innodb/r/update_time_wl6658.result
index 9c069478ace..fcd7a53351a 100644
--- a/mysql-test/suite/innodb/r/update_time_wl6658.result
+++ b/mysql-test/suite/innodb/r/update_time_wl6658.result
@@ -176,8 +176,9 @@ FROM information_schema.tables WHERE table_name='tab1i';
update_time
NULL
BEGIN WORK;
-INSERT INTO tab2 VALUES(1,'Oracle','NUTT',10);
+DELETE FROM tab1i;
SAVEPOINT A;
+INSERT INTO tab2 VALUES(1,'Oracle','NUTT',10);
INSERT INTO tab2 VALUES(2,'HUAWEI','BOLT',40);
SAVEPOINT B;
INSERT INTO tab2 VALUES(3,'IBM','NAIL',70);
@@ -185,17 +186,16 @@ SAVEPOINT C;
ROLLBACK to A;
SELECT * FROM tab2;
id store_name parts store_id
-1 Oracle NUTT 10
SELECT update_time
FROM information_schema.tables WHERE table_name='tab2';
update_time
NULL
#execute DDL instead of commit
create table tab6(c1 int);
-SELECT COUNT(update_time)
+SELECT update_time
FROM information_schema.tables WHERE table_name='tab2';
-COUNT(update_time)
-1
+update_time
+NULL
START TRANSACTION;
DELETE FROM tab7;
ROLLBACK;
diff --git a/mysql-test/suite/innodb/t/alter_rename_existing.test b/mysql-test/suite/innodb/t/alter_rename_existing.test
index 0c8bf481969..3173906841c 100644
--- a/mysql-test/suite/innodb/t/alter_rename_existing.test
+++ b/mysql-test/suite/innodb/t/alter_rename_existing.test
@@ -61,10 +61,10 @@ ALTER TABLE t1 ADD COLUMN d INT, ALGORITHM=COPY;
SET GLOBAL innodb_file_per_table=ON;
--replace_regex /$MYSQLD_DATADIR/MYSQLD_DATADIR/
--error ER_TABLESPACE_EXISTS
-ALTER TABLE t1 ADD COLUMN e1 INT, ALGORITHM=INPLACE;
+ALTER TABLE t1 FORCE, ALGORITHM=INPLACE;
--replace_regex /Error on rename of '.*' to '.*'/Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME'/
--error ER_ERROR_ON_RENAME
-ALTER TABLE t1 ADD COLUMN e2 INT, ALGORITHM=COPY;
+ALTER TABLE t1 FORCE, ALGORITHM=COPY;
--echo #
--echo # Delete the blocking file called MYSQLD_DATADIR/test/t1.ibd
@@ -72,7 +72,7 @@ ALTER TABLE t1 ADD COLUMN e2 INT, ALGORITHM=COPY;
--echo # Move t1 to file-per-table using ALGORITHM=INPLACE with no blocking t1.ibd.
--echo #
-ALTER TABLE t1 ADD COLUMN e INT, ALGORITHM=INPLACE;
+ALTER TABLE t1 FORCE, ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
SELECT name, space=0 FROM information_schema.innodb_sys_tables WHERE name = 'test/t1';
diff --git a/mysql-test/suite/innodb/t/ddl_purge.test b/mysql-test/suite/innodb/t/ddl_purge.test
new file mode 100644
index 00000000000..60d17acead8
--- /dev/null
+++ b/mysql-test/suite/innodb/t/ddl_purge.test
@@ -0,0 +1,36 @@
+--source innodb_default_row_format.inc
+--source include/have_debug.inc
+--source include/have_debug_sync.inc
+
+CREATE TABLE t0 (pk INT PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t1 (pk INT PRIMARY KEY, b INT) ENGINE=InnoDB;
+
+--connect (con1,localhost,root,,test)
+BEGIN;
+INSERT INTO t0 SET pk=1;
+
+--connect (con2,localhost,root,,test)
+BEGIN;
+INSERT INTO t0 SET pk=2;
+
+--connection default
+SET DEBUG_SYNC='alter_table_inplace_after_lock_downgrade SIGNAL prepared WAIT_FOR logged';
+send ALTER TABLE t1 FORCE;
+
+--connection con1
+SET DEBUG_SYNC='now WAIT_FOR prepared';
+INSERT INTO t1 SET pk=1;
+COMMIT;
+--disconnect con1
+
+--connection con2
+UPDATE t1 SET b=1;
+DELETE FROM t1;
+ROLLBACK;
+SET DEBUG_SYNC='now SIGNAL logged';
+--disconnect con2
+
+--connection default
+reap;
+SET DEBUG_SYNC='RESET';
+DROP TABLE t0,t1;
diff --git a/mysql-test/suite/innodb/t/dml_purge.test b/mysql-test/suite/innodb/t/dml_purge.test
new file mode 100644
index 00000000000..720acfb1577
--- /dev/null
+++ b/mysql-test/suite/innodb/t/dml_purge.test
@@ -0,0 +1,59 @@
+--source include/innodb_page_size.inc
+--source include/not_embedded.inc
+
+let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
+let MYSQLD_DATADIR=`select @@datadir`;
+
+--echo #
+--echo # MDEV-12288 Reset DB_TRX_ID when the history is removed,
+--echo # to speed up MVCC
+--echo #
+
+SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
+
+CREATE TABLE t1(a INT PRIMARY KEY, b INT NOT NULL)
+ROW_FORMAT=REDUNDANT ENGINE=InnoDB;
+INSERT INTO t1 VALUES(1,2),(3,4);
+UPDATE t1 SET b=-3 WHERE a=3;
+
+# Initiate a full purge, which should reset all DB_TRX_ID.
+SET GLOBAL innodb_fast_shutdown=0;
+--source include/shutdown_mysqld.inc
+# The following is based on innodb.table_flags:
+--perl
+use strict;
+my $ps= $ENV{INNODB_PAGE_SIZE};
+my $file= "$ENV{MYSQLD_DATADIR}/test/t1.ibd";
+open(FILE, "<", $file) || die "Unable to open $file\n";
+my $page;
+print "Clustered index root page contents:\n";
+sysseek(FILE, 3*$ps, 0) || die "Unable to seek $file";
+die "Unable to read $file" unless sysread(FILE, $page, $ps) == $ps;
+print "N_RECS=", unpack("n", substr($page,38+16,2));
+print "; LEVEL=", unpack("n", substr($page,38+26,2)), "\n";
+my @fields=("a","DB_TRX_ID","DB_ROLL_PTR", "b");
+for (my $offset= 0x65; $offset;
+ $offset= unpack("n", substr($page,$offset-2,2)))
+{
+ print "header=0x", unpack("H*",substr($page,$offset-6,6)), " (";
+ my $n_fields= unpack("n", substr($page,$offset-4,2)) >> 1 & 0x3ff;
+ my $start= 0;
+ my $name;
+ for (my $i= 0; $i < $n_fields; $i++) {
+ my $end= unpack("C", substr($page, $offset-7-$i, 1));
+ print ",\n " if $i;
+ print "$fields[$i]=";
+ if ($end & 0x80) {
+ print "NULL(", ($end & 0x7f) - $start, " bytes)"
+ } else {
+ print "0x", unpack("H*", substr($page,$offset+$start,$end-$start))
+ }
+ $start= $end & 0x7f;
+ }
+ print ")\n";
+}
+close(FILE) || die "Unable to close $file\n";
+EOF
+--source include/start_mysqld.inc
+SELECT * FROM t1;
+DROP TABLE t1;
diff --git a/mysql-test/suite/innodb/t/fake_changes-7000.test b/mysql-test/suite/innodb/t/fake_changes-7000.test
deleted file mode 100644
index 2be6be2d476..00000000000
--- a/mysql-test/suite/innodb/t/fake_changes-7000.test
+++ /dev/null
@@ -1,9 +0,0 @@
---source include/have_log_bin.inc
---source include/have_xtradb.inc
-
-create table t1 (i int) engine=InnoDB;
-set innodb_fake_changes = 1;
---disable_abort_on_error
-insert into t1 values (1);
-set innodb_fake_changes = 0;
-drop table t1;
diff --git a/mysql-test/suite/innodb/t/group_commit_crash.test b/mysql-test/suite/innodb/t/group_commit_crash.test
index 7ad0d9d1e74..12f7ba202e3 100644
--- a/mysql-test/suite/innodb/t/group_commit_crash.test
+++ b/mysql-test/suite/innodb/t/group_commit_crash.test
@@ -9,7 +9,6 @@
--source include/have_debug.inc
--source include/have_log_bin.inc
-let $file_format_max=`SELECT @@innodb_file_format_max`;
CREATE TABLE t1(a CHAR(255),
b CHAR(255),
c CHAR(255),
@@ -77,6 +76,3 @@ while ($numtests)
DROP TABLE t1;
DROP TABLE t2;
DROP PROCEDURE setcrash;
---disable_query_log
-eval SET GLOBAL innodb_file_format_max=$file_format_max;
---enable_query_log
diff --git a/mysql-test/suite/innodb/t/group_commit_crash_no_optimize_thread.test b/mysql-test/suite/innodb/t/group_commit_crash_no_optimize_thread.test
index 9dc2557e687..6115e3f0050 100644
--- a/mysql-test/suite/innodb/t/group_commit_crash_no_optimize_thread.test
+++ b/mysql-test/suite/innodb/t/group_commit_crash_no_optimize_thread.test
@@ -9,7 +9,6 @@
--source include/have_debug.inc
--source include/have_log_bin.inc
-let $file_format_max=`SELECT @@innodb_file_format_max`;
CREATE TABLE t1(a CHAR(255),
b CHAR(255),
c CHAR(255),
@@ -77,6 +76,3 @@ while ($numtests)
DROP TABLE t1;
DROP TABLE t2;
DROP PROCEDURE setcrash;
---disable_query_log
-eval SET GLOBAL innodb_file_format_max=$file_format_max;
---enable_query_log
diff --git a/mysql-test/suite/innodb/t/ibuf_not_empty.test b/mysql-test/suite/innodb/t/ibuf_not_empty.test
index a1a2da1f903..5adbfb72550 100644
--- a/mysql-test/suite/innodb/t/ibuf_not_empty.test
+++ b/mysql-test/suite/innodb/t/ibuf_not_empty.test
@@ -9,6 +9,8 @@
--disable_query_log
call mtr.add_suppression("InnoDB: Failed to find tablespace for table `test`\\.`t1` in the cache\\. Attempting to load the tablespace with space id");
call mtr.add_suppression("InnoDB: Allocated tablespace ID \\d+ for test.t1, old maximum was");
+call mtr.add_suppression("InnoDB: Failed to find tablespace for table `mysql`\\.`transaction_registry` in the cache\\. Attempting to load the tablespace with space id");
+call mtr.add_suppression("InnoDB: Allocated tablespace ID \\d+ for mysql.transaction_registry, old maximum was");
--enable_query_log
CREATE TABLE t1(
diff --git a/mysql-test/suite/innodb/t/innodb-16k.test b/mysql-test/suite/innodb/t/innodb-16k.test
index a4f88f23457..a3a92bdec6a 100644
--- a/mysql-test/suite/innodb/t/innodb-16k.test
+++ b/mysql-test/suite/innodb/t/innodb-16k.test
@@ -5,13 +5,7 @@
call mtr.add_suppression("InnoDB: Cannot add field .* in table .* because after adding it, the row size is .* which is greater than maximum allowed size (.*) for a record on index leaf page.");
---disable_query_log
let $MYSQLD_DATADIR= `select @@datadir`;
-# These values can change during the test
-let $innodb_large_prefix_orig = `SELECT @@innodb_large_prefix`;
---enable_query_log
-
-SET GLOBAL innodb_large_prefix = OFF;
--echo # Test 1) Show the page size from Information Schema
SELECT variable_value FROM information_schema.global_status
@@ -944,11 +938,3 @@ COL195 TEXT,
COL196 TEXT,
COL197 TEXT)
row_format=compact,ENGINE=INNODB;
-
-#
-# restore environment to the state it was before this test execution
-#
-
---disable_query_log
-EVAL SET GLOBAL innodb_large_prefix = $innodb_large_prefix_orig;
---enable_query_log
diff --git a/mysql-test/suite/innodb/t/innodb-alter-debug.test b/mysql-test/suite/innodb/t/innodb-alter-debug.test
index f4996916e9f..a779aecb71f 100644
--- a/mysql-test/suite/innodb/t/innodb-alter-debug.test
+++ b/mysql-test/suite/innodb/t/innodb-alter-debug.test
@@ -40,7 +40,7 @@ engine = innodb;
insert into t1 select 1, 1;
insert into t1 select 2, 2;
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL s1 WAIT_FOR s2';
---send alter table t1 add b int, ALGORITHM=inplace
+--send alter table t1 force, add b int, ALGORITHM=inplace
--echo /* connection con1 */
connect (con1,localhost,root,,);
@@ -51,12 +51,12 @@ SET DEBUG_SYNC = 'now SIGNAL s2';
--echo /* connection default */
connection default;
---echo /* reap */ alter table t1 add b int, ALGORITHM=inplace;
+--echo /* reap */ alter table t1 force, add b int, ALGORITHM=inplace;
--error ER_DUP_ENTRY
--reap
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL s1 WAIT_FOR s2';
---send alter table t1 add b int, ALGORITHM=inplace;
+--send alter table t1 force, add b int, ALGORITHM=inplace;
--echo /* connection con1 */
connection con1;
@@ -68,7 +68,7 @@ disconnect con1;
--echo /* connection default */
connection default;
---echo /* reap */ alter table t1 add b int, ALGORITHM=inplace;
+--echo /* reap */ alter table t1 force, add b int, ALGORITHM=inplace;
--error ER_DUP_ENTRY
--reap
SET DEBUG_SYNC = 'RESET';
diff --git a/mysql-test/suite/innodb/t/innodb-alter.test b/mysql-test/suite/innodb/t/innodb-alter.test
index 9d84e95b88d..7a7b4f3a845 100644
--- a/mysql-test/suite/innodb/t/innodb-alter.test
+++ b/mysql-test/suite/innodb/t/innodb-alter.test
@@ -193,6 +193,33 @@ ALGORITHM=INPLACE, LOCK=SHARED;
-- source suite/innodb/include/innodb_dict.inc
SHOW CREATE TABLE tt;
+# Non-instant ADD COLUMN would require the table to be rebuilt.
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+ALTER TABLE tt ADD COLUMN c CHAR(1) NOT NULL FIRST, LOCK=NONE;
+# This is still non-instant ADD COLUMN, because FTS_DOC_ID is hidden.
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+ALTER TABLE tt ADD COLUMN c CHAR(1) NOT NULL, LOCK=NONE;
+
+CREATE TABLE tu (
+ pk INT PRIMARY KEY, FTS_DOC_ID BIGINT UNSIGNED NOT NULL, t TEXT,
+ FULLTEXT INDEX(t)
+) ENGINE=InnoDB;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+ALTER TABLE tu ADD COLUMN c CHAR(1) NOT NULL FIRST, LOCK=NONE;
+# Instant ADD COLUMN (adding after the visible FTS_DOC_ID)
+ALTER TABLE tu ADD COLUMN c CHAR(1) NOT NULL, LOCK=NONE;
+DROP TABLE tu;
+
+CREATE TABLE tv (
+ pk INT PRIMARY KEY, FTS_DOC_ID BIGINT UNSIGNED NOT NULL, t TEXT,
+ UNIQUE INDEX FTS_DOC_ID_INDEX(FTS_DOC_ID),
+ FULLTEXT INDEX(t)
+) ENGINE=InnoDB;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+ALTER TABLE tv ADD COLUMN c CHAR(1) NOT NULL FIRST, LOCK=NONE;
+# Instant ADD COLUMN (adding after the visible FTS_DOC_ID)
+ALTER TABLE tv ADD COLUMN c CHAR(1) NOT NULL, LOCK=NONE;
+DROP TABLE tv;
# DB_ROW_ID, DB_TRX_ID, DB_ROLL_PTR are reserved InnoDB system column names.
--error ER_WRONG_COLUMN_NAME
diff --git a/mysql-test/suite/innodb/t/innodb-changed-pages-master.opt b/mysql-test/suite/innodb/t/innodb-changed-pages-master.opt
deleted file mode 100644
index bdee9614faa..00000000000
--- a/mysql-test/suite/innodb/t/innodb-changed-pages-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---innodb-track-changed-pages=0 --innodb-changed-pages=1 \ No newline at end of file
diff --git a/mysql-test/suite/innodb/t/innodb-changed-pages.test b/mysql-test/suite/innodb/t/innodb-changed-pages.test
deleted file mode 100644
index 14668af25cb..00000000000
--- a/mysql-test/suite/innodb/t/innodb-changed-pages.test
+++ /dev/null
@@ -1,63 +0,0 @@
--- source include/have_xtradb.inc
-
-#
-# This test requires innodb-changed-pages=1 so that necessary information schema table exists
-# and innodb-track-changed-pages=0 to disable actual changed pages tracking, because
-# page number are not consistent from run to run
-#
-
-#
-# MDEV-4791: ssertion range_end >= range_start fails in log0online.c
-# on select from I_S.INNODB_CHANGED_PAGES
-
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 10 AND end_lsn > 20 ;
-
-SELECT * FROM INFORMATION_SCHEMA . `INNODB_CHANGED_PAGES` AS table1 WHERE ( ( (NOT ( ( ( ( (NOT ( table1 . `page_id` <> table1 . `start_lsn` AND table1 . `space_id` <> 8) AND table1 . `page_id` >= table1 . `end_lsn`) OR table1 . `end_lsn` = table1 . `space_id`) AND table1 . `end_lsn` <> table1 . `page_id`) OR table1 . `end_lsn` < 8) AND table1 . `space_id` >= '2000-06-10 11:33:07.046821') AND table1 . `end_lsn` >= 5) AND table1 . `start_lsn` < 'mm') OR table1 . `end_lsn` != table1 . `end_lsn`) HAVING ( table1 . `start_lsn` < '2005-09-09 01:34:19.012946' OR table1 . `page_id` < 6) ORDER BY table1 . `start_lsn`
-LIMIT 3;
-
-#
-# Basic tests
-#
-
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES;
-
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 2000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn <= 2000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE end_lsn > 2000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE end_lsn >= 2000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE end_lsn > 2000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE end_lsn >= 2000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 and end_lsn < 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 and end_lsn < 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 and end_lsn <= 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 and end_lsn <= 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn = 2000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE end_lsn = 2000000;
-
-#
-# OR
-#
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 2000000 or end_lsn < 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn <= 2000000 or end_lsn < 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 2000000 or end_lsn <= 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn <= 2000000 or end_lsn <= 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 or end_lsn < 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 or end_lsn < 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 or end_lsn <= 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 or end_lsn <= 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 2000000 or end_lsn > 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn <= 2000000 or end_lsn > 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn < 2000000 or end_lsn >= 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn <= 2000000 or end_lsn >= 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 or end_lsn > 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 or end_lsn > 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn > 2000000 or end_lsn >= 3000000;
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE start_lsn >= 2000000 or end_lsn >= 3000000;
-
-#
-# Range
-#
-SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES WHERE (start_lsn > 2000000 and end_lsn < 3000000) or (start_lsn > 4000000 and end_lsn < 5000000);
-
diff --git a/mysql-test/suite/innodb/t/innodb-enlarge-blob.opt b/mysql-test/suite/innodb/t/innodb-enlarge-blob.opt
index 7cc886cb9e5..2f9bf78f82e 100644
--- a/mysql-test/suite/innodb/t/innodb-enlarge-blob.opt
+++ b/mysql-test/suite/innodb/t/innodb-enlarge-blob.opt
@@ -1,5 +1,4 @@
--innodb-file-per-table
---innodb-file-format='Barracuda'
--innodb-buffer-pool-size=32M
--innodb-page-size=64k
--innodb-strict-mode=OFF
diff --git a/mysql-test/suite/innodb/t/innodb-flush-changed-page-bitmaps.opt b/mysql-test/suite/innodb/t/innodb-flush-changed-page-bitmaps.opt
deleted file mode 100644
index afa6311a74b..00000000000
--- a/mysql-test/suite/innodb/t/innodb-flush-changed-page-bitmaps.opt
+++ /dev/null
@@ -1,2 +0,0 @@
---changed-page-bitmaps
---innodb-track-changed-pages
diff --git a/mysql-test/suite/innodb/t/innodb-flush-changed-page-bitmaps.test b/mysql-test/suite/innodb/t/innodb-flush-changed-page-bitmaps.test
deleted file mode 100644
index 662bbbaacaf..00000000000
--- a/mysql-test/suite/innodb/t/innodb-flush-changed-page-bitmaps.test
+++ /dev/null
@@ -1,5 +0,0 @@
--- source include/have_xtradb.inc
--- source include/not_embedded.inc
-
-FLUSH NO_WRITE_TO_BINLOG changed_page_bitmaps;
-select * from information_schema.changed_page_bitmaps;
diff --git a/mysql-test/suite/innodb/t/innodb-index-debug.test b/mysql-test/suite/innodb/t/innodb-index-debug.test
index adbde0c982f..e680fb719cc 100644
--- a/mysql-test/suite/innodb/t/innodb-index-debug.test
+++ b/mysql-test/suite/innodb/t/innodb-index-debug.test
@@ -96,7 +96,7 @@ create table t1(k1 int auto_increment primary key,
k2 char(200),k3 char(200))engine=innodb;
SET DEBUG_SYNC= 'row_merge_after_scan
SIGNAL opened WAIT_FOR flushed';
-send ALTER TABLE t1 ADD COLUMN k4 int;
+send ALTER TABLE t1 FORCE, ADD COLUMN k4 int;
connection default;
SET DEBUG_SYNC= 'now WAIT_FOR opened';
SET debug = '+d,row_log_tmpfile_fail';
diff --git a/mysql-test/suite/innodb/t/innodb-page-cleaners.test b/mysql-test/suite/innodb/t/innodb-page-cleaners.test
new file mode 100644
index 00000000000..7ed87ae1734
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb-page-cleaners.test
@@ -0,0 +1,98 @@
+--source include/have_innodb.inc
+
+SET @saved_page_cleaners = @@GLOBAL.innodb_page_cleaners;
+
+create table t1 (a int not null primary key auto_increment,
+b bigint,
+c varchar(200),
+d int,
+key b (b),
+key d (d)) engine=INNODB;
+
+let $rows = 15000;
+--disable_query_log
+begin;
+while ($rows)
+{
+ eval insert into t1 values(NULL, $rows, 'testing...', $rows+1000);
+ dec $rows;
+}
+commit;
+--enable_query_log
+
+#
+# We want 4 connections: (1) - (3) to create dirty pages
+# and default to modify the number of page cleaner threads
+#
+
+set GLOBAL innodb_page_cleaners = 4;
+
+connect (con1,localhost,root,,);
+connection con1;
+send update t1 set b = b + 5, d = d + 1 where a between 1 and 2000;
+
+connect (con2,localhost,root,,);
+connection con2;
+send update t1 set b = b + 5, d = d + 1 where a between 3000 and 5000;
+
+
+connect (con3,localhost,root,,);
+connection con3;
+send update t1 set b = b + 5, d = d + 1 where a between 8000 and 12000;
+
+#
+# Page cleaners are increased
+#
+
+connection default;
+set GLOBAL innodb_page_cleaners = 2;
+set GLOBAL innodb_page_cleaners = 4;
+set GLOBAL innodb_page_cleaners = 6;
+
+connection con1;
+reap;
+
+connection con2;
+reap;
+
+connection con3;
+reap;
+
+connection default;
+set GLOBAL innodb_page_cleaners = 4;
+
+#
+# Page cleaners are decreased
+#
+
+connection con1;
+send update t1 set b = b + 5, d = d + 1 where a between 1 and 2000;
+
+connection con2;
+send update t1 set b = b + 5, d = d + 1 where a between 3000 and 5000;
+
+connection con3;
+send update t1 set b = b + 5, d = d + 1 where a between 8000 and 12000;
+
+connection default;
+set GLOBAL innodb_page_cleaners = 3;
+set GLOBAL innodb_page_cleaners = 2;
+set GLOBAL innodb_page_cleaners = 1;
+
+connection con1;
+reap;
+
+connection con2;
+reap;
+
+connection con3;
+reap;
+
+connection default;
+disconnect con1;
+disconnect con2;
+disconnect con3;
+
+DROP TABLE t1;
+
+SET GLOBAL innodb_page_cleaners=@saved_page_cleaners;
diff --git a/mysql-test/suite/innodb/t/innodb-timeout.test b/mysql-test/suite/innodb/t/innodb-timeout.test
index 0beeea8f39e..0f8bbbec559 100644
--- a/mysql-test/suite/innodb/t/innodb-timeout.test
+++ b/mysql-test/suite/innodb/t/innodb-timeout.test
@@ -1,3 +1,5 @@
+# Save the initial number of concurrent sessions.
+--source include/count_sessions.inc
--source include/have_innodb.inc
let $initial_timeout=`select @@innodb_lock_wait_timeout`;
@@ -115,3 +117,84 @@ connection default;
drop table t1;
--replace_result $initial_timeout <initial_timeout>
eval set global innodb_lock_wait_timeout=$initial_timeout;
+
+--echo #
+--echo # MDEV-11379 - AliSQL: [Feature] Issue#8: SELECT FOR UPDATE WAIT
+--echo #
+CREATE TABLE t1 (c1 INT, c2 INT) ENGINE=InnoDB;
+INSERT INTO t1 (c1,c2) values (1,1),(2,2),(3,3),(4,4);
+
+# Not supported in view/sp
+--error ER_VIEW_SELECT_CLAUSE
+CREATE VIEW v1 AS SELECT * FROM t1 WHERE c1=4 FOR UPDATE NOWAIT;
+--error ER_VIEW_SELECT_CLAUSE
+CREATE VIEW v1 AS SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 0;
+--error ER_SP_BADSTATEMENT
+CREATE PROCEDURE p1() SELECT * FROM t1 WHERE c1=4 FOR UPDATE NOWAIT;
+--error ER_SP_BADSTATEMENT
+CREATE PROCEDURE p1() SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 0;
+
+connect(con1,localhost,root,,);
+LOCK TABLE t1 WRITE;
+
+connect(con2,localhost,root,,);
+# The following statement should hang because con1 is locking the table
+--error ER_LOCK_WAIT_TIMEOUT
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE NOWAIT;
+--error ER_LOCK_WAIT_TIMEOUT
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 0;
+PREPARE stmt FROM 'SELECT * FROM t1 WHERE c1=4 FOR UPDATE NOWAIT';
+--error ER_LOCK_WAIT_TIMEOUT
+EXECUTE stmt;
+DEALLOCATE PREPARE stmt;
+PREPARE stmt FROM 'SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 0';
+--error ER_LOCK_WAIT_TIMEOUT
+EXECUTE stmt;
+DEALLOCATE PREPARE stmt;
+
+connection con1;
+INSERT INTO t1 VALUES(5,5);
+UNLOCK TABLES;
+set AUTOCOMMIT=0;
+--disable_result_log
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE;
+--enable_result_log
+
+connection con2;
+set AUTOCOMMIT=0;
+SET INNODB_LOCK_WAIT_TIMEOUT=1;
+--error ER_LOCK_WAIT_TIMEOUT
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE;
+--error ER_LOCK_WAIT_TIMEOUT
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE NOWAIT;
+--error ER_LOCK_WAIT_TIMEOUT
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 0;
+
+connection con1;
+UPDATE t1 SET c2=5 WHERE c1=4;
+COMMIT;
+set AUTOCOMMIT=0;
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE;
+
+connection con2;
+set AUTOCOMMIT=0;
+SET INNODB_LOCK_WAIT_TIMEOUT=1;
+--send
+--disable_result_log
+SELECT * FROM t1 WHERE c1=4 FOR UPDATE WAIT 10;
+
+connection con1;
+COMMIT;
+
+connection con2;
+--reap
+
+
+disconnect con1;
+disconnect con2;
+
+# clear
+connection default;
+DROP TABLE t1;
+
+--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/suite/innodb/t/innodb-trim.opt b/mysql-test/suite/innodb/t/innodb-trim.opt
deleted file mode 100644
index c33d075b002..00000000000
--- a/mysql-test/suite/innodb/t/innodb-trim.opt
+++ /dev/null
@@ -1 +0,0 @@
---loose-innodb-use-trim=1
diff --git a/mysql-test/suite/innodb/t/innodb.test b/mysql-test/suite/innodb/t/innodb.test
index 4ebd4f2fa73..472b47899db 100644
--- a/mysql-test/suite/innodb/t/innodb.test
+++ b/mysql-test/suite/innodb/t/innodb.test
@@ -1350,9 +1350,7 @@ source include/varchar.inc;
SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
# Embedded server doesn't chdir to data directory
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
-SET GLOBAL innodb_large_prefix=OFF;
create table t1 (v varchar(65530), key(v));
-SET GLOBAL innodb_large_prefix=default;
drop table t1;
create table t1 (v varchar(65536));
show create table t1;
@@ -1520,39 +1518,6 @@ show create table t9;
drop table t1, t2, t3, t4, t5, t6, t7, t8, t9;
-SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
-SET GLOBAL innodb_large_prefix=OFF;
-# these should have their index length trimmed
-create table t1 (col1 varchar(768), index(col1))
- character set = latin1 engine = innodb;
-create table t2 (col1 varbinary(768), index(col1))
- character set = latin1 engine = innodb;
-create table t3 (col1 text, index(col1(768)))
- character set = latin1 engine = innodb;
-create table t4 (col1 blob, index(col1(768)))
- character set = latin1 engine = innodb;
-SET GLOBAL innodb_large_prefix=default;
-
-show create table t1;
-
-drop table t1, t2, t3, t4;
-
-# these should be refused
-set global innodb_large_prefix=OFF;
---error ER_TOO_LONG_KEY
-create table t1 (col1 varchar(768) primary key)
- character set = latin1 engine = innodb;
---error ER_TOO_LONG_KEY
-create table t2 (col1 varbinary(768) primary key)
- character set = latin1 engine = innodb;
---error ER_TOO_LONG_KEY
-create table t3 (col1 text, primary key(col1(768)))
- character set = latin1 engine = innodb;
---error ER_TOO_LONG_KEY
-create table t4 (col1 blob, primary key(col1(768)))
- character set = latin1 engine = innodb;
-SET sql_mode = default;
-set global innodb_large_prefix=default;
#
# Test improved foreign key error messages (bug #3443)
#
diff --git a/mysql-test/suite/innodb/t/innodb_bug14147491.test b/mysql-test/suite/innodb/t/innodb_bug14147491.test
index d8f0cc6d4b6..44b9d16ca78 100644
--- a/mysql-test/suite/innodb/t/innodb_bug14147491.test
+++ b/mysql-test/suite/innodb/t/innodb_bug14147491.test
@@ -14,6 +14,10 @@ call mtr.add_suppression("InnoDB: We detected index corruption in an InnoDB type
call mtr.add_suppression("Index for table 't1' is corrupt; try to repair it");
--enable_query_log
+--echo # Ensure that purge will not crash on the table after we corrupt it.
+SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
+SET GLOBAL innodb_fast_shutdown=0;
+
--echo # Create and populate the table to be corrupted
set global innodb_file_per_table=ON;
diff --git a/mysql-test/suite/innodb/t/innodb_bug47167.test b/mysql-test/suite/innodb/t/innodb_bug47167.test
deleted file mode 100644
index 88adfc753a9..00000000000
--- a/mysql-test/suite/innodb/t/innodb_bug47167.test
+++ /dev/null
@@ -1,51 +0,0 @@
---source include/have_innodb.inc
-# This is the unit test for bug #47167.
-# It tests setting the global variable "innodb_file_format_max" (
-# originally "innodb_file_format_check") with a user-Defined Variable.
-
---source include/not_embedded.inc
---source include/restart_and_reinit.inc
-
-# Save the value (Antelope) in 'innodb_file_format_max' to
-# 'old_innodb_file_format_max'
-set @old_innodb_file_format_max=@@innodb_file_format_max;
-
-# @old_innodb_file_format_max shall have the value of 'Antelope'
-select @old_innodb_file_format_max;
-
-# Reset the value in 'innodb_file_format_max' to 'Barracuda'
-set global innodb_file_format_max = Barracuda;
-
-select @@innodb_file_format_max;
-
-# Set 'innodb_file_format_max' to its default value, which
-# is the latest file format supported in the current release.
-set global innodb_file_format_max = DEFAULT;
-
-select @@innodb_file_format_max;
-
-# Put the saved value back to 'innodb_file_format_max'
-set global innodb_file_format_max = @old_innodb_file_format_max;
-
-# Check whether 'innodb_file_format_max' get its original value.
-select @@innodb_file_format_max;
-
-# Following are negative tests, all should fail.
---disable_warnings
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format_max = cheetah;
-
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format_max = Bear;
-
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format_max = on;
-
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format_max = off;
---enable_warnings
-
-# Put the saved value back to 'innodb_file_format_max'
---disable_query_log
-set global innodb_file_format_max = @old_innodb_file_format_max;
---enable_query_log
diff --git a/mysql-test/suite/innodb/t/innodb_bug54044.test b/mysql-test/suite/innodb/t/innodb_bug54044.test
index 61a09375ae1..655e629b61b 100644
--- a/mysql-test/suite/innodb/t/innodb_bug54044.test
+++ b/mysql-test/suite/innodb/t/innodb_bug54044.test
@@ -24,5 +24,5 @@ CREATE TABLE t1 (a VARCHAR(3)) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('foo'),('bar');
FLUSH TABLES;
--error 1005
-CREATE TEMPORARY TABLE tmp ENGINE=InnoDB AS SELECT VALUES(a) FROM t1;
+CREATE TEMPORARY TABLE tmp ENGINE=InnoDB AS SELECT VALUE(a) FROM t1;
DROP TABLE t1;
diff --git a/mysql-test/suite/innodb/t/innodb_bulk_create_index_flush.test b/mysql-test/suite/innodb/t/innodb_bulk_create_index_flush.test
index 0cc52b46c20..cffca0cc773 100644
--- a/mysql-test/suite/innodb/t/innodb_bulk_create_index_flush.test
+++ b/mysql-test/suite/innodb/t/innodb_bulk_create_index_flush.test
@@ -52,7 +52,7 @@ CREATE FULLTEXT INDEX fidx_title ON t1(title);
CHECK TABLE t1;
-- error ER_QUERY_INTERRUPTED
-ALTER TABLE t1 ADD COLUMN content TEXT;
+ALTER TABLE t1 ADD COLUMN content TEXT, FORCE;
CHECK TABLE t1;
diff --git a/mysql-test/suite/innodb/t/innodb_default_row_format.combinations b/mysql-test/suite/innodb/t/innodb_default_row_format.combinations
new file mode 100644
index 00000000000..f3bc2cc0c25
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_default_row_format.combinations
@@ -0,0 +1,4 @@
+[redundant]
+innodb_default_row_format=redundant
+[dynamic]
+innodb_default_row_format=dynamic
diff --git a/mysql-test/suite/innodb/t/innodb_default_row_format.inc b/mysql-test/suite/innodb/t/innodb_default_row_format.inc
new file mode 100644
index 00000000000..15c61dc6342
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_default_row_format.inc
@@ -0,0 +1,2 @@
+# See also innodb_default_row_format.combinations
+--source include/have_innodb.inc
diff --git a/mysql-test/suite/innodb/t/innodb_file_format.test b/mysql-test/suite/innodb/t/innodb_file_format.test
deleted file mode 100644
index 2c99167ce6e..00000000000
--- a/mysql-test/suite/innodb/t/innodb_file_format.test
+++ /dev/null
@@ -1,44 +0,0 @@
--- source include/restart_and_reinit.inc
--- source include/have_innodb.inc
-
-let $innodb_file_format_orig=`select @@innodb_file_format`;
-let $innodb_file_format_max_orig=`select @@innodb_file_format_max`;
-
-select @@innodb_file_format;
-select @@innodb_file_format_check;
-select @@innodb_file_format_max;
-set global innodb_file_format=antelope;
-set global innodb_file_format=barracuda;
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format=cheetah;
-select @@innodb_file_format;
-set global innodb_file_format=default;
-select @@innodb_file_format;
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format=on;
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format=off;
-select @@innodb_file_format;
-set global innodb_file_format_max=antelope;
-set global innodb_file_format_max=barracuda;
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format_max=cheetah;
-select @@innodb_file_format_max;
-set global innodb_file_format_max=default;
-select @@innodb_file_format_max;
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format=on;
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format=off;
-select @@innodb_file_format_max;
-set global innodb_file_format_max=antelope;
-
-# innodb_file_format_check is read only variable, can be
-# set as server startup parameter
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set global innodb_file_format_check=off;
-
---disable_query_log
-eval SET GLOBAL innodb_file_format=$innodb_file_format_orig;
-eval SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig;
---enable_query_log
diff --git a/mysql-test/suite/innodb/t/innodb_force_recovery.test b/mysql-test/suite/innodb/t/innodb_force_recovery.test
index f9af16f6609..9dae9f8e7c9 100644
--- a/mysql-test/suite/innodb/t/innodb_force_recovery.test
+++ b/mysql-test/suite/innodb/t/innodb_force_recovery.test
@@ -7,6 +7,7 @@
--disable_query_log
call mtr.add_suppression("InnoDB: Failed to find tablespace for table .* in the cache. Attempting to load the tablespace with space id");
call mtr.add_suppression("InnoDB: Allocated tablespace ID \\d+ for test.t[12], old maximum was");
+call mtr.add_suppression("InnoDB: Allocated tablespace ID \\d+ for mysql.transaction_registry, old maximum was");
--enable_query_log
create table t1(f1 int not null, f2 int not null, index idx(f2))engine=innodb;
diff --git a/mysql-test/suite/innodb/t/innodb_mysql-master.opt b/mysql-test/suite/innodb/t/innodb_mysql-master.opt
index a1ee2c096cf..17dd95cd2cc 100644
--- a/mysql-test/suite/innodb/t/innodb_mysql-master.opt
+++ b/mysql-test/suite/innodb/t/innodb_mysql-master.opt
@@ -1,3 +1,2 @@
--loose-innodb-lock-wait-timeout=2
--default-storage-engine=MyISAM
---loose-innodb-large-prefix=off
diff --git a/mysql-test/suite/innodb/t/innodb_prefix_index_restart_server.test b/mysql-test/suite/innodb/t/innodb_prefix_index_restart_server.test
index 7fb4037e6bb..c82e67a9a62 100644
--- a/mysql-test/suite/innodb/t/innodb_prefix_index_restart_server.test
+++ b/mysql-test/suite/innodb/t/innodb_prefix_index_restart_server.test
@@ -15,10 +15,6 @@
# Test restart the server and "shutdown_server" looks for pid file
# which is not there with embedded mode
--source include/not_embedded.inc
-# Save innodb variables
-let $innodb_large_prefix_orig=`select @@innodb_large_prefix`;
-
-set global innodb_large_prefix=1;
#------------------------------------------------------------------------------
# Stop the server in between when prefix index are created and see if state is
@@ -97,8 +93,3 @@ SELECT col_1_text = REPEAT("a", 3500) , col_2_text = REPEAT("o", 3500) FROM
worklog5743;
DROP TABLE worklog5743;
-
-
-#------------------------------------------------------------------------------
-
-eval SET GLOBAL innodb_large_prefix=$innodb_large_prefix_orig;
diff --git a/mysql-test/suite/innodb/t/innodb_xtradb_compat-master.opt b/mysql-test/suite/innodb/t/innodb_xtradb_compat-master.opt
deleted file mode 100644
index 1ee264ee868..00000000000
--- a/mysql-test/suite/innodb/t/innodb_xtradb_compat-master.opt
+++ /dev/null
@@ -1,38 +0,0 @@
---innodb-adaptive-hash-index-partitions=16
---innodb-buffer-pool-populate=1
---innodb-cleaner-eviction-factor
---innodb-cleaner-flush-chunk-size=16
---innodb-cleaner_free_list_lwm=1
---innodb-cleaner-lru-chunk-size=1
---innodb-cleaner-lsn-age-factor=HIGH_CHECKPOINT
---innodb-cleaner-max-flush-time=1
---innodb-cleaner-max-lru-time=1
---innodb-corrupt-table-action=salvage
---innodb-empty-free-list-algorithm=BACKOFF
---innodb-fake-changes
---innodb-file-io-threads=16
---innodb-foreground-preflush=EXPONENTIAL_BACKOFF
---innodb-kill-idle-transaction=1
---innodb-locking-fake-changes
---innodb-log-arch-expire-sec=1
---innodb-log-arch-dir='ttt'
---innodb-log-archive
---innodb-log-block-size=16
---innodb-log_checksum_algorithm=STRICT_INNODB
---innodb-max-bitmap-file-size=1
---innodb-max-changed-pages=1
---innodb-mirrored-log-groups=8
---innodb-priority-cleaner
---innodb-priority-io
---innodb-priority-master
---innodb-priority-purge
---innodb-sched-priority-cleaner=16
---innodb-sched-priority-io=16
---innodb-sched-priority-master=16
---innodb-sched-priority-purge=16
---innodb-show-locks-held=16
---innodb-show-verbose-locks=1
---innodb-track-changed-pages
---innodb-track-redo-log-now
---innodb-use-global-flush-log-at-trx-commit
---innodb-use-stacktrace
diff --git a/mysql-test/suite/innodb/t/innodb_xtradb_compat.test b/mysql-test/suite/innodb/t/innodb_xtradb_compat.test
deleted file mode 100644
index 359d93717d5..00000000000
--- a/mysql-test/suite/innodb/t/innodb_xtradb_compat.test
+++ /dev/null
@@ -1,160 +0,0 @@
---source include/have_innodb.inc
---source include/have_debug.inc
---source include/not_embedded.inc
---source include/not_windows.inc
-
-select @@innodb_adaptive_hash_index_partitions, @@innodb_adaptive_hash_index_parts;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set global innodb_adaptive_hash_index_partitions=1;
-
-select @@innodb_buffer_pool_populate;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set global innodb_buffer_pool_populate=1;
-
-select @@innodb_cleaner_eviction_factor;
-set global innodb_cleaner_eviction_factor=1;
-select @@innodb_cleaner_eviction_factor;
-
-select @@innodb_cleaner_flush_chunk_size;
-set global innodb_cleaner_flush_chunk_size=8;
-select @@innodb_cleaner_flush_chunk_size;
-
-select @@innodb_cleaner_free_list_lwm;
-set global innodb_cleaner_free_list_lwm=1;
-select @@innodb_cleaner_free_list_lwm;
-
-select @@innodb_cleaner_lru_chunk_size;
-set global innodb_cleaner_lru_chunk_size=8;
-select @@innodb_cleaner_lru_chunk_size;
-
-select @@innodb_cleaner_lsn_age_factor;
-set global innodb_cleaner_lsn_age_factor=HIGH_CHECKPOINT;
-select @@innodb_cleaner_lsn_age_factor;
-
-select @@innodb_cleaner_max_flush_time;
-set global innodb_cleaner_max_flush_time=1;
-select @@innodb_cleaner_max_flush_time;
-
-select @@innodb_cleaner_max_lru_time;
-set global innodb_cleaner_max_lru_time=1;
-select @@innodb_cleaner_max_lru_time;
-
-select @@innodb_corrupt_table_action;
-set global innodb_corrupt_table_action=salvage;
-select @@innodb_corrupt_table_action;
-
-select @@innodb_empty_free_list_algorithm;
-set global innodb_empty_free_list_algorithm=BACKOFF;
-select @@innodb_empty_free_list_algorithm;
-
-select @@innodb_fake_changes;
-set global innodb_fake_changes=1;
-select @@innodb_fake_changes;
-
---echo # @@innodb_file_io_threads is absent
-
-select @@innodb_foreground_preflush;
-set global innodb_foreground_preflush=EXPONENTIAL_BACKOFF;
-select @@innodb_foreground_preflush;
-
-select @@innodb_kill_idle_transaction;
-set global innodb_kill_idle_transaction=1;
-select @@innodb_kill_idle_transaction;
-
-select @@innodb_locking_fake_changes;
-set global innodb_locking_fake_changes=1;
-select @@innodb_locking_fake_changes;
-
-select @@innodb_log_arch_expire_sec;
-set global innodb_log_arch_expire_sec=1;
-select @@innodb_log_arch_expire_sec;
-
-select @@innodb_log_block_size;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set global innodb_log_block_size= 8;
-
-select @@innodb_log_checksum_algorithm, @@innodb_log_checksums;
-set global innodb_log_checksum_algorithm=NONE;
-select @@innodb_log_checksum_algorithm, @@innodb_log_checksums;
-set global innodb_log_checksum_algorithm=STRICT_INNODB;
-select @@innodb_log_checksum_algorithm, @@innodb_log_checksums;
-
-select @@innodb_max_bitmap_file_size;
-set global innodb_max_bitmap_file_size=1;
-select @@innodb_max_bitmap_file_size;
-
-select @@innodb_max_changed_pages;
-set global innodb_max_changed_pages=1;
-select @@innodb_max_changed_pages;
-
-select @@innodb_mirrored_log_groups;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set global innodb_mirrored_log_groups= 4;
-
-select @@innodb_priority_cleaner;
-set global innodb_priority_cleaner=1;
-select @@innodb_priority_cleaner;
-
-select @@innodb_priority_io;
-set global innodb_priority_io=1;
-select @@innodb_priority_io;
-
-select @@innodb_priority_master;
-set global innodb_priority_master=1;
-select @@innodb_priority_master;
-
-select @@innodb_priority_purge;
-set global innodb_priority_purge=1;
-select @@innodb_priority_purge;
-
-select @@innodb_sched_priority_cleaner;
-set global innodb_sched_priority_cleaner=8;
-select @@innodb_sched_priority_cleaner;
-
-select @@innodb_sched_priority_io;
-set global innodb_sched_priority_io=8;
-select @@innodb_sched_priority_io;
-
-select @@innodb_sched_priority_master;
-set global innodb_sched_priority_master=8;
-select @@innodb_sched_priority_master;
-
-select @@innodb_sched_priority_purge;
-set global innodb_sched_priority_purge=8;
-select @@innodb_sched_priority_purge;
-
-select @@innodb_show_locks_held;
-set global innodb_show_locks_held=8;
-select @@innodb_show_locks_held;
-
-select @@innodb_show_verbose_locks;
-set global innodb_show_verbose_locks=1;
-select @@innodb_show_verbose_locks;
-
-select @@innodb_track_changed_pages;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set global innodb_track_changed_pages=1;
-
-select @@innodb_track_redo_log_now;
-set global innodb_track_redo_log_now=1;
-select @@innodb_track_redo_log_now;
-
-select @@innodb_use_global_flush_log_at_trx_commit;
-set global innodb_use_global_flush_log_at_trx_commit=1;
-select @@innodb_use_global_flush_log_at_trx_commit;
-
-select @@innodb_use_stacktrace;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set global innodb_use_stacktrace=1;
-
-select @@innodb_log_archive;
-set global innodb_log_archive=1;
-select @@innodb_log_archive;
-
-select @@innodb_log_arch_dir;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set global innodb_log_arch_dir="ttt";
-
---let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err
---let SEARCH_PATTERN=Using [A-Za-z\\-]* is deprecated and the parameter may be removed in future releases. Ignoning the parameter.
---source include/search_pattern_in_file.inc
diff --git a/mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt b/mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt
index f8c8c9d247d..1dcd1367b3a 100644
--- a/mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt
+++ b/mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt
@@ -1,4 +1,2 @@
--skip-innodb-doublewrite
--innodb-file-per-table
---innodb-file-format=Barracuda
-
diff --git a/mysql-test/suite/innodb/t/innodb_zip_innochecksum2.opt b/mysql-test/suite/innodb/t/innodb_zip_innochecksum2.opt
index 39d5c6d577c..5bbafd986e5 100644
--- a/mysql-test/suite/innodb/t/innodb_zip_innochecksum2.opt
+++ b/mysql-test/suite/innodb/t/innodb_zip_innochecksum2.opt
@@ -1,4 +1,3 @@
--skip-innodb-doublewrite
--innodb-file-per-table
---innodb-file-format=Barracuda
--innodb-change-buffering=none
diff --git a/mysql-test/suite/innodb/t/innodb_zip_innochecksum3.opt b/mysql-test/suite/innodb/t/innodb_zip_innochecksum3.opt
index 828a7cd67c8..302a9872a26 100644
--- a/mysql-test/suite/innodb/t/innodb_zip_innochecksum3.opt
+++ b/mysql-test/suite/innodb/t/innodb_zip_innochecksum3.opt
@@ -1,2 +1 @@
--innodb-file-per-table
---innodb-file-format=Barracuda
diff --git a/mysql-test/suite/innodb/t/instant_alter.opt b/mysql-test/suite/innodb/t/instant_alter.opt
new file mode 100644
index 00000000000..99bf0e5a28b
--- /dev/null
+++ b/mysql-test/suite/innodb/t/instant_alter.opt
@@ -0,0 +1 @@
+--innodb-sys-tablestats
diff --git a/mysql-test/suite/innodb/t/instant_alter.test b/mysql-test/suite/innodb/t/instant_alter.test
new file mode 100644
index 00000000000..d95f412fb37
--- /dev/null
+++ b/mysql-test/suite/innodb/t/instant_alter.test
@@ -0,0 +1,320 @@
+--source include/innodb_page_size.inc
+
+--echo #
+--echo # MDEV-11369: Instant ADD COLUMN for InnoDB
+--echo #
+
+let $format= `SELECT CASE WHEN @@GLOBAL.innodb_page_size>16384
+THEN 'DYNAMIC' ELSE 'COMPRESSED' END`;
+CREATE TABLE t(a INT UNIQUE)ENGINE=InnoDB ROW_FORMAT=COMPACT;
+eval ALTER TABLE t ADD e INT, ROW_FORMAT=$format;
+INSERT INTO t SET a=1;
+SET @old_instant=
+(SELECT variable_value FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column');
+--enable_info
+ALTER TABLE t ADD b INT NOT NULL, ALGORITHM=COPY;
+ALTER TABLE t ADD c INT NOT NULL, FORCE;
+--disable_info
+SELECT variable_value-@old_instant instants
+FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column';
+--enable_info
+ALTER TABLE t ADD d INT NOT NULL;
+--disable_info
+SELECT * FROM t;
+SHOW CREATE TABLE t;
+SELECT variable_value-@old_instant instants
+FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column';
+SELECT variable_value-@old_instant instants
+FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column';
+DROP TABLE t;
+
+connect analyze, localhost, root;
+connection default;
+SET timestamp = 42;
+SET time_zone='+03:00';
+SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+
+SET @old_instant=
+(SELECT variable_value FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column');
+
+let $format= 3;
+while ($format) {
+let $engine= `SELECT CONCAT('ENGINE=InnoDB ROW_FORMAT=',CASE $format
+WHEN 1 THEN 'DYNAMIC'
+WHEN 2 THEN 'COMPACT'
+ELSE 'REDUNDANT' END)`;
+
+eval CREATE TABLE t1
+(id INT PRIMARY KEY, c2 INT UNIQUE,
+ c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'),
+ SPATIAL INDEX(c3)) $engine;
+
+INSERT INTO t1 (id, c2) values(1,1);
+SELECT id,c2,ST_AsText(c3) c3 FROM t1;
+
+--enable_info
+ALTER TABLE t1 ADD COLUMN (
+ d1 INT, d2 INT UNSIGNED DEFAULT 10, d3 VARCHAR(20) NOT NULL DEFAULT 'abcde',
+ d4 TIMESTAMP NOT NULL DEFAULT current_timestamp());
+ALTER TABLE t1 ADD INDEX(d3);
+--disable_info
+
+BEGIN;
+UPDATE t1 SET d3='';
+ROLLBACK;
+SELECT id,c2,ST_AsText(c3) c3, d1, d2, d3, d4 FROM t1;
+INSERT INTO t1 (id) VALUES(2),(3),(4),(5),(6);
+
+--enable_info
+ALTER TABLE t1 CHANGE d1 d1 INT DEFAULT 5, CHANGE d2 d2 INT DEFAULT 15,
+CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'fghij',
+CHANGE d4 dfour TIMESTAMP NOT NULL DEFAULT now();
+--disable_info
+
+UPDATE t1 SET d3='foo' WHERE id = 2;
+UPDATE t1 SET d3=DEFAULT WHERE id = 4;
+INSERT INTO t1 SET id = 7;
+SELECT id,c2,ST_AsText(c3) c3, d1, d2, d3, dfour FROM t1;
+CHECK TABLE t1;
+
+# add virtual columns
+--enable_info
+ALTER TABLE t1 ADD COLUMN e1 INT AS (id * 3);
+ALTER TABLE t1 ADD COLUMN e2 VARCHAR(30) AS (d3);
+ALTER TABLE t1 ADD COLUMN e3 INT AS (id * 2);
+
+# instant alter
+ALTER TABLE t1 CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'foobar',
+ADD COLUMN (d5 CHAR(20) DEFAULT 'hijkl', d6 INT DEFAULT -12345, d7 INT),
+DROP INDEX d3;
+--disable_info
+
+INSERT INTO t1 SET id = 8;
+
+# Updating a column by extending an existing record
+UPDATE t1 SET d3 = 'yyyyy' WHERE id = 1;
+
+# Updating an already materialized column
+UPDATE t1 SET d3 = 'xxxxx' WHERE id = 2;
+
+# transaction rollback
+BEGIN;
+UPDATE t1 SET d3 = 'xxxxx' WHERE id = 3;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 3;
+ROLLBACK;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 3;
+
+# NULL to NULL, no change
+BEGIN;
+UPDATE t1 SET d7 = NULL WHERE ID = 5;
+ROLLBACK;
+BEGIN;
+UPDATE t1 SET d7 = NULL, d6 = 10 WHERE id = 5;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 5;
+ROLLBACK;
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7 FROM t1 WHERE id = 5;
+
+# add virtual stored columns; not instant
+--enable_info
+ALTER TABLE t1 ADD COLUMN (f1 VARCHAR(20) AS (concat('x', e2)) STORED);
+
+# instant add
+ALTER TABLE t1 ADD COLUMN (d8 VARCHAR(20) DEFAULT 'omnopq');
+--disable_info
+
+SELECT id, c2, ST_AsText(c3) c3, d1, d2, d3, dfour, e1, e2, e3, d5, d6, d7, f1, d8 FROM t1;
+SHOW CREATE TABLE t1;
+
+--enable_info
+ALTER TABLE t1
+CHANGE c2 c2 INT DEFAULT 42,
+CHANGE d1 d1 INT DEFAULT 1,
+CHANGE d2 d2 INT DEFAULT 20,
+CHANGE d3 d3 VARCHAR(20) NOT NULL DEFAULT 'boofar';
+--disable_info
+INSERT INTO t1 SET id=9;
+--enable_info
+ALTER TABLE t1 DROP c3;
+--disable_info
+
+SHOW CREATE TABLE t1;
+SELECT * FROM t1;
+
+eval CREATE TABLE t2
+(id INT primary key, c1 VARCHAR(4000),
+ p GEOMETRY NOT NULL DEFAULT ST_GeomFromText('LINESTRING(0 0,0 1,1 1)'),
+ SPATIAL INDEX(p))
+$engine;
+
+BEGIN;
+INSERT INTO t2 SET id=1, c1=REPEAT('a', 4000);
+INSERT INTO t2 SET id=2, c1=REPEAT('a', 4000), p=ST_GeomFromText('POINT(1 1)');
+COMMIT;
+
+--enable_info
+ALTER TABLE t2 ADD COLUMN d1 VARCHAR(2000) DEFAULT REPEAT('asdf',500);
+--disable_info
+SELECT id, c1, ST_AsText(p) p, d1 FROM t2;
+
+# inplace update, rollback
+BEGIN;
+UPDATE t2 SET c1 = repeat(id, 4000);
+
+connection analyze;
+ANALYZE TABLE t2;
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+connection default;
+
+ROLLBACK;
+connection analyze;
+ANALYZE TABLE t2;
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+connection default;
+
+# non-inplace update. Rollback MUST NOT materialize off-page columns.
+BEGIN;
+UPDATE t2 SET d1 = repeat(id, 200);
+connection analyze;
+ANALYZE TABLE t2;
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+connection default;
+ROLLBACK;
+connection analyze;
+ANALYZE TABLE t2;
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/t2';
+connection default;
+
+--enable_info
+ALTER TABLE t2 DROP p;
+--disable_info
+SELECT * FROM t2;
+
+# datetime
+eval CREATE TABLE t3
+(id INT PRIMARY KEY, c2 INT UNSIGNED NOT NULL UNIQUE,
+ c3 POLYGON NOT NULL DEFAULT ST_PolyFromText('POLYGON((1 1,2 2,3 3,1 1))'),
+ SPATIAL INDEX(c3))
+$engine;
+INSERT INTO t3(id,c2) VALUES(1,1),(2,2),(3,3);
+SELECT id, c2, ST_AsText(c3) c3 FROM t3;
+--enable_info
+ALTER TABLE t3 ADD COLUMN
+(c4 DATETIME DEFAULT current_timestamp(),
+ c5 TIMESTAMP NOT NULL DEFAULT current_timestamp(),
+ c6 POINT);
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6 FROM t3;
+ALTER TABLE t3 ADD COLUMN c7 TIME NOT NULL DEFAULT current_timestamp();
+ALTER TABLE t3 ADD COLUMN c8 DATE NOT NULL DEFAULT current_timestamp();
+--disable_info
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6, c7, c8 FROM t3;
+
+--enable_info
+ALTER TABLE t3 ADD COLUMN t TEXT CHARSET utf8
+DEFAULT 'The quick brown fox jumps over the lazy dog';
+ALTER TABLE t3 ADD COLUMN b BLOB NOT NULL;
+--error ER_NO_DEFAULT_FOR_FIELD
+INSERT INTO t3 SET id=4;
+INSERT INTO t3 SET id=4, c2=0, b=0xf09f98b1;
+
+ALTER TABLE t3 CHANGE t phrase TEXT DEFAULT 0xc3a4c3a448,
+CHANGE b b BLOB NOT NULL DEFAULT 'binary line of business';
+--disable_info
+INSERT INTO t3 SET id=5, c2=9;
+SELECT id, c2, ST_AsText(c3) c3, c4, c5, c6, c7, c8, phrase, b FROM t3;
+--enable_info
+ALTER TABLE t3 DROP c3, DROP c7;
+--disable_info
+SELECT * FROM t3;
+
+eval CREATE TABLE t4
+(id INT, foo INT DEFAULT 0, c1 VARCHAR(4000),
+ p GEOMETRY NOT NULL DEFAULT ST_GeomFromText('LINESTRING(0 0,0 1,1 1)'),
+ PRIMARY KEY(id,foo))
+$engine;
+
+INSERT INTO t4 (id,c1) VALUES (1, REPEAT('a', 4000)), (2, REPEAT('a', 4000));
+ALTER TABLE t4 ADD COLUMN d1 INT;
+
+BEGIN;
+UPDATE t4 SET c1 = repeat('1', 4000), foo=1 WHERE id=1;
+INSERT INTO t4 (id,c1) VALUES (1, REPEAT('a', 4000));
+UPDATE t4 SET c1 = repeat('2', 4000), foo=1 WHERE id=2;
+ROLLBACK;
+
+BEGIN;
+UPDATE t4 SET d1 = 1,foo=2 WHERE id=1;
+INSERT INTO t4 (id,foo,c1) VALUES (1, 1, REPEAT('1', 4000));
+COMMIT;
+
+eval CREATE TABLE big
+(id INT PRIMARY KEY, c1 VARCHAR(4000), c2 VARCHAR(4000), c3 VARCHAR(1000),
+ p POINT NOT NULL DEFAULT ST_GeomFromText('POINT(0 0)'), SPATIAL INDEX(p))
+$engine;
+BEGIN;
+INSERT INTO big
+SET id=1, c1=REPEAT('a', 200), c2=REPEAT('b', 200), c3=REPEAT('c', 159);
+SET @i:=1;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+INSERT INTO big SELECT @i:=@i+1, c1, c2, c3, p FROM big;
+COMMIT;
+connection analyze;
+ANALYZE TABLE big;
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+connection default;
+--enable_info
+ALTER TABLE big ADD COLUMN
+(d1 INT DEFAULT 0, d2 VARCHAR(20) DEFAULT 'abcde',
+ d3 TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp);
+--disable_info
+CHECKSUM TABLE big;
+BEGIN;
+INSERT INTO big(id, c1, c2, c3) SELECT @i:=@i+1, c1, c2, c3 FROM big;
+INSERT INTO big(id, c1, c2, c3) SELECT @i:=@i+1, c1, c2, c3 FROM big;
+CHECKSUM TABLE big;
+connection analyze;
+ANALYZE TABLE big;
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+connection default;
+ROLLBACK;
+CHECKSUM TABLE big;
+connection analyze;
+ANALYZE TABLE big;
+SELECT clust_index_size FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
+WHERE name = 'test/big';
+connection default;
+
+--source include/wait_all_purged.inc
+DROP TABLE t1,t2,t3,t4,big;
+
+# MDEV-14837 Duplicate primary keys are allowed after ADD COLUMN / UPDATE
+eval CREATE TABLE t1 (a VARCHAR(1) PRIMARY KEY) $engine;
+INSERT INTO t1 SET a='a';
+ALTER TABLE t1 ADD COLUMN b INT NOT NULL DEFAULT 0;
+UPDATE t1 SET b = 1;
+--error ER_DUP_ENTRY
+INSERT INTO t1 SET a='a';
+SELECT * FROM t1;
+DROP TABLE t1;
+
+dec $format;
+}
+disconnect analyze;
+SELECT variable_value-@old_instant instants
+FROM information_schema.global_status
+WHERE variable_name = 'innodb_instant_alter_column';
+SET GLOBAL innodb_purge_rseg_truncate_frequency= @saved_frequency;
diff --git a/mysql-test/suite/innodb/t/instant_alter_crash.test b/mysql-test/suite/innodb/t/instant_alter_crash.test
new file mode 100644
index 00000000000..fe7301b4f78
--- /dev/null
+++ b/mysql-test/suite/innodb/t/instant_alter_crash.test
@@ -0,0 +1,128 @@
+--source include/have_innodb.inc
+# The embedded server tests do not support restarting.
+--source include/not_embedded.inc
+--source include/have_debug.inc
+--source include/have_debug_sync.inc
+
+FLUSH TABLES;
+
+let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
+let MYSQLD_DATADIR=`select @@datadir`;
+
+--echo #
+--echo # MDEV-11369: Instant ADD COLUMN for InnoDB
+--echo #
+
+CREATE TABLE t1(id INT PRIMARY KEY, c2 INT UNIQUE)
+ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t1 VALUES(1,2);
+BEGIN;
+INSERT INTO t2 VALUES(2,1);
+ALTER TABLE t2 ADD COLUMN (c3 TEXT NOT NULL DEFAULT 'De finibus bonorum');
+
+connect ddl, localhost, root;
+SET DEBUG_SYNC='innodb_alter_inplace_before_commit SIGNAL ddl WAIT_FOR ever';
+--send
+ALTER TABLE t1 ADD COLUMN (c3 TEXT NOT NULL DEFAULT ' et malorum');
+
+connection default;
+SET DEBUG_SYNC='now WAIT_FOR ddl';
+SET GLOBAL innodb_flush_log_at_trx_commit=1;
+COMMIT;
+
+--source include/kill_mysqld.inc
+disconnect ddl;
+--source include/start_mysqld.inc
+
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+SELECT * FROM t1;
+SELECT * FROM t2;
+BEGIN;
+DELETE FROM t1;
+ROLLBACK;
+--source include/wait_all_purged.inc
+
+INSERT INTO t2 VALUES (64,42,'De finibus bonorum'), (347,33101,' et malorum');
+
+connect ddl, localhost, root;
+SET DEBUG_SYNC='innodb_alter_inplace_before_commit SIGNAL ddl WAIT_FOR ever';
+--send
+ALTER TABLE t2 ADD COLUMN (c4 TEXT NOT NULL DEFAULT ' et malorum');
+
+connection default;
+SET DEBUG_SYNC='now WAIT_FOR ddl';
+SET GLOBAL innodb_flush_log_at_trx_commit=1;
+DELETE FROM t1;
+
+--source include/kill_mysqld.inc
+disconnect ddl;
+--source include/start_mysqld.inc
+
+SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+
+SELECT * FROM t1;
+SELECT * FROM t2;
+BEGIN;
+INSERT INTO t1 SET id=1;
+DELETE FROM t2;
+ROLLBACK;
+--source include/wait_all_purged.inc
+
+FLUSH TABLE t1,t2 FOR EXPORT;
+
+# At this point, t1 is empty and t2 contains a 'default row'.
+
+# The following is based on innodb.table_flags and innodb.dml_purge:
+--perl
+use strict;
+my $ps= $ENV{INNODB_PAGE_SIZE};
+foreach my $table ('t1','t2') {
+my $file= "$ENV{MYSQLD_DATADIR}/test/$table.ibd";
+open(FILE, "<", $file) || die "Unable to open $file\n";
+my $page;
+sysseek(FILE, 3*$ps, 0) || die "Unable to seek $file";
+die "Unable to read $file" unless sysread(FILE, $page, $ps) == $ps;
+print "$table clustered index root page";
+print "(type ", unpack("n", substr($page,24,2)), "):\n";
+print "N_RECS=", unpack("n", substr($page,38+16,2));
+print "; LEVEL=", unpack("n", substr($page,38+26,2)), "\n";
+my @fields=("id","DB_TRX_ID","DB_ROLL_PTR", "c2","c3","c4");
+for (my $offset= 0x65; $offset;
+ $offset= unpack("n", substr($page,$offset-2,2)))
+{
+ print "header=0x", unpack("H*",substr($page,$offset-6,6)), " (";
+ my $n_fields= unpack("n", substr($page,$offset-4,2)) >> 1 & 0x3ff;
+ my $start= 0;
+ my $name;
+ for (my $i= 0; $i < $n_fields; $i++) {
+ my $end= unpack("C", substr($page, $offset-7-$i, 1));
+ print ",\n " if $i;
+ print "$fields[$i]=";
+ if ($end & 0x80) {
+ print "NULL(", ($end & 0x7f) - $start, " bytes)"
+ } else {
+ print "0x", unpack("H*", substr($page,$offset+$start,$end-$start))
+ }
+ $start= $end & 0x7f;
+ }
+ print ")\n";
+}
+close(FILE) || die "Unable to close $file\n";
+}
+EOF
+
+UNLOCK TABLES;
+
+DELETE FROM t2;
+--source include/wait_all_purged.inc
+
+SHOW CREATE TABLE t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t1,t2;
+
+--remove_files_wildcard $MYSQLD_DATADIR/test #sql*.frm
+--list_files $MYSQLD_DATADIR/test
+
+SET GLOBAL innodb_purge_rseg_truncate_frequency=@saved_frequency;
diff --git a/mysql-test/suite/innodb/t/instant_alter_debug.test b/mysql-test/suite/innodb/t/instant_alter_debug.test
new file mode 100644
index 00000000000..69aab6e2fc1
--- /dev/null
+++ b/mysql-test/suite/innodb/t/instant_alter_debug.test
@@ -0,0 +1,181 @@
+--source include/have_innodb.inc
+--source include/have_debug.inc
+--source include/have_debug_sync.inc
+--source include/have_innodb.inc
+SET @save_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+
+CREATE TABLE t1 (
+ pk INT AUTO_INCREMENT PRIMARY KEY,
+ c1 INT,
+ c2 VARCHAR(255),
+ c3 VARCHAR(255),
+ c4 INT,
+ c5 INT,
+ c6 INT,
+ c7 VARCHAR(255),
+ c8 TIMESTAMP NULL
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (NULL,1,NULL,'foo',NULL,1,NULL,NULL,'2011-11-11 00:00:00');
+ALTER TABLE t1 ADD COLUMN f INT;
+REPLACE INTO t1 (c7) VALUES ('bar');
+
+CREATE TABLE t2 (i INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (-1),(1);
+ALTER TABLE t2 ADD COLUMN j INT;
+BEGIN;
+DELETE FROM t2;
+ROLLBACK;
+TRUNCATE TABLE t2;
+INSERT INTO t2 VALUES (1,2);
+
+CREATE TABLE t3 (pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t3 () VALUES ();
+ALTER TABLE t3 ADD COLUMN f INT;
+UPDATE t3 SET pk = DEFAULT;
+SELECT * FROM t3;
+
+CREATE TABLE t4 (pk INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t4 VALUES (0);
+ALTER TABLE t4 ADD COLUMN b INT;
+SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
+LEFT JOIN t4 ON (NUMERIC_SCALE = pk);
+SET DEBUG_SYNC='innodb_inplace_alter_table_enter SIGNAL enter WAIT_FOR delete';
+--send
+ALTER TABLE t4 ADD COLUMN c INT;
+connect (dml,localhost,root,,);
+SET DEBUG_SYNC='now WAIT_FOR enter';
+DELETE FROM t4;
+--source include/wait_all_purged.inc
+SET DEBUG_SYNC='now SIGNAL delete';
+connection default;
+reap;
+
+CREATE TABLE t5 (i INT, KEY(i)) ENGINE=InnoDB;
+INSERT INTO t5 VALUES (-42);
+ALTER TABLE t5 ADD UNIQUE ui(i);
+ALTER TABLE t5 ADD COLUMN i2 INT, DROP INDEX i;
+
+CREATE TABLE t6 (i INT NOT NULL) ENGINE=InnoDB;
+INSERT INTO t6 VALUES (0);
+ALTER TABLE t6 ADD COLUMN j INT;
+TRUNCATE TABLE t6;
+INSERT INTO t6 VALUES (1,2);
+
+CREATE TABLE t7 (i INT) ENGINE=InnoDB;
+INSERT INTO t7 VALUES (1),(2),(3),(4),(5);
+ALTER TABLE t7 ADD t TEXT DEFAULT '';
+
+CREATE TABLE t8 (i INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+INSERT INTO t8 VALUES (NULL);
+ALTER TABLE t8 ADD c CHAR(3);
+SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL rebuilt WAIT_FOR dml';
+--send
+ALTER TABLE t8 FORCE;
+connection dml;
+SET DEBUG_SYNC='now WAIT_FOR rebuilt';
+BEGIN;
+INSERT INTO t8 SET i=1;
+UPDATE t8 SET i=ISNULL(i);
+ROLLBACK;
+SET DEBUG_SYNC='now SIGNAL dml';
+connection default;
+reap;
+SET DEBUG_SYNC='RESET';
+
+CREATE TABLE t9 (
+ pk INT AUTO_INCREMENT PRIMARY KEY,
+ c1 BIGINT UNSIGNED,
+ c2 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
+ c3 BIGINT,
+ c4 VARCHAR(257) CHARACTER SET utf8,
+ c5 TINYINT UNSIGNED,
+ c6 TINYINT,
+ c7 VARCHAR(257) CHARACTER SET latin1,
+ c8 VARCHAR(257) CHARACTER SET binary
+) ENGINE=InnoDB;
+INSERT INTO t9 () VALUES ();
+ALTER TABLE t9 ADD COLUMN IF NOT EXISTS t TIMESTAMP NULL KEY;
+SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL rebuilt WAIT_FOR dml';
+--send
+OPTIMIZE TABLE t9;
+connection dml;
+SET DEBUG_SYNC='now WAIT_FOR rebuilt';
+BEGIN;
+INSERT INTO t9 () VALUES (),();
+UPDATE t9 SET t=current_timestamp();
+ROLLBACK;
+SET DEBUG_SYNC='now SIGNAL dml';
+disconnect dml;
+connection default;
+reap;
+SET DEBUG_SYNC='RESET';
+
+CREATE TABLE t10 (pk INT DEFAULT 0 KEY) ENGINE=InnoDB;
+INSERT INTO t10 (pk) VALUES (1);
+ALTER TABLE t10 ADD c INT;
+TRUNCATE TABLE t10;
+INSERT INTO t10 VALUES (1,1),(2,2);
+ALTER TABLE t10 FORCE;
+
+CREATE TABLE t11 (
+ c01 enum('a','b'),
+ c02 bit,
+ c03 blob,
+ c04 enum('c','d'),
+ c05 blob,
+ c06 decimal,
+ c07 char(1),
+ c08 int,
+ c09 char(1),
+ c10 set('e','f'),
+ c11 char(1),
+ c12 float,
+ c13 bit,
+ c14 char(1),
+ c15 int,
+ c16 float,
+ c17 decimal,
+ c18 char(1) CHARACTER SET utf8 not null default '',
+ c19 float,
+ c20 set('g','h'),
+ c21 char(1),
+ c22 int,
+ c23 int,
+ c24 int,
+ c25 set('i','j'),
+ c26 decimal,
+ c27 float,
+ c28 char(1),
+ c29 int,
+ c30 enum('k','l'),
+ c31 decimal,
+ c32 char(1),
+ c33 decimal,
+ c34 bit,
+ c35 enum('m','n'),
+ c36 set('o','p'),
+ c37 enum('q','r'),
+ c38 blob,
+ c39 decimal,
+ c40 blob not null default '',
+ c41 char(1),
+ c42 int,
+ c43 float,
+ c44 float,
+ c45 enum('s','t'),
+ c46 decimal,
+ c47 set('u','v'),
+ c48 enum('w','x'),
+ c49 set('y','z'),
+ c50 float
+) ENGINE=InnoDB;
+INSERT INTO t11 () VALUES ();
+ALTER TABLE t11 ADD COLUMN f INT;
+INSERT INTO t11 () VALUES ();
+UPDATE t11 SET c22 = 1;
+
+--source include/wait_all_purged.inc
+DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11;
+
+SET GLOBAL innodb_purge_rseg_truncate_frequency = @save_frequency;
diff --git a/mysql-test/suite/innodb/t/instant_alter_inject.test b/mysql-test/suite/innodb/t/instant_alter_inject.test
new file mode 100644
index 00000000000..2a74998f65e
--- /dev/null
+++ b/mysql-test/suite/innodb/t/instant_alter_inject.test
@@ -0,0 +1,46 @@
+--source include/have_innodb.inc
+--source include/have_debug.inc
+--source include/have_partition.inc
+
+CREATE TABLE t1(a INT PRIMARY KEY, b INT, KEY(b)) ENGINE=InnoDB
+ROW_FORMAT=REDUNDANT PARTITION BY KEY() PARTITIONS 3;
+INSERT INTO t1 (a) VALUES (1),(2),(3),(4),(5);
+SET @saved_dbug= @@SESSION.debug_dbug;
+SET DEBUG_DBUG='+d,ib_commit_inplace_fail_2';
+--error ER_INTERNAL_ERROR
+ALTER TABLE t1 ADD COLUMN c CHAR(3) DEFAULT 'lie';
+SET DEBUG_DBUG= @saved_dbug;
+CHECK TABLE t1;
+BEGIN;
+UPDATE t1 SET b=a+1;
+INSERT INTO t1 VALUES (0,1);
+ROLLBACK;
+SELECT * FROM t1;
+ALTER TABLE t1 ADD COLUMN c CHAR(3) DEFAULT 'lie';
+SET DEBUG_DBUG='+d,ib_commit_inplace_fail_1';
+--error ER_INTERNAL_ERROR
+ALTER TABLE t1 ADD COLUMN d INT NOT NULL DEFAULT -42;
+SET DEBUG_DBUG= @saved_dbug;
+CHECK TABLE t1;
+BEGIN;
+DELETE FROM t1;
+INSERT INTO t1 VALUES (1,2,'foo');
+ROLLBACK;
+
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t2(a INT, KEY(a)) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1);
+SET DEBUG_DBUG='+d,ib_commit_inplace_fail_1';
+--error ER_INTERNAL_ERROR
+ALTER TABLE t2 ADD COLUMN b INT;
+SET DEBUG_DBUG= @saved_dbug;
+CHECK TABLE t2;
+BEGIN;
+DELETE FROM t2;
+INSERT INTO t2 VALUES (1);
+ROLLBACK;
+
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
diff --git a/mysql-test/suite/innodb/t/instant_alter_rollback.test b/mysql-test/suite/innodb/t/instant_alter_rollback.test
new file mode 100644
index 00000000000..487a60dcbe1
--- /dev/null
+++ b/mysql-test/suite/innodb/t/instant_alter_rollback.test
@@ -0,0 +1,73 @@
+--source include/have_innodb.inc
+# The embedded server tests do not support restarting.
+--source include/not_embedded.inc
+
+# Flush any open myisam tables from previous tests
+FLUSH TABLES;
+
+--echo #
+--echo # MDEV-11369: Instant ADD COLUMN for InnoDB
+--echo #
+
+connect to_be_killed, localhost, root;
+
+let $format= 3;
+while ($format) {
+let $fmt= `SELECT CASE $format WHEN 1 THEN 'DYNAMIC' WHEN 2 THEN 'COMPACT'
+ELSE 'REDUNDANT' END`;
+let $engine= ENGINE=InnoDB ROW_FORMAT=$fmt;
+
+eval CREATE TABLE empty_$fmt
+(id INT PRIMARY KEY, c2 INT UNIQUE) $engine;
+eval CREATE TABLE once_$fmt LIKE empty_$fmt;
+eval CREATE TABLE twice_$fmt LIKE empty_$fmt;
+eval INSERT INTO once_$fmt SET id=1,c2=1;
+eval INSERT INTO twice_$fmt SET id=1,c2=1;
+eval ALTER TABLE empty_$fmt ADD COLUMN (d1 INT DEFAULT 15);
+eval ALTER TABLE once_$fmt ADD COLUMN (d1 INT DEFAULT 20);
+eval ALTER TABLE twice_$fmt ADD COLUMN (d1 INT DEFAULT 20);
+eval ALTER TABLE twice_$fmt ADD COLUMN
+(d2 INT NOT NULL DEFAULT 10,
+ d3 VARCHAR(15) NOT NULL DEFAULT 'var och en char');
+dec $format;
+}
+
+BEGIN;
+
+let $format= 3;
+while ($format) {
+let $fmt= `SELECT CASE $format WHEN 1 THEN 'DYNAMIC' WHEN 2 THEN 'COMPACT'
+ELSE 'REDUNDANT' END`;
+
+eval INSERT INTO empty_$fmt set id=0,c2=42;
+eval UPDATE once_$fmt set c2=c2+1;
+eval UPDATE twice_$fmt set c2=c2+1;
+eval INSERT INTO twice_$fmt SET id=2,c2=0,d3='';
+dec $format;
+}
+
+connection default;
+SET GLOBAL innodb_flush_log_at_trx_commit=1;
+CREATE TABLE foo(a INT PRIMARY KEY) ENGINE=InnoDB;
+
+--source include/kill_mysqld.inc
+disconnect to_be_killed;
+--source include/start_mysqld.inc
+
+SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+DROP TABLE foo;
+--source include/wait_all_purged.inc
+SET GLOBAL innodb_purge_rseg_truncate_frequency=@saved_frequency;
+
+let $format= 3;
+while ($format) {
+let $fmt= `SELECT CASE $format WHEN 1 THEN 'DYNAMIC' WHEN 2 THEN 'COMPACT'
+ELSE 'REDUNDANT' END`;
+
+eval SELECT * FROM empty_$fmt;
+eval SELECT * FROM once_$fmt;
+eval SELECT * FROM twice_$fmt;
+eval DROP TABLE empty_$fmt, once_$fmt, twice_$fmt;
+dec $format;
+}
diff --git a/mysql-test/suite/innodb/t/log_corruption.test b/mysql-test/suite/innodb/t/log_corruption.test
index 3db15bd43cc..e9b081cff76 100644
--- a/mysql-test/suite/innodb/t/log_corruption.test
+++ b/mysql-test/suite/innodb/t/log_corruption.test
@@ -2,7 +2,7 @@
--source include/have_innodb_16k.inc
--disable_query_log
-call mtr.add_suppression("InnoDB: (Up|Down)grade after a crash is not supported");
+call mtr.add_suppression("InnoDB: Upgrade after a crash is not supported");
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
call mtr.add_suppression("Plugin 'InnoDB' init function returned error");
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
@@ -227,6 +227,23 @@ let SEARCH_PATTERN=InnoDB: Invalid log block checksum. block: 2372 checkpoint no
--source include/search_pattern_in_file.inc
let SEARCH_PATTERN=InnoDB: Missing MLOG_CHECKPOINT between the checkpoint 1213964 and the end 1213952\.;
--source include/search_pattern_in_file.inc
+
+--echo # same, but with current-version header
+perl;
+die unless open OUT, "+<", "$ENV{bugdir}/ib_logfile0";
+binmode OUT;
+print OUT pack("Nx[5]nx[5]", 103, 0x1286), "MariaDB 10.3.1";
+print OUT pack("x[478]N", 0x85021a0f);
+close OUT or die;
+EOF
+--source include/start_mysqld.inc
+eval $check_no_innodb;
+--source include/shutdown_mysqld.inc
+
+let SEARCH_PATTERN=InnoDB: Invalid log block checksum. block: 2372 checkpoint no: 1 expected: 3362026715 found: 144444122;
+--source include/search_pattern_in_file.inc
+let SEARCH_PATTERN=InnoDB: Missing MLOG_CHECKPOINT between the checkpoint 1213964 and the end 1213952\.;
+--source include/search_pattern_in_file.inc
--echo # --innodb-force-recovery=6 (skip the entire redo log)
--let $restart_parameters= $dirs --innodb-force-recovery=6
--source include/start_mysqld.inc
@@ -240,9 +257,8 @@ perl;
die unless open OUT, "+<", "$ENV{bugdir}/ib_logfile0";
binmode OUT;
# header block
-print OUT pack("Nx[5]nx[5]", 1, 0x1286);
-print OUT "malicious intentions, or perhaps not";
-print OUT pack("x[456]N", 0xd42d53a2);
+print OUT pack("Nx[5]nx[5]", 103, 0x1286), "MariaDB 10.3.1";
+print OUT pack("x[478]N", 0x85021a0f);
# checkpoint page 1 and all-zero checkpoint 2
print OUT pack("x[13]nCNNx[264]", 0x1286, 12, 0, 0x80c);
print OUT pack("H*x[212]Nx[1024]", "590DBAACFE922582", 0xc72d49c4);
@@ -300,9 +316,8 @@ perl;
die unless open OUT, "+<", "$ENV{bugdir}/ib_logfile0";
binmode OUT;
# header block
-print OUT pack("Nx[5]nx[5]", 1, 0x1286);
-print OUT "ibbackup was here!!!1!";
-print OUT pack("x[470]N", 0x52b54540);
+print OUT pack("Nx[5]nx[5]", 103, 0x1286), "MariaDB 10.3.1";
+print OUT pack("x[478]N", 0x85021a0f);
# invalid (all-zero) checkpoint page 1 and an empty log page
print OUT chr(0) x 1024;
# valid checkpoint block 2
@@ -385,8 +400,6 @@ eval $check_no_innodb;
--source include/shutdown_mysqld.inc
--let SEARCH_PATTERN= InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42
--source include/search_pattern_in_file.inc
---let SEARCH_PATTERN= Downgrade after a crash is not supported\. The redo log was created with MariaDB 10\.3\.1
---source include/search_pattern_in_file.inc
--echo # Empty 10.3 redo log
perl;
@@ -403,7 +416,41 @@ SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
WHERE engine = 'innodb'
AND support IN ('YES', 'DEFAULT', 'ENABLED');
--source include/shutdown_mysqld.inc
---let SEARCH_PATTERN= InnoDB: Downgrading redo log:
+# In encryption.innodb_encrypt_log_corruption, we would convert the
+# log to encrypted format. Writing an extra log checkpoint before the
+# redo log conversion would advance the LSN by the size of a
+# MLOG_CHECKPOINT record (9 bytes).
+--let SEARCH_PATTERN= InnoDB: .* started; log sequence number 121397[09]
+--source include/search_pattern_in_file.inc
+
+--echo # Empty 10.2 redo log
+perl;
+die unless open OUT, "+<", "$ENV{bugdir}/ib_logfile0";
+binmode OUT;
+# header block
+print OUT pack("Nx[5]nx[5]", 1, 0x1286);
+print OUT "ibbackup was here!!!1!";
+print OUT pack("x[470]N", 0x52b54540);
+# In encryption.innodb_log_corruption the previous step would
+# replace the block with an encrypted one and update the checkpoint.
+# Restore them.
+# invalid (all-zero) checkpoint page 1 and an empty log page
+print OUT chr(0) x 1024;
+# valid checkpoint block 2
+print OUT pack("x[12]NNNx[264]", 0x12860c, 0, 0x80c);
+# pointer to the MLOG_CHECKPOINT record, and checkpoint page checksum
+print OUT pack("H*x[204]NNN", "590DBAACFE922582", 0x128612, 0, 0x101741b);
+# log page
+print OUT pack("NnnNx[496]N", 0x80000944, 12, 12, 1, 0x46c8a2a2);
+close OUT or die;
+EOF
+
+--source include/start_mysqld.inc
+SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
+WHERE engine = 'innodb'
+AND support IN ('YES', 'DEFAULT', 'ENABLED');
+--source include/shutdown_mysqld.inc
+--let SEARCH_PATTERN= InnoDB: Upgrading redo log:
--source include/search_pattern_in_file.inc
--echo # Minimal MariaDB 10.1.21 encrypted redo log
diff --git a/mysql-test/suite/innodb/t/monitor.test b/mysql-test/suite/innodb/t/monitor.test
index 98aa4505e34..dfae93694bf 100644
--- a/mysql-test/suite/innodb/t/monitor.test
+++ b/mysql-test/suite/innodb/t/monitor.test
@@ -391,41 +391,35 @@ CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
let $innodb_monitor_enable = `SELECT @@innodb_monitor_enable`;
---replace_regex /[1-9]/NNNN/
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
SET GLOBAL innodb_monitor_enable='module_buffer_page';
INSERT INTO t1 VALUES (1), (2), (3), (4); FLUSH TABLES t1 FOR EXPORT;
UNLOCK TABLES;
---replace_regex /[1-9]/NNNN/
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
SET GLOBAL innodb_monitor_disable='module_buffer_page';
SET GLOBAL innodb_monitor_reset_all='module_buffer_page';
---replace_regex /[1-9]/NNNN/
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
SET GLOBAL innodb_monitor_enable='%';
INSERT INTO t1 VALUES (5), (6), (7), (8); FLUSH TABLES t1 FOR EXPORT;
UNLOCK TABLES;
---replace_regex /[1-9]/NNNN/
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
SET GLOBAL innodb_monitor_disable='%';
SET GLOBAL innodb_monitor_reset_all='%';
---replace_regex /[1-9]/NNNN/
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
SET GLOBAL innodb_monitor_enable='ALL';
INSERT INTO t1 VALUES (9), (10), (11), (12); FLUSH TABLES t1 FOR EXPORT;
UNLOCK TABLES;
---replace_regex /[1-9]/NNNN/
-SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
+SELECT NAME, COUNT > 0 FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME
LIKE 'buffer_page_written_index_leaf';
--disable_warnings
diff --git a/mysql-test/suite/innodb/t/recovery_shutdown.test b/mysql-test/suite/innodb/t/recovery_shutdown.test
index 42d98ca34c7..d796189c724 100644
--- a/mysql-test/suite/innodb/t/recovery_shutdown.test
+++ b/mysql-test/suite/innodb/t/recovery_shutdown.test
@@ -1,6 +1,9 @@
--source include/have_innodb.inc
--source include/not_embedded.inc
+# Flush any open myisam tables from previous tests
+FLUSH TABLES;
+
--echo #
--echo # MDEV-13797 InnoDB may hang if shutdown is initiated soon after startup
--echo # while rolling back recovered incomplete transactions
diff --git a/mysql-test/suite/innodb/t/rename_table_debug.test b/mysql-test/suite/innodb/t/rename_table_debug.test
index 20af12dc15c..df4331cf8bb 100644
--- a/mysql-test/suite/innodb/t/rename_table_debug.test
+++ b/mysql-test/suite/innodb/t/rename_table_debug.test
@@ -18,37 +18,4 @@ SET DEBUG_SYNC='now WAIT_FOR renamed';
--source include/restart_mysqld.inc
--disconnect con1
SELECT * FROM t1;
-
-let $c = 999;
-BEGIN;
---disable_query_log
-while ($c) {
-INSERT INTO t1() VALUES();
-dec $c;
-}
---enable_query_log
-COMMIT;
-UPDATE t1 SET b=a%7, c=a%11, d=a%13;
-
---source include/expect_crash.inc
-SET DEBUG_DBUG='+d,crash_commit_before';
---error 2013
-ALTER TABLE t1
-ADD INDEX(b,c,d,a),ADD INDEX(b,c,a,d),ADD INDEX(b,a,c,d),ADD INDEX(b,a,d,c),
-ADD INDEX(b,d,a,c),ADD INDEX(b,d,c,a),ADD INDEX(a,b,c,d),ADD INDEX(a,b,d,c),
-ADD INDEX(a,c,b,d),ADD INDEX(a,c,d,b),ADD INDEX(a,d,b,c),ADD INDEX(a,d,c,b),
-ADD INDEX(c,a,b,d),ADD INDEX(c,a,d,b),ADD INDEX(c,b,a,d),ADD INDEX(c,b,d,a),
-ADD INDEX(c,d,a,b),ADD INDEX(c,d,b,a),ADD INDEX(d,a,b,c),ADD INDEX(d,a,c,b),
-ADD INDEX(d,b,a,c),ADD INDEX(d,b,c,a),ADD INDEX(d,c,a,b),ADD INDEX(d,c,b,a),
-ADD INDEX(a,b,c), ADD INDEX(a,c,b), ADD INDEX(a,c,d), ADD INDEX(a,d,c),
-ADD INDEX(a,b,d), ADD INDEX(a,d,b), ADD INDEX(b,c,d), ADD INDEX(b,d,c),
-ALGORITHM=COPY;
---source include/start_mysqld.inc
-CHECK TABLE t1;
-SELECT COUNT(*) FROM t1;
DROP TABLE t1;
-# MDEV-11415 TODO: remove the following
-SET GLOBAL innodb_background_drop_list_empty=
-@@GLOBAL.innodb_background_drop_list_empty;
-# Work around missing crash recovery at the SQL layer.
---remove_files_wildcard $datadir/test #sql-*.frm
diff --git a/mysql-test/suite/innodb/t/row_format_redundant.test b/mysql-test/suite/innodb/t/row_format_redundant.test
index af3fe3b52cf..81541fb0582 100644
--- a/mysql-test/suite/innodb/t/row_format_redundant.test
+++ b/mysql-test/suite/innodb/t/row_format_redundant.test
@@ -4,7 +4,7 @@
--disable_query_log
call mtr.add_suppression("InnoDB: Table `mysql`\\.`innodb_table_stats` not found");
-call mtr.add_suppression("InnoDB: Table `test`.`t1` in InnoDB data dictionary contains invalid flags. SYS_TABLES\\.TYPE=1 SYS_TABLES\\.MIX_LEN=255\\r?$");
+call mtr.add_suppression("InnoDB: Table `test`.`t1` in InnoDB data dictionary contains invalid flags. SYS_TABLES\\.TYPE=1 SYS_TABLES\\.MIX_LEN=511\\r?$");
call mtr.add_suppression("InnoDB: Parent table of FTS auxiliary table test/FTS_.* not found");
call mtr.add_suppression("InnoDB: Cannot open table test/t1 from the internal data dictionary");
call mtr.add_suppression("InnoDB: Table `test`.`t1` does not exist in the InnoDB internal data dictionary though MariaDB is trying to (rename|drop)");
@@ -115,7 +115,7 @@ for (my $offset= 0x65; $offset;
if ($i == 7 && $name =~ '^test/t[123]')
{
print "corrupted SYS_TABLES.MIX_LEN for $name\n";
- substr($page,$offset+$start,$end-$start)= pack("N", 255);
+ substr($page,$offset+$start,$end-$start)= pack("N", 511);
}
$start= $end & 0x7f;
}
@@ -141,7 +141,7 @@ RENAME TABLE t1 TO tee_one;
DROP TABLE t1;
DROP TABLE t2,t3;
---let SEARCH_PATTERN= \[ERROR\] InnoDB: Table `test`\.`t1` in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=1 SYS_TABLES\.MIX_LEN=255\b
+--let SEARCH_PATTERN= \[ERROR\] InnoDB: Table `test`\.`t1` in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=1 SYS_TABLES\.MIX_LEN=511\b
--source include/search_pattern_in_file.inc
--let $restart_parameters=
diff --git a/mysql-test/suite/innodb/t/table_flags.test b/mysql-test/suite/innodb/t/table_flags.test
index cbd8546785b..2d2a32e9547 100644
--- a/mysql-test/suite/innodb/t/table_flags.test
+++ b/mysql-test/suite/innodb/t/table_flags.test
@@ -28,7 +28,10 @@ let bugdir= $MYSQLTEST_VARDIR/tmp/table_flags;
--let $d=--innodb-data-home-dir=$bugdir --innodb-log-group-home-dir=$bugdir
--let $d=$d --innodb-data-file-path=ibdata1:1M:autoextend
--let $d=$d --innodb-undo-tablespaces=0
---let $restart_parameters=$d --innodb-stats-persistent=0 --innodb-file-format=1
+--let $d=$d --innodb-purge-rseg-truncate-frequency=1
+--let $d=$d --skip-innodb-fast-shutdown
+
+--let $restart_parameters=$d --innodb-stats-persistent=0
--source include/restart_mysqld.inc
SET GLOBAL innodb_file_per_table=1;
diff --git a/mysql-test/suite/innodb/t/truncate_debug.test b/mysql-test/suite/innodb/t/truncate_debug.test
index 5fee9174d98..74d9064faa4 100644
--- a/mysql-test/suite/innodb/t/truncate_debug.test
+++ b/mysql-test/suite/innodb/t/truncate_debug.test
@@ -18,10 +18,11 @@ SET GLOBAL innodb_adaptive_hash_index=ON;
--echo table being truncated. Also check if
--echo DDL operations on other tables succeed.
-create table t1 (f1 int,f2 int,key(f2),f3 int) engine=innodb;
+create table t1 (f1 int,f2 int,key(f2),f3 int) engine=innodb row_format=redundant;
create index idx1 on t1(f3);
-create table t2 (f1 int,f2 int,key(f2),f3 int) engine=innodb;
-create table t3 (f1 int,f2 int,key(f2)) engine=innodb;
+create table t2 (f1 int,f2 int,key(f2),f3 int) engine=innodb row_format=redundant;
+
+create table t3 (f1 int,f2 int,key(f2)) engine=innodb row_format=redundant;
insert into t1 values (10,20,30),(30,40,50),(50,60,70);
insert into t1 select * from t1;
diff --git a/mysql-test/suite/innodb/t/update_time_wl6658.test b/mysql-test/suite/innodb/t/update_time_wl6658.test
index 0b2b94ae2a9..0adc6a867fe 100644
--- a/mysql-test/suite/innodb/t/update_time_wl6658.test
+++ b/mysql-test/suite/innodb/t/update_time_wl6658.test
@@ -187,8 +187,9 @@ SELECT update_time
FROM information_schema.tables WHERE table_name='tab1i';
BEGIN WORK;
-INSERT INTO tab2 VALUES(1,'Oracle','NUTT',10);
+DELETE FROM tab1i;
SAVEPOINT A;
+INSERT INTO tab2 VALUES(1,'Oracle','NUTT',10);
INSERT INTO tab2 VALUES(2,'HUAWEI','BOLT',40);
SAVEPOINT B;
INSERT INTO tab2 VALUES(3,'IBM','NAIL',70);
@@ -203,7 +204,7 @@ FROM information_schema.tables WHERE table_name='tab2';
--echo #execute DDL instead of commit
create table tab6(c1 int);
-SELECT COUNT(update_time)
+SELECT update_time
FROM information_schema.tables WHERE table_name='tab2';
START TRANSACTION;
diff --git a/mysql-test/suite/innodb_fts/r/fulltext.result b/mysql-test/suite/innodb_fts/r/fulltext.result
index 42e294b3293..fcf196a0631 100644
--- a/mysql-test/suite/innodb_fts/r/fulltext.result
+++ b/mysql-test/suite/innodb_fts/r/fulltext.result
@@ -56,7 +56,7 @@ Only MyISAM tables support collections
MySQL has now support for full-text search
Full-text search in MySQL implements vector space model
select * from t1 where MATCH(a,b) AGAINST ("indexes" IN BOOLEAN MODE WITH QUERY EXPANSION);
-ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'QUERY EXPANSION)' at line 1
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WITH QUERY EXPANSION)' at line 1
explain select * from t1 where MATCH(a,b) AGAINST ("collections");
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 fulltext a a 0 1 Using where
diff --git a/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result b/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result
index 983f254cf90..cd7d8f03923 100644
--- a/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result
+++ b/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result
@@ -162,11 +162,15 @@ INSERT INTO articles (FTS_DOC_ID, title, body) VALUES
(14,'1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
(19, 'MySQL vs. YourSQL','In the following database comparison ...'),
(20, 'MySQL Security','When configured properly, MySQL ...');
-ALTER TABLE articles ADD FULLTEXT INDEX idx3 (title),
-ADD FULLTEXT INDEX idx5 (title);
-ERROR HY000: InnoDB presently supports one FULLTEXT index creation at a time
-CREATE FULLTEXT INDEX idx on articles (title);
-ALTER TABLE articles ADD FULLTEXT INDEX idx3 (title);
+ALTER TABLE articles ADD FULLTEXT INDEX idx (title),
+ADD FULLTEXT INDEX idx3 (title), ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try ALGORITHM=COPY
+ALTER TABLE articles ADD FULLTEXT INDEX idx (title),
+ADD FULLTEXT INDEX idx3 (title);
+affected rows: 6
+info: Records: 6 Duplicates: 0 Warnings: 1
+Warnings:
+Note 1831 Duplicate index `idx3`. This is deprecated and will be disallowed in a future release
ALTER TABLE articles ADD INDEX t20 (title(20)), LOCK=NONE;
ALTER TABLE articles DROP INDEX t20;
INSERT INTO articles (FTS_DOC_ID, title, body) VALUES
diff --git a/mysql-test/suite/innodb_fts/r/misc_debug.result b/mysql-test/suite/innodb_fts/r/misc_debug.result
index 1fcc89b165b..3a156049fe2 100644
--- a/mysql-test/suite/innodb_fts/r/misc_debug.result
+++ b/mysql-test/suite/innodb_fts/r/misc_debug.result
@@ -7,7 +7,7 @@ FULLTEXT (title,body)
SET @saved_debug_dbug = @@SESSION.debug_dbug;
SET SESSION debug_dbug="+d,ib_dict_create_index_tree_fail";
CREATE FULLTEXT INDEX idx ON articles(body);
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
SET SESSION debug_dbug=@saved_debug_dbug;
ALTER TABLE articles STATS_PERSISTENT=DEFAULT;
DROP TABLE articles;
diff --git a/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test b/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test
index 10dc1462c98..23065a97002 100644
--- a/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test
+++ b/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test
@@ -195,12 +195,13 @@ INSERT INTO articles (FTS_DOC_ID, title, body) VALUES
(19, 'MySQL vs. YourSQL','In the following database comparison ...'),
(20, 'MySQL Security','When configured properly, MySQL ...');
---error ER_INNODB_FT_LIMIT
-ALTER TABLE articles ADD FULLTEXT INDEX idx3 (title),
- ADD FULLTEXT INDEX idx5 (title);
-
-CREATE FULLTEXT INDEX idx on articles (title);
-ALTER TABLE articles ADD FULLTEXT INDEX idx3 (title);
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+ALTER TABLE articles ADD FULLTEXT INDEX idx (title),
+ ADD FULLTEXT INDEX idx3 (title), ALGORITHM=INPLACE;
+--enable_info
+ALTER TABLE articles ADD FULLTEXT INDEX idx (title),
+ ADD FULLTEXT INDEX idx3 (title);
+--disable_info
ALTER TABLE articles ADD INDEX t20 (title(20)), LOCK=NONE;
ALTER TABLE articles DROP INDEX t20;
diff --git a/mysql-test/suite/innodb_gis/r/alter_spatial_index.result b/mysql-test/suite/innodb_gis/r/alter_spatial_index.result
index a945e68aeb1..7caa5f6829c 100644
--- a/mysql-test/suite/innodb_gis/r/alter_spatial_index.result
+++ b/mysql-test/suite/innodb_gis/r/alter_spatial_index.result
@@ -483,16 +483,55 @@ info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE tab MODIFY COLUMN c2 GEOMETRY NOT NULL;
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE tab MODIFY COLUMN c3 POLYGON NOT NULL;
+affected rows: 10
+info: Records: 10 Duplicates: 0 Warnings: 0
+ALTER TABLE tab add COLUMN c7 POINT NOT NULL;
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE tab add COLUMN c8 POINT NOT NULL, ALGORITHM = INPLACE, LOCK=NONE;
+SELECT HEX(c8) FROM tab;
+HEX(c8)
+
+
+
+
+
+
+
+
+
+
+BEGIN;
+INSERT INTO tab SELECT 0,c2,c3,c4,c5,
+ST_GeomFromText('POINT(67 89)'),ST_GeomFromText('POINT(67 89)')
+FROM tab LIMIT 1;
+SELECT HEX(c8) FROM tab;
+HEX(c8)
+0000000001010000000000000000C050400000000000405640
+
+
+
+
+
+
+
+
+
+
+ROLLBACK;
+ALTER TABLE tab add COLUMN c9 POINT NOT NULL AFTER c5, ALGORITHM = INPLACE, LOCK=NONE;
ERROR 0A000: LOCK=NONE is not supported. Reason: Do not support online operation on table with GIS index. Try LOCK=SHARED
SHOW CREATE TABLE tab;
Table Create Table
tab CREATE TABLE `tab` (
`c1` int(11) NOT NULL,
`c2` geometry NOT NULL,
- `c3` linestring NOT NULL,
+ `c3` polygon NOT NULL,
`c4` polygon NOT NULL,
`c5` geometry NOT NULL,
+ `c7` point NOT NULL,
+ `c8` point NOT NULL,
PRIMARY KEY (`c1`),
SPATIAL KEY `idx2` (`c2`),
SPATIAL KEY `idx3` (`c3`),
@@ -525,9 +564,11 @@ Table Create Table
tab CREATE TABLE `tab` (
`c1` int(11) NOT NULL,
`c2` geometry NOT NULL,
- `c3` linestring NOT NULL,
+ `c3` polygon NOT NULL,
`c4` geometry NOT NULL,
`c5` geometry NOT NULL,
+ `c7` point NOT NULL,
+ `c8` point NOT NULL,
PRIMARY KEY (`c1`),
SPATIAL KEY `idx2` (`c2`),
SPATIAL KEY `idx3` (`c3`),
@@ -571,8 +612,8 @@ ALTER TABLE tab MODIFY COLUMN c2 POINT NOT NULL;
affected rows: 8
info: Records: 8 Duplicates: 0 Warnings: 0
ALTER TABLE tab MODIFY COLUMN c3 LINESTRING NOT NULL;
-affected rows: 0
-info: Records: 0 Duplicates: 0 Warnings: 0
+affected rows: 8
+info: Records: 8 Duplicates: 0 Warnings: 0
ALTER TABLE tab MODIFY COLUMN c4 POLYGON NOT NULL;
affected rows: 8
info: Records: 8 Duplicates: 0 Warnings: 0
@@ -584,6 +625,8 @@ tab CREATE TABLE `tab` (
`c3` linestring NOT NULL,
`c4` polygon NOT NULL,
`c5` geometry NOT NULL,
+ `c7` point NOT NULL,
+ `c8` point NOT NULL,
PRIMARY KEY (`c1`),
SPATIAL KEY `idx2` (`c2`),
SPATIAL KEY `idx3` (`c3`),
diff --git a/mysql-test/suite/innodb_gis/r/point_basic.result b/mysql-test/suite/innodb_gis/r/point_basic.result
index faaef07c112..0fa5021dab9 100644
--- a/mysql-test/suite/innodb_gis/r/point_basic.result
+++ b/mysql-test/suite/innodb_gis/r/point_basic.result
@@ -1526,7 +1526,7 @@ show warnings;
Level Code Message
Warning 150 Alter table '`test`.`child`' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns near 'FOREIGN KEY(p) REFERENCES parent(p)'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `#sql-temporary`
ALTER TABLE parent DROP INDEX idx1;
ALTER TABLE child ADD FOREIGN KEY(p) REFERENCES parent(p);
Got one of the listed errors
@@ -1534,7 +1534,7 @@ show warnings;
Level Code Message
Warning 150 Alter table '`test`.`child`' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns near 'FOREIGN KEY(p) REFERENCES parent(p)'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `#sql-temporary`
ALTER TABLE child DROP INDEX idx2;
ALTER TABLE child ADD FOREIGN KEY(p) REFERENCES parent(p);
Got one of the listed errors
@@ -1542,7 +1542,7 @@ show warnings;
Level Code Message
Warning 150 Alter table '`test`.`child`' with foreign key constraint failed. There is only prefix index in the referenced table where the referenced columns appear as the first columns near 'FOREIGN KEY(p) REFERENCES parent(p)'.
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
-Warning 1215 Cannot add foreign key constraint
+Warning 1215 Cannot add foreign key constraint for `#sql-temporary`
DROP TABLE child, parent;
#
# Bug#28763: Selecting geometry fields in UNION caused server crash.
diff --git a/mysql-test/suite/innodb_gis/r/rollback.result b/mysql-test/suite/innodb_gis/r/rollback.result
index 36a39902ca9..8688690b66a 100644
--- a/mysql-test/suite/innodb_gis/r/rollback.result
+++ b/mysql-test/suite/innodb_gis/r/rollback.result
@@ -378,7 +378,6 @@ INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES
rollback;
DROP TABLE t4;
SET GLOBAL innodb_file_per_table='on';
-SET GLOBAL innodb_file_format='Barracuda';
create table t1(i int primary key,
a geometry not null, spatial index(a)) row_format=dynamic engine=innodb;
insert into t1 values(1, st_geomfromtext(concat('multilinestring(','(-4286 -5983,52762 -5983,52762 79876,-4286 79876,-4286 -5983)',',','(-4286 -5983,52762 -5983,52762 79876,-4286 79876,-4286 -5983)',',','(-768 -136,-771 2864,-772 2860,-777 2862,-775 2858,-775 2863,-770 2866,-765 2871,-761 2874,-759 2878,-759 2883,-759 2886,-758 2886,-758 2886,-755 2890,-752 2890,-751 2890,1249 2890,1250 2892,1251 2892,1251 2892,1256 2897,1259 2894,1256 2899,1253 2904,1256 2904,1257 2906,1252 2910,1253 2910,1256 2912,1255 2913,1260 2911,1256 2913,1255 2918,1257 2921,1259 2925,1262 2922,1263 2923,1266 2926,1268 2929,1269 2932,1273 2937,1277 2942,1282 2942,1284 2939,1287 2935,1290 2935,1293 2938,1296 2940,1299 2942,1302 2947,1307 2952,1311 2956,1312 2958,1307 2956,1311 2955,1307 2956,1307 2960,1307 2962,1311 2965,1315 2967,1314 2968,1319 2969,1322 2973,1324 2978,1323 2977,1327 2982,1330 7982,1332 7985,1332 7986,1332 7988,1328 7991,1328 7991,1328 7991,1253 2910,1249 2908,1251 2908,1253 2913,1253 2909,1256 2914,1255 2916,1259 2919,1261 2923,1262 2923,1266 2925,1270 2930,1270 2932,1267 2929,1269 2929,1269 2931,1269 2926,1265 1926,1270 1926,1274 1926,1274 1929,1269 1929,1270 1931,1272 1935,1269 1935,1273 1938,1278 1938,1278 1938,1280 1943,1275 1948,1276 1951,1279 1948,1280 1952,1281 1952,1286 1954,1290 1958,1290 1963,1294 1964,1298 1962,1298 1958,1302 1963,1302 1967,1307 -2033,1311 -2030,1307 -2030,1310 -2025,1314 -2020,1317 -1020,1321 -1016,1321 -1018,1321 -1015,1326 -1016,1324 -1016,1327 -1011,1326 -1007,1326 -1002,1326 -1004,1321 -1004,1321 -1003,1324 -1008,1328 -1007,1328 -1003,1333 -999,1336 -998,1339 -997,1337 -996,1340 -2996,1335 -3000,1339 -2996,1343 -2995,1346 -2990,1341 -2990,1345 -2991,1345 -2995,1269 2931,1269 2936,1271 2941,1275 2941,6275 2943,6274 2943,6279 2939,6274 2942,6274 2946,6275 2947,6276 2948,6280 2947,6282 2951,6287 2952,6287 2956,6289 2959,6294 4959,6298 4964,6302 4965,6300 6965,6305 6965,11305 6967,11305 6967,11310 6966,11310 6966,11314 6964,11318 6969,11318 6972,11323 6974,11328 6977,11329 6979,11333 6982,11337 6982,11334 6982,11337 6983,11341 6988,11345 6991,11349 6992,11353 6993,11353 6996,11353 7000,11356 7000,11353 6000,11350 6002,11353 6004,11354 6007,11356 6009,11358 6009,11359 6011,11363 6016,11365 6013,11369 6015,11372 6017,11377 6022,11381 6025,11382 9025,11385 9029,11390 9024,11389 9020,11391 9020,11389 9016,11394 12016,11397 12021,11400 12021,11405 12024,11405 8024,11403 8029,11403 8032,11401 8033,11406 8032,11402 8027,11406 8027,11410 8029,11408 8030,11408 8035,11413 8035,11418 8038,11423 8038,11428 8036,11428 8037,11433 8033,11435 8032,6435 8035,6439 8036,6440 8034,6441 8039,6442 8043,6446 8045,6451 12045,6454 12050,6454 12049,6455 12054,6457 12057,6458 12060,6461 13060,6466 13060,6467 13065,6467 13070,6465 13073,6465 13073,6466 13077,6463 16077,6465 16081,6468 16077,6471 16077,6475 16078,6475 16080,6470 16082,6465 16084,6465 16088,6470 16091,6471 16091,6469 16089,6473 16091,6477 16091,6477 16093,6480 16098,6476 16099,6478 16099,6481 16100,6486 16105,6486 16110,6488 16105,6485 16107,6487 16108,6484 16104,6485 16101,6488 16101,6489 16103,6493 16105,6493 16108,6490 16110,6487 16113,6492 16116,6495 16118,6499 16123,6497 16124,6496 16127,6498 16132,6497 16134,6499 16138,6503 16143,6502 16138,6500 16140,6502 16144,6502 16146,6503 16150,6498 16151,6500 16154,6495 16154,6494 16154,6499 16156,7499 16158,7504 16161,7507 16166,7503 16163,7505 16163,7508 16163,7511 16165,7514 16162,7517 16165,7519 16166,7524 16165,7527 16168,7529 16172,7534 16172,7534 16177,7539 16179,7537 16179,7538 16184,7538 16185,7538 16189,7540 16191,7540 16193,7541 16193,7545 16197,7550 16199,7554 16204,7558 16208,7559 16211,7560 16214,7564 16216,7563 16215,7558 16219,7558 16216,7555 16221,7559 16223,7559 16224,7559 16226,7561 16231,7558 16235,7553 16240,7552 16236,7557 16234,7552 16236,7554 16238,7557 16239,7552 16243,7553 16243,7555 16243,7555 14243,7558 14248,7559 14243,7559 14239,7561 14241,7561 14243,7561 14248,7562 14250,7566 14254,7570 14254,7575 14256,7575 14259,7576 14259,7579 14259,7583 14257,7583 14257,7583 14253,7584 14249,7579 14247,7576 14245,7579 14250,7577 14253,7582 14256,7582 14257,7578 14253,7575 14252,7577 14255,7578 14255,7578 14256,7581 14257,7584 14252,7588 14252,7592 14249,7592 18249,7588 18253,7590 18255,7592 18259,7596 18254,7601 18255,7601 17255,7605 17256,7610 17258,7613 17261,7617 17262,7619 17266,7617 17267,7621 17268,7623 17272,7626 17272,7626 17277,7625 17282,7620 17281,7617 17284,7618 17287,7617 17283,7616 17281,7621 17279,7624 17281,7624 17282,7624 17279,7628 17279,7628 17280,7633 17284,7637 17280,7638 17280,7638 17281,7641 17282,7641 17282,7638 17283,7638 17284,7643 17280,7647 17281,7652 17285,7656 17285,7658 17288,7660 17290,7661 17292,7664 17297,7666 17302,7663 17304,7664 17300,7659 17303,7661 17303,7657 17307,7659 17307,8659 17310,8661 17313,8664 17314,8665 17313,8665 17309,8669 17313,8671 17316,8670 17320,8668 17320,3668 17323,3665 17324,3661 17329,3661 17331,1661 17332,1661 17333,1663 17338,1668 17333,1663 17333,1667 17331,1668 17331,1664 17334,1666 17337,1665 17337,6499 16138,6503 18138,10503 18142,10503 18142,10505 21142,10502 21144,10502 21142,10504 21141,10504 21139,10508 21140,10512 21141,10512 21143,10515 21144,10517 21147,10517 21143,10519 21143,10519 21146,10519 21142,10519 21142,10522 21141,10523 21141,10523 21145,10523 21149,10527 21153,10531 21154,10534 21158,10531 21158,10527 21160,10532 21165,10534 21165,10531 21165,10533 21162,10529 21163,10532 21160,10534 21163,10535 21161,10540 25161,10538 25164,10538 25166,10540 25171,10543 25171,10547 25175,10547 25175,10550 25178,10552 25182,10556 25177,10558 25181,10558 25183,10563 25187,10564 25183,10560 25188,10565 25188,10569 25191,10573 25195,10575 25199,7581 14257,7585 14257,7586 14257,7588 14254,7590 14255,7593 14256,7590 14260,7595 14263,7595 14259,7597 14256,7598 14261,7598 14258,7599 14261,7600 14261,7602 14258,7602 14258,7598 14259,7598 14264,7600 14267,7601 17267,7597 17268,7602 17273,7605 17276,7605 17276,7603 17279,7604 17279,7608 17278,7613 17282,7615 17285,7617 17288,2617 17288,2617 17289,2620 17289,2620 17285,-1380 17288,-1382 17287,-1384 17292,-1384 17294,-1380 17295,-1380 17297,-1380 17299,-1375 17303,-1372 17303,-1373 17298,-1368 13298,-1365 13301,-1366 13297,-1371 13295,-1371 13298,-1371 13298,-1375 13301,-1378 13302,-1378 13302,-1377 13302,-1374 13301,-1373 13306,-1370 13311,-1371 13307,-1366 13307,-1365 13309,11349 6992,11352 6992,11354 6997,11356 7002,11356 7007,11359 7010,11354 7005,9354 7009,9356 7011,9359 7016,9360 7014,9360 7015,9363 8015,9367 11015,9370 11012,9367 11012,9368 11016,9363 11017,9360 11018,9364 11021,9359 11016,11402 8027,11399 8029,11400 8033,11401 8034,11405 8029,11407 8027,11410 8029,12410 8033,12414 8035,12412 8040,12415 8040,12416 8045,12421 8042,12426 8037,12424 8042,12427 8042,12430 8044,12434 8046,12430 8048,12434 8045,9434 8045,9439 8043,9442 8043,9442 8045,9442 8040,9442 8035,9438 8038,9440 8039,9445 8036,9446 8039,9441 8043,12441 8047,12440 8048,12444 8052,12445 8057,12450 8053,12452 8053,12448 8054,12443 8058,12441 8063,12444 8067,12449 8067,12448 8071,12451 8076,12454 8073,17454 8073,17457 8074,17459 8079,17463 8079,17461 8080,17464 4080,17467 4085,17463 4085,17463 4088,17462 4090,17464 4095,17468 4094,17464 4097,17464 4093,17466 4088,17469 4092,17470 4094,17472 4089,17470 4090,17473 4089,17478 4094,17474 4091,17477 4095,17482 4100,17487 4103,17492 4101,17492 4104,17493 4101,17495 4106,17497 4106,17502 4111,17505 4111,17504 4113,17505 4115,17509 4119,17504 4123,17505 4127,17503 4131,17503 4126,17504 4126,17506 4129,17501 4132,17502 4133,17499 4133,17503 5133,17503 5135,17498 5134,21498 5134,21498 5131,21498 5133,21497 5138,21501 5140,21502 5138,21502 5141,21505 5136,21501 5139,21501 5141,21505 5146,21510 5151,21510 5155,21512 5156,21508 5159,21508 5163,21512 5167,21517 5169,21521 5173,21519 5172,21517 5172,21515 5172,21515 5173,21516 5172,21515 5169,21516 5170,21516 5170,21516 5168,21520 5172,21523 5172,21525 5174,21522 5176,21523 5180,21527 5176,21527 5177,21527 5178,21531 5183,21533 5181,21538 5176,21539 5179,21544 9179,21544 9184,21547 9186,21548 9184,21553 9188,21553 9193,21554 9195,21556 9200,21556 9201,21555 9201,21556 9205,21561 9205,21556 9202,21561 9203,22561 9204,22566 9204,22561 9208,22559 9210,22564 9207,22560 9205,22560 9208,22564 9210,22567 9214,22569 9218,22572 9222,22576 9218,23576 9222,24576 9220,24574 9224,24569 9228,24569 9228,6481 16100,6483 16101,6486 16104,6485 16108,8485 16110,8486 16115,8482 16110,8483 16115,8485 16110,8486 16106,8487 16103,8490 16106,8486 16107,8487 16104,8487 16104,8492 16108,8493 17108,8488 17108,8490 17110,8494 17114,8495 17113,8495 17117,8498 17117,8503 17122,8498 17124,8498 17128,8494 17129,8496 17134,8496 17134,8497 17135,8498 17135,8501 17135,8502 17132,8506 17132,8501 17130,8505 17131,21515 5169,21518 5164,21523 5160,21528 5162,21530 8162,21532 8164,21536 8165,21536 8168,21540 8169,21543 8165,25543 8169,25545 8173,25549 8169,29549 8174,29546 8177,29547 8172,29552 8177,29552 8180,29557 8180,29558 8175,34558 8180,34558 8176,34555 8179,34556 8181,7584 14249,7586 14250,7588 14252,7591 14256,7587 14257,7590 14257,7592 17257,7597 17261,7601 17265,7605 17268,7606 17273,7610 17268,7612 17270,7612 17271,7615 17266,7617 17266,7622 17270,7627 17272,7627 19272,7631 19277,7636 19279,7636 19280,7636 19285,7637 19287,7639 19290,7644 19295,7647 19291,7649 19296,7653 19296,7653 19291,7656 19292,7657 19292,7653 19292,7653 19297,7652 19297,7648 19299,7647 19303,7647 19304,7649 19307,7654 19309,7651 21309,7653 21309,7657 21313,7659 21309,7662 21310,7666 21314,7663 21314,7663 21317,7658 21317,7661 21321,7666 21323,7667 21328,7662 21333,7663 21328,7667 21332,7669 21334,7671 21330,7674 21326,7675 21331,7679 21336,7681 21338,7681 21342,7681 21342,7677 21345,7682 21346,3682 21348,3680 21350,3681 21351,3680 21349,3681 21349,3686 21350,8686 21355,8682 21354,8685 21350,8681 21345,8684 21350,8683 21353,8681 21356,8681 21358,8684 21361,8684 21364,8684 21367,8685 21363,8685 21365,8685 21362,8688 21358,8690 21359,8687 21364,8687 21364,8689 21361,8691 21356,8696 21353,8696 21352,8699 21352,8699 21357,8703 21358,8706 21353,8708 21358,17503 4126,17505 4129,20505 4133,20510 4133,20515 4128,21515 4129,21516 9129,21519 9131,21524 9134,21522 9135,21522 9138,21518 9137,21516 9138,21516 9138,21515 12138,21516 12142,21518 12146,21513 12144,21517 12149,21521 12144,21521 12148,21523 12151,21527 12148,21527 12143,21528 12148,21528 12145,21533 12149,21534 12152,21537 12155,21532 7155,21536 7153,21540 7157,21536 7154,21540 7154,21539 7157,21539 7160,21542 7160,21547 7164,21551 7168,21554 9168,21556 9168,21556 9169,21559 9166,21561 9169,21565 9171,21568 9176,21565 9181,21567 9180,23567 9178,23570 9181,23575 9181,23571 9181,20571 9176,20574 9179,20569 9182,20569 9184,20570 9189,20565 9191,20562 9195,20559 9196,20559 9201,20563 9197,20564 9193,20565 9197,20565 9200,20565 9200,20563 9201,20559 9205,20564 13205,20560 13207,20560 13212,20555 13213,20558 13217,20554 13217,20558 13219,20559 13222,20561 13223,20561 13226,20561 13231,20562 13232,20567 13235,20564 13239,20560 13239,20560 13236,20560 13236,20560 13237,20564 13241,24564 13241,28564 13242,28564 13240,28561 13237,28561 13240,28562 13243,28563 13243,28560 13248,28559 13248,28559 9248,28562 9245,28564 9241,28567 9245,28568 9240,28568 9245,28571 9247,28571 9248,28574 9253,28572 9256,28576 9257,28577 9257,28574 9257,10564 25183,10566 25188,10567 25190,10568 25186,10569 25187,10570 25188,10573 25185,10568 25185,10570 25187,10573 25191,10573 25193,10578 25193,10578 25198,10581 25202,10582 25206,10578 25206,10579 25211,10580 25206,10582 25208,12426 8037,12427 8042,12432 8047,12437 8047,12435 8051,12435 9051,12432 9054,12433 9056,12435 9061,12438 9062,12435 9062,12438 9067,12434 9071,12431 9075,12436 11075,12436 11075,12441 11080,12445 11085,12449 11089,12445 11091,12442 11091,12442 11093,12442 11093,12443 11098,12439 11098,12440 11099,7440 11104,7442 11107,7446 11110,7446 11114,7451 6114,7452 6110,11452 6105,11452 6104,11454 6103,11459 6106,11462 6107,13462 6107,13458 6104,12458 9104,17458 9109,17458 9110,17460 9113,17465 12113,17468 12112,17468 12114,17466 12111,17470 12116,17469 12119,17472 12123,17470 12118,17474 12118,17476 12120,13476 12121,13480 17121,13480 17125,13484 17123,13489 17122,13489 17125,13487 17127,13487 17132,13486 17131,13491 17136,13491 17139,13495 17144,13496 17147,13496 21147,13498 21149,13498 21154,16498 21159,16503 21162,16504 26162,16509 26160,16509 26163,16509 26162,16514 26159,16518 26163,16522 26158,16518 30158,16516 30161,16516 30164,16517 30169,16520 30167,16525 30168,16528 30170,17528 30170,17532 30175,17533 30177,17533 30182,17536 30186,17537 30189,17540 30193,20540 30193,20541 30196,20541 30197,20542 30196,20544 30195,20548 30200,20553 30199,20557 30201,20561 30206,20565 30210,20566 30209,20568 30214,20568 30217,20563 30217,20563 30218,20565 30222,20567 30222,20572 30225,20567 29225,20570 29225,20570 29230,20573 29231,20571 29230,20569 29232,20570 29236,17504 4123,17505 4127,17508 5127,17505 5131,17505 5135,17509 5140,17508 5142,17510 5139,17515 5141,17517 5144,17522 5144,17524 5146,17529 5147,17529 5152,17533 8152,17533 8150,17537 8153,17532 8158,17533 11158,17536 11163,17540 16163,17540 16165,17542 16168,17542 16171,17542 16171,17547 16167,17548 16170,17550 16170,17545 16175,17549 16178,17549 16179,17549 16179,20549 16181,20551 16186,20549 15186,20550 15186,20547 15188,20550 15184,20546 15186,20545 15191,20548 15190,20552 15193,20557 15195,20552 15196,20557 15193,20562 15196,20562 15199,20567 15202,20563 15207,20564 15207,20564 15209,20568 15209,20571 13209,20573 13209,20576 13211,20577 13216,20574 14216,20570 14215,20568 17215,20568 17216,20570 17218,20575 17218,20580 16218,20583 16215,20586 16217,20581 16220,20582 16224,20585 16224,20588 16229,20590 16231,20592 16235,20595 16232,20595 16234,20598 16238,20603 16240,20607 16236,20608 16236,20608 16239,20611 21239,20613 21244,20614 21246,20612 21244,20612 21242,20615 21239,20616 21241,20621 21242,17621 21244,17626 21245,17629 21244,15629 21239,15632 21240,15636 21245,15637 21247,15639 21244,15637 21245,15642 21245,15647 21244,15646 21248,15650 21252,15653 21247,15651 21250,15649 21250,15645 21250,19645 21253,19648 21256,19647 21253,19643 21249,19646 21249,19648 21245,19650 21242,19647 21240,19652 21240,14652 21240,14657 21243,14659 21244,14664 21241,14659 21239,14654 21240,14651 21244,14647 21246,14647 21249,14650 21247,14651 21252,14651 21255,14649 21258,14652 21262,14655 21262,14652 21260,14653 21255,14653 21255,14653 21257,14656 21258,14651 21258,14653 21261,14654 21263,14654 21264,14659 21267,14660 21263,14664 21264,14666 26264,14661 26266,14661 26263,14661 26264,14666 26265,14667 26265,14665 26263,14669 26263,14667 26263,14669 26261,14667 26263,14671 26261,14671 26263,12671 26264,12672 26266,12677 26269,17677 26269,17673 26271,17676 26271,17676 26273,17681 26278,17685 26278,21536 8168,21539 8171,21543 8169,21538 8170,21541 8170,21544 8171,21548 8166,21548 8168,21552 8171,21555 8173,21558 8168,21557 8168,21562 8163,21559 8168,21559 8172,21564 8177,21569 8175,21568 8175,21573 8178,21575 8180,21570 8183,21570 8186,21566 8184,21569 8185,21569 8187,25569 8190,25571 8193,25575 8193,25576 8194,25576 13194,25580 13194,25584 13196,25589 13197,25592 13200,25595 13205,25592 17205,25593 17209,25594 17213,27594 17209,27592 17213,27590 17212,27592 17217,27592 17220,27596 17224,27599 17227,27603 17232,27603 17227,27605 17229,28605 17230,28607 17234,28609 17230,28610 17231,28610 17236,28611 17238,28613 17241,28614 17241,28615 17243,28616 18243,28618 18246,28618 18246,28622 18246,28627 18246,28632 18245,27632 18245,27634 18245,27633 18244,27638 18245,-1366 13297,-1365 13299,-1362 13303,-1362 13300,-1361 13304,-1366 13308,-1368 13304,-1368 13306,-1367 13309,-1363 13313,-1358 13313,-1353 13318,-1351 13319,-1347 13323,-1343 13318,-1343 13322,-1340 13317,-1337 13318,-1337 13322,-1337 13324,-1335 13327,-1339 13328,-339 13328,-334 13333,-331 13336,-327 13338,-326 13340,-326 13342,-321 13340,-318 13343,-317 11343,-312 11345,-307 11349,-311 11353,-314 11350,-311 11353,-313 11349,-308 11352,-313 11347,-308 11351,-306 9351,-306 9351,-306 9351,-301 9355,-301 9356,-299 9359,-297 9355,-297 9354,-296 9359,-294 9364,-290 9360,-294 9355,-289 9357,-291 9353,-286 9355,-4286 9351,-4283 9347,-4281 9344,-4281 9344,-4280 9342,-4280 9342,-4280 9339,-4277 9335,-4274 9333,-4274 9335,-4269 9336,-4265 9339,-4260 9340,-4256 9339,-4251 9336,-4251 9339,-4249 9344,-4254 9344,-4255 9348,-4253 7348,-4251 7352,-4247 7354,-4243 7357,-4242 7357,-4240 7362,-4240 7367,-4235 7371,-3235 7371,-3230 7376,-3225 7375,-3221 7372,-3223 7369,-3223 7371,-3223 7369,-3225 7364,-3220 7364,-3218 11364,-3218 11368,-3215 11369,-3210 11372,-3210 11369,-3208 11373,-3207 11377,-3207 11381,-3209 11384,-3209 11383,-1209 11379,-1211 11383,-1209 11383,-1205 11379,-1200 11384,-1197 11379,-1195 11375,-1197 11376,-1192 11377,-1192 11379,-1192 11384,-1188 11382,-1186 11382,-1181 11384,-1180 11388,-1176 11389,-1171 11388,-1171 11393,-1169 11393,-1164 11398,-1162 11393,-1158 11392,-1155 11395,-1155 11397,-155 16397,-156 16401,-156 16406,-158 16409,-158 16412,-158 16414,-160 16415,-158 20415,2842 20411,2847 20413,2848 20417,2848 20417,2848 20412,2850 20407,2850 20403,2846 20408,2847 20406,2849 20406,2854 20402,2858 20403,2863 23403,2858 23402,2855 23405,2858 23400,2857 23400,2852 26400,2849 26404,2850 26406,2855 26410,2859 26415,2863 26411,2866 26411,2866 26411,2866 26412,2868 26415,2868 26419,2868 26423,2873 26424,2876 26425,14656 21258,14661 21260,14664 21262,14664 22262,14662 22267,14662 22268,14662 22268,14658 22273,14660 22278,14658 22277,14659 22278,14660 22283,14661 22281,14661 22285,14661 22288,14664 22290,14659 22295,14662 22298,14663 22301,14667 22301,14668 22301,14673 22303,14678 22306,14681 22302,14686 22299,14686 22301,14683 22304,14686 22305,14687 22301,14689 25301,14684 25301,14684 25299,14685 25300,14685 25301,14685 24301,14688 24301,14693 24303,14693 24298,14693 24298,14688 24299,14689 24297,14690 24299,14690 24302,14690 24302,14686 24303,14686 24306,14688 24302,8492 16108,8494 16113,8498 16116,8495 16116,8496 16116,8499 16116,8504 20116,8508 20119,8508 20119,8507 20119,8509 20123,8509 20127,8512 20128,8514 20130,8519 20135,8522 20136,8522 20136,8524 20138,8524 20141,8528 20142,8526 20145,8530 20141,8530 20145,8532 20149,8531 20151,8536 20155,8535 20154,8539 20154,8539 20149,8539 20149,8543 20146,8540 25146,8538 23146,8540 23149,8540 23149,8545 23151,8546 23152,8551 23152,8555 23152,8559 23153,8561 23153,10561 18153,10561 18153,12561 18158,12564 18159,12566 18163,12567 18165,12564 18165,12568 20165,12570 20170,12575 20173,12579 20177,12576 20177,12579 20176,12584 20176,12583 20181,12585 20182,12583 20186,12582 20187,12585 20192,12582 20194,12584 20198,12586 20198,12581 20201,12582 20204,12581 20206,13581 20209,13586 20211,13586 20216,13589 20217,13589 20213,13586 20215,13588 20213,13592 20215,13596 20216,13596 20221,13600 20221,13598 20224,13595 20221,13598 20226,13602 20229,15602 20232,15606 20232,15611 20232,15610 20232,15613 20235,15617 20239,15612 20234,15612 20233,15615 20237,15617 20233,15619 20234,15619 20229,15623 25229,15624 25229,20624 25228,20628 25229,20631 25234,20630 25239,20634 25241,20632 25244,20636 25240,20634 25237,20639 25236,20634 25241,7590 14257,7592 14260,7592 14262,7592 14265,7595 14266,7600 14263,7600 14268,7604 14270,7609 14274,7611 14275,7615 14275,7620 14277,7620 14276,7625 14277,7625 14277,7628 14281,7628 14286,7630 14284,7630 14284,8543 20146,8542 20148,8546 20150,8550 20152,8550 20153,8550 20158,8545 20156,8545 20157,8550 20157,8550 20155,8550 20157,8553 20161,8557 20161,8557 20165,8560 20161,8563 20159,8568 20154,8570 20158,8573 20161,8573 20166,8577 20168,8580 20171,8584 20173,8585 20175,8580 20180,8582 20183,8582 20188,8582 20188,8585 20193,8588 20198,8589 20199,8591 20197,8594 20198,8596 20196,8592 23196,8597 25196,8601 25199,8601 25203,8604 25202,8604 25202,8599 25205,8601 25210,8601 25206,8603 25206,8606 25206,8605 25211,8609 25211,8613 25208,8614 25205,8619 25208,8619 25210,8621 25214,8619 29214,8615 29218,8616 29219,8617 29217,8622 29222,11622 29225,11624 29229,11623 29230,9623 29225,9621 29224,9625 29227,9628 29227,9624 29232,9626 29237,9631 29241,9634 29245,9635 29248,9638 29253,9643 29258,9646 29258,9647 29255,9648 29253,9650 29258,9648 29262,9647 29262,9642 29267,9646 29267,14646 29269,14650 29274,14655 29279,14654 29277,14655 29275,14653 29276,14655 29273,14656 29269,14653 29272,14656 29272,14656 29274,14660 29276,14663 29276,14660 29278,14659 29281,14659 29276,14661 29272,14656 29273,14657 29274,14652 29270,14654 29274,14657 29270,14659 29272,14655 29275,14657 29270,14659 32270,14660 32270,14662 32273,14665 32277,12665 32279,12670 32279,12670 32277,12670 32274,12672 32277,12677 32282,12682 32285,12678 32289,12674 32291,12677 32287,12679 32287,12683 32292,12685 32292,12680 32289,12682 32294,12683 32299,12687 32298,12692 32300,12695 32305,12699 32310,12703 32311,12704 32312,21515 5172,21516 5175,21518 5175,21513 5177,21516 5182,21520 5186,21525 5185,21529 5185,21528 5186,21530 5181,21533 5178,21537 5183,21537 5183,26537 5183,26534 5183,26539 5183,26542 5178,26542 5176,26544 5176,26546 5177,26548 5175,26549 5178,26548 5181,26548 5184,26553 10184,26557 10179,26559 10175,26563 10171,26563 10173,26564 10170,26568 10169,26572 10171,26577 10171,26581 10169,26577 10173,26573 10169,26575 10171,26578 12171,26576 12175,26576 12180,26581 12183,26577 12183,26580 12184,26582 12181,26582 12182,26583 12182,26588 12186,26590 12191,26593 12193,26593 12198,26598 12198,26602 12193,26602 12193,26604 12195,26607 12195,26611 12196,26615 12196,26615 12200,21534 12152,21534 12152,21537 12147,21540 12147,21545 12150,21545 12145,21548 12150,21549 12152,21544 12152,21544 12150,21547 12153,21552 12152,21553 12157,20553 12161,20553 12156,20556 12152,15556 12157,15559 12160,15557 12163,15561 12163,15564 12166,15565 12165,15561 12161,15559 12163,15559 12168,-4274 9335,-4274 9339,-4276 9341,-4276 9344,-4273 9341,-4271 9341,-4266 9342,-4266 9339,-4269 9335,-4265 9339,-4263 9342,-4259 9345,-4254 9345,-4250 9340,-4250 9335,-4245 9338,-4242 9341,-4240 9341,-3240 9346,-3242 9349,-3241 9351,-3239 9352,-3238 9355,-3237 9358,-3233 9356,-3232 9358,-3233 9358,-3228 9363,-3228 9364,-3223 9369,-3226 9369,-3224 9373,-3222 9378,-3217 9379,-3215 9384,-3215 9384,-3215 9389,-3215 9394,-3215 9390,-3210 9385,-210 9386,-207 9389,-208 9389,1328 -1007,1328 -1010,1329 -1013,1334 -1018,1339 -1013,1344 -1013,1346 -1013,1350 -1015,1351 -2015,1353 -2016,1353 -2011,1350 -2016,1350 -2013,1354 -2010,1356 -2005,1359 -2007,1364 -2005,1363 -2005,1365 -2000,1362 -1999,1365 -1998,1366 -1998,1362 -1994,1364 -1989,1365 -1988,3668 17323,3665 17327,3663 17332,3666 17337,3667 17341,11433 8033,11434 8035,11434 8031,11437 8031,11437 8032,11441 8033,11439 8033,11442 8036,11445 8037,11448 8038,11452 8043,11454 8047,11456 8047,11459 8044,11454 8049,11457 8051,11460 8052,11463 8055,11458 8057,1346 -2990,1346 -2986,1350 -2982,1347 -2986,1352 -2983,1352 -5983,1355 -5979,1358 -5974,1354 -5970,1356 -5965,1360 -5964,1362 -5960,1364 -5960,1364 -5960,1369 -5960,1364 -5963,1369 -5960,1374 -5957,1378 -5952,1380 -5951,1384 -5951,1380 -5948,1380 -5944,1384 -5942,1387 -5945,5387 -5949,5391 -5950,5395 -5950,5395 -5951,5395 -5949,5400 -5954,5404 -5953,5402 -5958,7402 -5958,7403 -5963,7404 -5960,7404 -5959,11363 6016,11359 6018,11364 6023,11365 6024,11365 6023,11369 6025,11373 6020,11378 6020,11377 6024,11379 6029,11383 6033,11384 6034,11388 6037,11389 6041,11394 6043,11396 6048,11401 6048,11402 6050,11406 6052,11404 6054,11409 6058,11413 6059,11415 6060,11411 6065,11416 6068,11420 6073,11415 6076,11416 6078,11419 6083,11423 6085,11428 6086,11430 6086,11432 11086,11437 11091,11432 11088,11429 11086,11432 11086,11427 11090,11427 11095,11429 11092,11427 11092,11431 11087,11433 11088,11436 11090,11436 11091,11436 11096,11439 11099,11440 11099,11440 11095,11445 11097,15445 11102,15445 11102,15441 11099,15445 11100,15445 11102,15443 11106,15445 11110,15450 11107,15453 11110,15457 11110,15457 11115,15459 11119,15460 11117,15465 11117,15465 11120,15464 11123,15463 11124,15460 11124,15460 16124,15458 16127,15462 16122,15466 16126,15462 16131,15465 16133,15463 16135,15462 16136,15462 16140,15466 16142,15468 16147,15468 16147,15471 16149,15471 16147,15475 12147,15477 12150,15480 12147,15484 12144,15487 12145,15490 12147,15492 12149,15494 12150,15496 12153,15497 12155,15499 12150,15499 12147,15500 12143,15504 12146,15499 12150,15500 12150,15500 12152,15505 12153,15506 12157,15506 12157,15508 12158,15512 12159,19512 12162,19513 12159,19511 12163,19512 12162,19517 12167,19520 12167,19522 12168,19525 12171,19525 12172,19525 12175,19526 12172,19526 12172,19526 17172,19527 17175,19528 17176,19529 17179,19529 17178,19533 17181,19532 17183,19532 17179,19537 17174,19539 19174,19538 19171,19542 19172,19547 15172,7641 17282,7646 17284,7649 17284,7652 17284,7654 17285,7650 17289,7647 17291,7645 17296,7649 17297,7650 17294,7653 17294,7653 17298,7656 17303,7658 17308,7662 17313,7666 17308,7664 17313,7669 17313,7669 17313,7669 17316,7667 17313,7667 18313,7663 18314,7661 18316,7662 18317,7657 18318,7662 18315,7658 18316,7661 18318,7661 18322,7664 18317,7667 18315,7671 18315,7675 18315,7674 18315,7670 18316,11670 18316,16670 18321,16673 18321,16678 18322,16682 18327,16683 18332,16686 18334,16690 18334,16688 18336,16685 23336,16688 23337,14688 23338,14692 23337,14694 23338,14697 23339,14697 23342,14698 23342,14698 23343,14698 23348,14693 23350,14694 23347,14695 23347,14696 26347,14692 23347,14692 23347,14693 23350,14693 23351,14698 23355,18698 23352,18698 23356,18702 23360,18701 23362,18699 23363,18701 23363,18702 23366,18699 23366,18694 23370,18699 23370,18702 23374,18707 23378,18706 23380,18706 23381,22706 23384,22706 23385,22705 23389,22706 23384,22706 23384,22706 23384,22710 23380,22713 23381,22718 23386,22716 23390,22712 23390,22708 23390,22705 23392,22704 23397,25704 23402,25704 23402,25706 23404,25710 23404,22710 18404,22707 18402,22704 18403,22704 18406,22704 18411,22704 18411,22704 18410,22709 18410,22709 18407,22704 18405,22703 18405,22707 18405,20707 18409,20709 18412,20710 18411,20712 18414,20712 18414,20712 18412,20712 18416,20714 18412,20717 18417,20720 18419,20715 18421,20718 18422,20723 18425,20723 18430,20723 18434,20725 18435,20724 18437,20724 18433,20726 18433,20731 18437,20732 18437,20730 18438,20735 18440,20739 18438,20734 18438,20739 18437,20739 18437,20744 18439,20749 18438,20750 18434,20753 18436,20754 18431,20754 18432,20758 18433,20762 18438,20764 18443,20766 18447,20766 18450,20767 18451,20768 18451,20769 18448,20770 18452,20774 18456,20777 18458,20781 18462,20782 18463,20785 18468,17785 21468,17784 21473,17782 21477,17787 21481,17783 21482,17785 26482,17788 26482,17788 26482,17791 26479,17794 26483,17790 26483,22790 26483,22790 26479,20583 16215,20585 16220,20589 16225,20590 20225,20592 20222,23592 20227,22592 20229,22597 20233,22600 20233,22603 20237,22604 20240,22599 20241,22595 18241,22595 18242,22598 18243,22602 18247,22605 18252,22601 18256,22598 18255,22600 18257,22604 18258,22609 18261,22608 18261,22606 18264,22608 18261,22605 18265,24605 18262,24608 18263,24611 18267,24608 18267,24613 18271,24615 18272,24610 18273,24614 18272,24619 18276,24621 18281,24625 18276,24622 18280,24622 18282,24621 18279,24622 18277,24627 18279,24631 18284,24634 18289,24634 18292,24634 18294,24636 18299,24639 18294,24644 18295,24647 18298,24647 18301,24643 18303,24643 18306,24639 18311,24636 18315,24641 18317,24645 18317,24648 18319,24649 18323,24649 18328,24652 18330,24652 18329,24652 18327,24655 18322,24656 18319,24658 18319,24661 18320,24664 18316,24660 18320,24657 18318,24657 18320,24659 18325,24660 18327,24661 18323,24656 18327,24652 18323,24654 23323,24658 28323,24660 28318,24665 28319,24666 28323,24668 28325,24668 28328,24672 28325,24667 28328,24668 28325,24670 28326,24665 28330,24668 28334,24672 28336,24672 28336,24668 28339,24672 28340,24672 28338,24674 28341,24675 28346,24675 28351,24677 28356,24679 28357,24681 28356,24677 28360,24680 28355,24684 28354,24688 28356,24688 28351,24690 28356,24686 28361,24691 28364,24692 28364,24692 28365,24692 31365,24693 31370,21693 31370,21692 35370,21688 35372,21692 35377,21695 35377,21697 35377,21698 35379,21698 35374,21701 35375,21701 35379,21703 35380,21708 35383,21706 36383,21709 36383,16709 36383,16710 36386,16715 36382,16711 36386,16706 36388,16706 39388,16706 39383,16706 39379,16711 39379,16711 39376,16714 39381,16716 39386,16717 39389,16717 39391,16720 39391,16723 39387,17723 39392,17726 43392,17722 43396,19722 43399,19724 43394,19727 43391,19725 43395,19723 43398,19726 46398,19730 46400,19730 46403,19730 46405,19734 46407,19734 46410,19733 46407,19728 46412,19726 46416,19726 50416,19723 50417,19723 50416,19718 50420,19719 50424,19718 50429,19713 50433,19715 50437,19718 50442,19719 50442,19718 50444,19719 50439,19721 50443,18721 50444,18721 50446,18721 50450,18726 50451,18727 50453,18722 50451,18727 50456,18729 50455,18731 50458,18726 50458,18728 50458,18730 50463,18730 50460,18729 50456,18727 50460,18730 50462,18734 50457,18739 50455,18744 50457,18744 50461,18748 50461,18748 50466,18745 50468,18749 50463,18750 50468,18754 50472,18754 50472,18759 50472,18760 50468,18763 50473,18760 50477,18762 50477,18766 50481,18769 50483,18769 50481,18772 50482,18776 50482,18779 50486,18779 50489,18781 50489,18783 50494,18786 50496,18786 50495,18786 50498,18784 50499,18784 50499,21784 50504,21788 50502,21785 49502,21790 49501,21790 49498,21795 49494,21800 49494,21801 49495,21801 49500,21797 49505,21799 46505,21802 46508,21798 46513,21799 46516,21802 46516,21805 46519,21800 46524,21805 46527,21804 46528,21801 47528,21801 47531,21804 47533,21804 47529,21804 47534,21809 47538,21808 47538,21812 47540,21812 47535,21813 47532,21810 52532,21812 52535,21817 52536,21820 52536,21824 52541,21828 52545,19828 52545,19829 52547,19829 52551,19833 52555,19831 52552,19826 52557,17826 52562,17827 52567,17830 52568,17830 52572,17830 52575,17830 52575,17830 52574,17831 52578,17827 52582,17827 55582,17829 55583,17834 55583,17839 56583,17843 56579,17846 56580,17850 56584,17848 56588,17853 56592,17851 56596,17856 56596,17856 56600,17851 56601,17856 56601,17856 56604,20856 56604,20861 56601,20865 56596,20865 56597,20866 56597,20869 56602,20871 56603,20874 56607,20871 56605,20872 56610,20874 56613,20874 56612,20876 56617,20876 56622,20876 56626,20876 56621,20879 56623,20880 56627,20883 56624,20880 56629,20880 56629,20881 56630,20884 56630,20884 56635,20881 56636,20879 56637,20876 56632,20879 56629,20881 56633,20878 56634,20879 56634,20879 56637,20879 56642,20884 56638,20879 56639,20884 56634,20885 56631,20886 56633,20889 56632,20894 56627,20894 56631,20894 56631,20898 56632,20903 56632,20908 56630,20907 56633,20907 56636,20903 56641,20904 56641,20904 56637,20900 56639,20905 56642,20910 56643,20905 56648,20910 56653,20915 56654,20910 56659,20910 56663,20910 56664,20912 56664,20912 56666,20917 56670,20922 56670,20918 56673,20920 56675,20920 56677,20920 56677,20921 56681,20926 56677,20931 56677,20934 56680,20934 56684,20936 56689,20938 56689,20938 56690,20940 56695,20935 56696,20939 56697,20939 56699,20940 56696,20941 56694,20940 56698,20945 56700,20947 56702,20947 56707,20950 56712,20954 56713,20950 56710,20952 56706,20955 56704,20957 56708,20953 56709,20951 56714,20953 56716,20957 56720,20957 56722,20959 56725,20958 56727,20959 56728,20962 56731,20963 56736,20965 56741,20965 56740,20967 56742,20969 56737,20969 56742,20974 56744,20979 56744,20978 56745,20974 56748,20970 57748,20972 57749,20974 57751,20971 57754,20972 57752,20977 57755,20981 57758,20981 57763,20981 57765,20984 57765,20982 57767,20982 57763,20987 55763,20989 55767,20991 55770,20987 55771,20988 55774,20988 55777,20991 55775,21991 55778,21996 55778,22000 55783,22001 55783,22005 55783,22010 55785,17010 55781,17011 55783,20011 55778,20015 55783,20018 55786,20015 55791,20015 55795,20019 55792,20019 55792,20021 55792,20022 55788,20023 55783,20028 55786,25028 55790,26028 55795,26029 55790,26030 57790,26033 57794,26032 57798,26036 57802,26039 57805,26042 57805,26046 57810,26050 57811,26054 57815,26054 57819,26050 57819,26055 57820,26060 57822,26063 57823,26066 57826,26068 57824,26073 57826,26077 57831,26082 57831,26078 57836,26082 57839,26084 57839,26086 57834,26082 57834,26083 57835,26082 57840,26083 57844,26086 57843,26083 57846,22083 57849,22084 57847,22089 57847,22094 57848,22094 57853,22094 57850,22095 59850,22095 59855,22098 59858,22099 63858,22099 63861,21099 63861,21104 63862,19104 63862,19108 63864,19109 63864,19112 63868,19113 63873,19117 63876,19121 63875,19116 63877,19115 63882,19117 63878,19122 63883,19125 63884,19129 63879,19133 63879,19135 63874,19139 63871,19136 63871,19136 63873,19140 63868,19140 63873,19144 63877,20144 63879,20144 63876,20146 63880,20148 63878,20149 63877,20149 63879,20150 63882,20155 63886,20155 64886,20159 64884,20160 64884,20161 64887,20160 64887,20164 64887,12677 32287,12677 32292,12679 32297,12678 32298,12682 32294,12687 32294,12682 32296,12682 32296,12683 32298,12683 32301,12682 32305,12685 32309,12686 32311,12686 32316,12691 32311,12692 32316,12692 32312,12697 32314,12700 32319,12705 32322,12706 32327,12704 32329,12705 32332,12702 32334,12707 32338,12703 28338,12704 28340,12700 28345,12702 28345,12702 28345,12701 28348,12704 28349,12704 28345,12709 28342,12709 28343,12714 28347,12718 28351,12723 28352,12727 28353,12730 28355,12728 28353,12733 25353,15733 25353,15736 25355,15740 25356,15745 25356,15747 25351,15752 25353,15752 25354,15754 25354,15754 25353,15759 25352,15763 25352,15764 25357,15759 25352,15761 27352,15760 27354,15760 27354,15760 27355,15762 27357,15762 27354,15759 27354,15759 27354,15763 27358,15767 32358,15764 32360,15769 32360,15767 32360,15765 37360,15770 37362,15772 37363,15774 37367,15779 37363,15780 37359,15779 37363,15782 37366,15780 37370,15775 37370,15778 37365,15781 37360,15785 37356,15785 39356,15789 39358,15789 39360,15794 39365,15794 39370,15797 39375,15797 39380,15799 39379,15804 39376,15805 39377,15807 39380,15808 39385,15809 39386,15807 39386,15809 39386,15810 39389,15815 39392,15820 39392,15819 39396,15820 39398,15820 39395,15825 39400,15823 39405,15824 39403,15829 39403,15834 39406,15836 39411,15831 39415,15832 39415,15833 39415,15838 39417,15839 39419,15839 39414,15842 39413,15846 39418,15843 39420,15842 39423,15839 39420,15840 39422,15839 39420,15842 39415,15846 39410,17846 39415,17845 39411,17847 39416,17849 39420,18849 39424,18847 41424,18852 41424,18849 41429,18849 41432,18848 43432,18852 43433,18855 43433,18859 43435,18855 47435,18858 47440,18861 47435,18866 47435,18866 47439,18869 47442,18871 47445,18873 47445,21873 47445,21876 47444,21873 47449,21878 47451,21883 47456,21880 47454,21880 47454,21880 47457,21883 47459,21887 47464,21890 47465,21893 47467,21894 47464,16894 47462,16899 47457,16898 47455,16893 47456,16897 47458,16896 47455,16898 47459,16900 47464,16903 47469,16908 47471,16903 47474,16901 47473,16906 47473,16901 47478,16904 47479,16906 47475,16906 47474,16907 47475,16906 47479,16901 47482,16901 47482,16905 47486,16908 47487,16911 47490,16915 47490,16917 47492,16921 47497,16926 47498,19525 12175,19525 12176,19521 12177,19522 12181,19525 14181,19521 14181,19519 14185,19519 14189,19524 14192,19527 14192,19529 14196,19534 14200,19535 14205,19538 14208,19540 14204,19545 14207,19545 14207,19547 14210,19550 15210,19554 15210,19555 15210,19555 15213,19560 15213,19562 15212,19564 15213,19569 15210,19570 15214,19573 15214,23573 15217,28573 17217,28574 17220,28574 17219,28574 17224,28576 17229,28577 17233,28577 17236,28579 17236,28580 17238,28584 17243,28588 17248,28587 17252,28587 17252,28582 17255,29582 17259,29577 17260,29578 17262,29583 17257,29585 17257,29586 17260,29586 17265,29590 17267,29593 17267,29594 17267,29599 21267,29603 21271,29603 21272,29605 21274,29607 21276,29612 26276,29613 26279,29616 26280,29621 26277,29621 26277,29623 26282,29626 26285,29631 26289,29628 26289,29632 26290,29637 26294,29642 26290,29646 26292,29648 26291,29649 26288,29653 26293,29655 26292,29655 26293,12702 28345,12703 28348,12698 27348,12699 27349,12698 27354,12700 27354,12700 27355,12703 27360,12703 27361,12700 27362,12704 27367,12701 27371,12706 27376,12710 27372,12710 27373,12710 27368,12715 27370,12713 27374,12716 27378,12716 27380,12714 27379,12719 27374,12718 27373,12722 27376,12724 27376,12729 27371,12733 27372,12733 27377,12735 27373,12735 27374,12737 27378,12739 27379,12742 27381,12739 27381,12739 27376,12743 27378,12743 27379,9743 27375,9744 32375,9745 32377,9746 32374,9746 32372,9750 37372,9752 37375,9754 37375,9751 37377,9755 37379,9759 37379,9763 37383,9766 37385,9767 37382,9768 37383,9765 40383,9770 40378,9770 40382,9775 40384,9777 40386,9782 40391,9778 40395,9773 40395,9778 40397,9779 40399,9781 40402,9781 40398,9781 40393,9780 40396,9782 40399,9785 40398,9786 40395,9789 40390,9793 40387,9798 40390,9803 40394,9805 40397,9800 40400,9795 40402,9800 40403,9802 40407,9807 40410,9806 40407,9807 40403,9812 40400,9814 40403,9819 40403,9819 40400,9822 40405,9824 40405,9822 40408,9827 40410,9831 40413,9831 40413,9826 40412,9827 40417,9832 40418,9832 40416,9833 41416,9833 41421,9834 41416,9838 41416,9838 41421,9840 41422,9844 41424,9839 41424,9843 41427,9845 41430,9849 41430,9849 41425,9852 41423,9855 41426,9858 41429,9860 41434,9862 41436,9866 41441,9868 41436,9869 41434,9871 41434,9875 41437,9877 41437,9881 41438,9883 41438,9879 41438,20903 56641,20898 56644,20903 56647,20901 56649,20903 56645,20905 56650,20909 53650,20905 53650,20910 53652,20907 53655,20912 53652,20916 53656,20917 53656,20912 53661,20912 53660,23912 53663,23912 53663,23909 53663,23912 53665,23913 53669,23911 53669,23915 53669,23912 53671,23916 53670,23917 53675,23922 53680,23927 53683,23930 53688,23935 53689,23935 53691,23935 53691,23931 53692,23931 53694,27931 53693,27933 53695,27937 53695,27942 53699,27947 53701,27949 53703,27949 53704,27949 53708,27952 55708,27953 55710,27949 55710,27953 55710,27958 55713,27959 55718,27960 55722,27962 55725,27965 55730,27965 55732,27968 55730,27969 55733,27972 55733,27975 55734,27975 55734,27979 55737,27981 55733,27982 55732,32982 55732,32979 55734,32978 55737,32978 55738,32974 55742,32977 55746,32981 55750,32985 55746,32983 55747,32987 55750,32992 55751,32995 55751,32998 55751,32998 55753,32998 55753,32993 55753,32995 55757,32999 55758,33002 55760,33002 55761,33005 55766,33005 55767,33000 55764,32997 55767,32997 55771,33001 55773,32998 55777,33001 55777,33005 55776,33004 55776,33009 55781,33014 55786,33014 55790,33015 55790,33016 55790,33015 55786,34015 55787,34019 55790,34019 55791,34021 55793,34017 55793,34019 55796,34016 55797,34020 55793,34020 55796,34023 55792,34023 54792,34025 54797,34028 54800,34029 54799,34029 54795,34034 54796,34036 54797,34041 54792,36041 54797,36045 54801,36048 54803,36051 54804,36053 54806,11439 8033,11441 8038,11441 8039,11441 8040,11445 8035,11441 8035,11442 8039,11438 8035,11438 8035,11443 8039,16443 8038,16444 8038,14444 8040,14448 12040,14451 12036,14455 12038,14455 12041,14456 12046,14459 12049,14457 12051,14458 12046,14458 12047,14459 12042,14464 12042,14465 12047,14470 12050,14471 12055,14471 12058,14468 12060,14473 10060,14477 7060,14477 7062,14474 7062,14474 7067,16474 7063,16471 7065,16474 7067,16471 7072,16471 7068,16476 7066,16481 7069,16482 7072,16487 7072,16487 7077,16488 7077,16493 7076,16493 7079,16497 7079,16500 7079,16502 7079,16502 7079,16505 7075,16504 7080,16501 7077,16497 7079,16501 7081,16497 7080,16496 7084,16500 7086,16495 7087,16498 7084,16501 7087,16496 7087,16496 7083,17496 7083,17500 7083,17505 7088,9860 41434,9864 41435,9864 41435,9865 42435,9860 42435,9862 42436,9863 42434,9863 42430,9862 40430,9863 40427,9863 40428,20608 16239,20605 16242,20610 16237,20614 16237,20615 16242,20611 16242,20612 16245,20609 16244,20604 16242,22604 16237,22608 16239,22607 16240,22610 16244,22610 16241,22615 16246,22616 16246,22614 16251,22616 16251,22617 16249,22619 16254,22623 16252,22618 16255,22618 16259,22620 16262,22615 16262,22618 16263,22622 16263,22626 16265,22629 16266,22628 16269,22633 16267,22636 16268,22636 16267,22641 16269,22646 16269,22645 16271,22646 16273,22650 16271,22655 16274,22655 16277,22658 16279,22660 16280,22658 16280,22661 20280,22663 20282,19663 20285,19658 20288,19658 20292,19661 20295,19666 20298,19670 20301,19671 20301,19675 20301,19677 20306,19675 20311,19674 20315,19678 20318,19677 20314,19680 20315,19682 20310,19684 20314,19683 20316,19687 20315,19688 20316,19688 20319,19693 20319,19698 20322,19702 20323,19698 20323,19702 21323,19707 22323,8508 20119,8509 20119,8510 20116,8515 20113,8518 20115,8519 20116,8516 20120,8520 20119,8520 20118,8525 20123,8527 20125,8527 20125,8528 20123,8530 20126,8533 20123,8535 20127,8532 20132,8534 20136,8538 20138,8542 20141,8537 20143,8537 20145,8542 20145,8547 21145,8548 24145,8552 24145,8557 24150,8560 24147,8562 24151,8566 24156,8569 24160,8574 24156,8579 24159,8584 24164,8587 24164,8585 24167,8588 24170,8591 24171,8589 24172,8590 24176,8595 24177,8593 24174,8596 24178,8600 24179,8603 24175,8602 24178,9602 24182,9605 24177,9609 24178,9610 24182,9608 24178,9603 24183,9606 24188,9608 24193,9609 24195,9614 24196,9616 24197,9618 24201,9618 24205,9613 24209,9612 24214,9608 24211,9603 24216,9607 24221,9611 24221,9615 24217,9617 24217,9618 24221,9623 24225,9623 24225,9626 24225,9630 24225,9630 24222,9626 24223,9626 22223,9627 22223,9626 22226,9629 22228,9632 22228,9636 22225,9638 22226,9639 22227,9634 22230,9634 22231,9639 22235,9639 22240,9641 22242,9642 22246,9647 22249,9652 22250,9655 22255,9651 22256,9652 22253,9652 22256,9652 22261,9655 22262,9657 22257,9659 22261,9659 22261,9657 22264,9657 22261,9656 22264,9661 22267,9662 22270,12662 22270,12665 22265,12669 22270,12669 22270,12673 22269,11356 7007,11361 7010,11361 7010,11357 7014,11356 7015,12356 7020,12357 7015,12361 7017,11361 7018,11364 7017,11359 7018,11355 7017,11354 7020,11357 7020,11361 7023,11364 12023,11368 12028,11368 12029,11371 12030,11372 12034,14372 12034,14372 12039,14372 12042,14376 12045,14381 12047,14379 12047,14381 12049,14384 12054,14385 12051,14388 12056,14384 12056,14384 12061,14381 12058,14386 12062,14386 12059,14391 12059,14396 12060,14397 12060,14398 12056,14403 12051,14408 12052,14410 12057,14409 12057,14414 12053,14414 12051,14415 12051,14420 12049,14423 12048,14427 12044,14427 12044,14425 10044,14421 10049,14424 11049,14426 11054,14427 11059,14429 11064,14433 11064,14434 11064,14437 11065,14441 11068,14444 11072,14445 11076,13445 12076,13445 12077,13445 12081,13444 14081,13446 14081,13446 14078,13449 14083,13447 14084,13450 14085,13452 14090,13453 14087,13456 14084,13457 14083,13461 14081,13463 14082,12463 14082,12463 14087,12463 14087,12464 14087,8464 14087,8465 14083,8465 14080,8467 14085,8472 14085,8473 14085,8476 14090,8474 14094,8475 14094,8480 14094,8481 14099,8476 14103,8476 14107,8480 14111,8483 14116,8488 14120,8488 14118,8488 14120,8483 14115,8481 14118,8485 17118,8485 17114,8488 17110,8488 17115,8484 21115,8484 21118,8486 21120,8487 21120,8482 21115,8487 21118,8490 21122,8494 21127,8497 21132,8497 21133,8500 23133,8503 23135,8507 23135,8508 23132,8511 23129,8512 23125,8517 23126,8522 23125,8527 23129,8522 23131,8527 23132,8530 23132,8531 23128,8533 23132,8533 23134,8533 23139,8533 23144,8536 23143,8537 23146,8533 23146,8533 23149,8537 23152,8533 23157,8530 23158,8532 23162,8536 23162,8536 23165,8536 23165,8540 23170,8544 23171,8548 23169,8547 23173,8551 23176,8552 23173,8548 23169,8553 23173,8553 23170,8548 23173,8549 23173,8546 22173,8547 22174,8551 22177,8550 22179,8552 22183,8553 22183,8553 22184,8557 22185,6557 22185,13598 20226,13601 20227,13604 20229,13608 20233,13610 20234,13605 20237,17605 20237,17610 20242,17605 20242,17602 20241,14602 20241,18602 20236,18606 20239,18606 20244,18608 20241,16608 20245,16611 20240,16615 20239,16610 20234,16611 20232,16613 20235,16608 20235,16608 20239,16613 20242,19734 46410,19734 46410,19738 46414,19737 46414,19735 46415,19737 46418,19741 46421,19744 46423,23912 53671,23908 53673,27908 53675,27913 54675,27917 58675,27921 58677,27925 58678,27930 58678,27926 58683,27930 58686,27931 58691,27931 58695,27934 58700,27936 58699,27936 58699,27941 58695,27942 58695,27947 58699,27952 58699,27954 58703,27957 58704,27962 58708,27958 58706,27959 58703,27962 58703,27967 58706,27967 58701,27965 58701,27962 58702,27966 58703,27971 58704,27976 58706,27980 58709,27980 58712,27975 58711,27971 58716,27971 58713,27968 58712,27968 58712,27971 58711,27968 58713,27968 58710,27969 58708,27972 58706,27976 58711,27978 58716,27979 58716,27983 58718,27978 58718,27981 58719,27981 58723,27986 58725,27986 58728,27986 58731,27991 58734,27996 58738,27993 58736,27995 58732,31995 58736,31990 58735,31993 58738,31990 58734,31995 58729,31996 58729,31999 58731,31994 58726,31996 58731,12463 14087,12465 14090,12465 14093,12463 14090,12463 14095,12461 14092,12464 14093,12459 14091,12459 14091,12459 14091,12459 14096,12461 14100,12458 14103,12457 14101,12452 14101,12452 14106,12453 14103,12453 17103,12455 17104,15455 17104,15460 17108,15463 17104,15458 17108,18458 17108,21458 17105,21461 17105,21464 17110,21467 17115,21464 17120,21464 17120,21468 17123,21470 17126,21465 21126,21461 21126,21464 21128,21464 21132,21468 21137,21471 21142,21475 21146,21471 21146,21476 21147,21473 21151,21475 25151,21475 25152,21477 25153,21481 29153,21479 29158,21484 29162,21488 29162,21490 29165,21487 29170,21488 29167,21489 29162,21493 29164,21493 29169,21498 29169,21499 29164,21495 29167,21498 29167,23498 29170,23498 29169,23503 29172,23505 29171,23510 29167,23514 29164,28514 29168,28514 29172,28514 29174,28512 29172,28513 29176,28518 29179,28518 29182,28521 29177,28521 29179,28519 29179,28517 29179,28515 29177,28519 29177,28519 29179,28524 29184,28527 29183,28527 29185,28523 29187,28523 29184,28525 29189,28522 29189,28518 29186,28523 29189,28519 29189,28521 29189,28526 29193,28529 29193,28529 29196,28534 29200,28538 32200,28537 30200,28539 30202,33539 30207,33539 30209,33534 30205,33535 30208,33536 30208,33538 30213,33538 30214,33542 30218,33545 30221,33548 30222,33551 30225,33552 30227,33554 30231,33555 30233,33560 30228,33563 30225,33564 30229,33565 34229,33565 34234,33570 34231,33572 34235,33572 34239,33573 34243,33578 34239,33579 34243,33574 34247,33573 34247,33576 34243,33573 37243,33573 37246,33568 37241,33568 37244,33573 37239,33578 33239,33574 33241,33574 33239,33578 38239,33583 38242,33587 38242,33590 38242,33594 38243,33596 38247,33599 38248,33599 38252,33595 38252,33598 38257,33603 38258,33604 37258,33609 37255,33604 37257,33607 37262,33607 37265,33609 37266,33614 37271,33614 37276,33616 37278,33616 38278,33616 38282,33621 38284,33621 38288,33621 38285,33618 38289,33616 38291,33616 38294,33611 38296,33608 38301,33610 38305,33610 38300,33612 38303,33617 38308,33621 38309,33625 38305,33630 38307,33634 42307,33636 42310,33638 42314,33634 42312,33631 42315,33631 42315,27931 58691,27936 58693,27937 58695,27940 58700,27943 58703,27943 58708,27946 58709,27950 58711,27950 58714,29950 58718,29951 58723,29947 58728,29947 58732,29950 58727,29950 58727,29955 58730,29960 58734,29964 58732,29961 58734,29963 58735,29968 58739,29968 58741,34968 58739,34971 58739,34972 58739,34973 58740,34968 58741,34970 58743,34974 58745,34977 58749,34979 58744,39979 58745,39979 58742,39978 58744,39982 58748,39983 58744,39983 58744,39979 58747,39979 58752,39983 58757,39982 58759,39985 58759,39986 58759,39983 60759,39986 60762,39990 60767,39994 60770,39994 60770,39997 60770,39997 60770,40000 60775,40002 60775,40003 60779,40007 60784,40008 60787,40011 60788,40015 60788,40016 60790,40016 60792,40021 60788,40025 60788,40030 60788,40026 60786,40027 60786,40030 60787,40032 60792,40037 60795,40032 60800,40032 60799,40035 64799,40035 64801,40036 64806,40041 64803,40037 64805,40038 64801,40040 64804,40036 64804,40040 64805,40045 64810,40048 64811,40051 64813,40051 64817,13491 17139,13486 18139,13489 18139,13494 20139,13492 20138,13494 20141,13499 20145,13499 20145,13499 20148,13503 20149,13500 20149,13505 20151,9367 11012,12367 11015,12369 11011,12364 11012,12364 11015,12359 11011,12354 11011,12354 11014,12359 11017,12356 11015,12361 11015,12361 12015,12365 12016,12369 8016,12374 8021,12373 8025,11373 8021,11368 8021,11373 8024,12700 27362,13700 27363,13705 27364,13710 27368,13705 27369,13707 27367,13707 27371,13709 27375,13712 27377,13714 27373,13712 27376,13714 27379,13713 27382,13718 27384,13713 27380,13713 27385,13711 27386,13715 27386,13719 27386,13719 27389,15719 27394,15724 27398,15729 27400,15734 27401,15734 27401,15729 27396,15732 27396,15735 27397,15734 27399,15733 27400,15729 27400,15734 27400,15729 27405,15734 27405,15739 27408,15739 27408,15741 27412,15743 27416,15743 27416,15740 27416,16740 31416,16743 31421,16738 31425,16742 31430,16742 31435,16743 31439,16743 31444,16741 31449,16746 31450,16747 31455,16742 31459,16738 31463,16742 31466,16742 31471,16742 31471,16742 31471,16744 31475,16749 36475,16749 36473,16753 36478,16757 36474,16761 36477,16759 36478,16761 36481,16760 36484,16761 36485,16760 36486,16765 36491,16766 36494,16771 36498,16769 36501,16771 37501,16774 37504,16769 37507,16769 37507,16772 37503,16772 37508,16774 37511,16774 37510,18774 37515,18777 37515,18772 37512,18775 37514,18777 37517,18778 37519,18779 37517,18776 37517,18778 37520,18780 37520,18785 37522,18785 37526,18787 37523,18786 37520,18790 38520,18789 38520,18792 38522,18797 38527,18802 38529,20802 38534,20804 38535,20803 38540,20802 38539,20806 38543,20811 38546,20814 38543,20812 38541,20808 38546,20811 38544,20815 38539,20816 38535,20818 38531,20815 38531,20814 38528,20814 38533,20817 38536,20816 38539,20821 38540,20818 38542,20820 38540,20816 38540,20821 38540,20823 38541,20828 38541,20831 38546,20836 38547,20836 38548,20835 38553,20835 37553,20835 37558,20837 37558,20842 37560,20846 37561,20846 37564,20849 37569,20854 37564,20854 37565,20850 37566,20852 38566,20856 39566,20861 39566,20863 39562,20867 39566,20872 39567,20868 39566,20873 39568,20876 39573,20876 39573,20880 39575,20884 39579,20885 39580,20889 39580,20891 39584,20888 38584,20889 38587,20890 38592,20891 37592,20892 37597,20894 35597,20895 35600,20897 35603,20899 35605,16678 18322,16681 18323,16682 18323,16686 18328,16690 18326,16693 18331,11693 18335,11692 18332,11695 18332,11698 18335,11703 18335,11703 18336,11702 18339,11698 18344,11702 18349,11705 18353,11704 18357,11707 18360,11707 18359,11711 18358,11716 18358,11713 18358,11712 18360,11710 18360,11710 18362,11710 18362,11710 18367,11710 18366,11707 18366,11706 18365,11710 18369,11715 18371,11714 18374,11712 18376,11711 18377,11711 18379,11712 18384,11715 18385,11711 18385,11714 18387,11717 18389,11718 18386,11721 19386,11723 19391,11722 19395,11722 19396,11723 19398,11726 19398,11729 19403,11733 19408,11736 19407,11733 19411,6733 19407,6735 19402,6738 19402,6743 19406,6746 19406,6742 19411,6742 19414,6742 19414,6746 19419,6746 19423,6746 19418,6749 19418,6747 19418,6748 19420,6748 19424,6748 19424,6751 19427,6751 19429,6752 19429,9752 19426,9754 19428,9759 19430,9756 19431,9751 19435,9753 19440,9757 19445,9755 19443,9757 19448,9757 19448,9759 19451,9763 19451,9766 19454,9766 19456,9770 19459,9770 19462,9770 19466,9766 19467,9771 19468,9772 19468,9769 19469,9768 19470,9770 19470,9774 19473,9778 19470,9781 19470,9786 19471,9789 19471,9789 19473,9792 19478,9795 19475,9800 19478,1256 2899,1260 -1101,1256 -1097,1255 -1093,1255 -1094,1259 -1089,1260 -89,2260 -84,2258 -84,2263 -88,2267 -89,2268 -91,2269 -86,2272 -86,2272 -82,2273 -77,2276 -79,2281 -81,2283 -79,2287 -75,2292 1925,2297 1930,2299 1930,2303 1932,2308 1937,2308 1936,2313 1937,2315 1934,2316 1935,2311 1936,2316 1937,2319 1938,2322 1940,2327 1940,2331 1940,2327 1943,2329 1945,2331 1950,2336 1950,2339 1954,2338 1954,7338 1954,7337 1958,7341 1960,7341 1964,8550 20152,8554 20152,8553 15152,8550 15152,8554 15154,8552 15149,8552 15153,8556 15151,8556 15148,8552 15152,8547 15149,8552 15154,8552 15155,8553 15156,8550 15156,8553 15160,8556 15164,8558 15163,8561 15163,8563 15167,8559 15169,8559 15166,8564 15167,8568 15171,8572 16171,8572 16173,8574 16170,8571 16174,8575 16174,8576 16174,8576 16174,8580 16178,8579 16183,8574 16184,8576 16184,7576 16186,7572 16181,7577 16181,7577 16185,7578 16190,7583 16185,7583 16185,7587 16185,12587 19185,12582 19188,12587 19193,12587 19195,10534 21158,10538 21162,10540 19162,10543 19158,10547 19158,10551 19160,10551 19158,10554 19158,10553 19157,10555 19157,10555 19154,10552 19156,10553 19161,10555 19166,10558 19165,10560 19165,10561 19165,10561 19165,10564 19166,10567 19164,10570 19162,10575 19165,10577 19164,10577 19168,10578 19168,10574 19171,10574 19172,10571 19175,10573 19178,6503 16143,6507 16146,6509 16142,6510 16142,6510 16143,6512 16143,6514 16146,6517 16148,6522 16143,6525 16143,6530 16143,6534 16146,6531 16144,8490 16106,8490 16106,8492 16109,8489 16110,8491 16106,8487 16109,8488 16104,8490 17104,8495 17108,8490 17109,8493 17108,8498 17111,8500 17111,8500 17109,8501 17113,8506 17118,8506 17118,8506 17123,4506 17125,4511 17123,4516 17126,4514 17125,4519 17124,4520 17126,4525 17129,4530 17124,4526 17124,4528 17124,4533 17127,4535 17127,4531 16127,4531 16124,4534 16124,4538 16125,2538 16130,2539 16131,2544 16133,2544 16129,2540 16129,2545 16129,2550 16126,7550 16126,7555 16128,7559 16124,7559 16129,7560 16132,7561 16128,7566 16132,9566 16136,9568 16136,9573 16141,9570 16144,9571 16146,9573 16150,9577 16153,9581 16148,9579 16153,9584 16157,9586 16160,9581 16162,9578 16165,10578 16162,10579 16163,10574 18163,10570 18164,10568 18164,10570 18169,10572 18170,10575 18170,10575 18175,10579 18176,10580 18176,10585 18176,10581 20176,10586 20178,10587 20178,10585 20179,10585 20177,10581 20178,10584 20183,10586 20187,10590 20187,10591 20190,10587 20188,10591 20187,10591 20192,10592 20191,10597 20195,10602 20194,10602 20195,10607 20197,10607 20198,13607 20201,13607 20200,13607 20204,13604 20204,13605 20209,13607 20209,13612 20214,13615 20218,13615 20218,13619 20220,13624 20224,13628 20219,18628 20216,18630 20213,18635 20213,18632 20211,18629 20211,18632 20215,18632 20216,18632 20217,18632 20217,18627 20214,18630 20209,18633 20212,18636 20212,18638 20217,18643 20222,22643 20219,22643 20219,22644 20219,22644 20214,22645 20216,22645 21216,22646 21220,22642 21224,22642 21221,22641 21224,22638 21229,22641 21232,22642 21235,22643 21238,22644 21236,22649 21237,22704 18411,22704 18412,22699 18412,22696 18416,22701 18412,22703 18416,22698 18416,22693 18418,22695 18422,22698 18422,22700 18426,22705 18427,22706 18427,22708 18432,22708 18432,22704 18431,22709 18427,22709 18432,22709 18436,22713 21436,22718 21438,22719 21437,22721 21440,22725 21443,22727 21445,22724 21450,22724 21451,22727 21453,22730 21453,22730 21458,22734 21460,22738 21464,20738 21464,20742 21465,22742 21465,22741 21464,22736 21464,22738 21464,22742 21460,22742 21460,22744 21458,22743 21458,22741 21455,22741 21460,22739 21456,22739 21458,22734 23458,22732 23458,22733 23463,22731 23467,22731 23469,22736 23472,22739 23472,22742 23471,22744 23471,24744 23466,24744 23468,24739 23471,24742 23474,24747 23478,24747 23481,24747 23483,24747 23486,24751 25486,24753 25489,24758 25493,24762 25497,24764 25499,24769 25496,24773 25498,24777 25499,24779 25503,24782 25500,24782 25498,24777 25498,24779 25495,24775 25495,24776 25495,24777 25495,24781 25500,24778 25503,24778 25499,24780 25500,24777 22500,24775 22505,24777 22505,24777 22501,24778 22502,24778 22505,24774 22509,24776 22509,24776 22509,24781 22509,24784 22511,24780 22513,24780 22514,24783 22515,24786 22520,24786 22520,24791 22518,24788 22517,24791 22522,24794 22525,24791 22524,24791 22528,24789 22530,24794 22530,24799 22525,24795 22524,24798 22520,24796 22516,24801 22511,24803 22516,24804 22521,24804 22526,24806 22524,24805 22524,24809 22529,24810 22531,24813 22536,24817 22536,24815 22535,24810 22530,24815 22530,24816 22530,24818 22531,24818 22531,24818 22533,24822 22533,24820 22530,24816 22529,24820 22532,24822 22533,24822 27533,24823 27536,24826 27540,24829 27541,24832 27546,24833 27549,24832 27553,24833 27552,24833 27551,24836 27551,24839 27554,24841 27554,24841 27556,24842 27559,24847 27557,24847 27562,24842 27566,24840 27564,24842 27568,24844 27563,25844 27565,25847 27569,25848 27564,25851 27561,25855 27559,25856 27556,25852 27556,25857 27561,25857 27564,25858 27564,25863 27567,25868 27567,25871 27564,25872 27565,25875 27570,25877 27573,25878 27575,25879 27574,25884 27579,25887 27577,25886 27579,25882 27582,25882 27578,25882 27582,25884 27578,25887 27583,25891 27584,25895 27582,25895 27582,25898 27583,25900 27580,11433 8033,11435 8037,11439 8040,11444 8044,11439 8048,11441 8045,11446 8044,11446 8039,11451 8038,11451 8043,11450 8046,11451 8046,11447 8049,11443 8052,11445 8057,11441 8058,11439 8060,11444 8056,11445 8053,11448 8053,11450 8049,11455 8044,11453 8042,11454 8044,11451 8049,11453 8049,11458 8052,11459 8055,11457 8053,11460 8053,11461 8055,11465 9055,11466 9056,12466 9058,12467 9054,12472 4054,12467 4056,12467 4059,12470 4058,12468 4060,14468 4064,14467 4063,14471 4060,14473 4062,14471 4067,14468 4072,14471 4076,14466 4077,14467 4074,14472 4075,14472 4080,14476 4085,14476 4090,14481 4090,14485 4091,14490 4095,14493 4095,14495 4100,14492 4100,14497 4102,14499 4100,14501 4101,14500 4106,14500 4107,14496 4108,14495 4110,14494 7110,33625 38305,38625 38310,38625 38315,38623 38318,38625 38317,38629 38318,38632 38313,38634 38313,38639 38314,38640 38317,38644 38320,38649 38321,38647 38317,38647 38322,38643 38324,38640 38319,38645 38319,38646 38319,38645 38316,38644 38318,38646 38319,38644 38324,38647 38328,38652 38325,38649 38328,38651 38332,40651 43332,40651 43335,40655 43335,40652 43339,40652 43339,40654 43336,40654 43337,40657 43333,40656 43335,40656 43338,40656 43343,40656 43341,40659 43346,45659 43348,45664 43350,45666 43346,45665 43351,45669 43355,45673 43355,45674 43359,50674 43360,50678 43363,50678 43364,50679 43367,50682 43371,50687 43374,50690 43374,50690 43377,50693 43377,50698 43382,50693 43386,50689 43386,50692 43390,50695 43392,50699 43392,50704 43397,50707 43395,50711 43391,50706 43393,50709 43393,50711 43395,50710 43397,50714 43394,50718 43394,50715 43394,50717 43399,50722 43403,50724 43407,50728 43407,50730 43408,47730 43403,47730 43404,47733 43408,47737 43409,47735 43414,47738 43416,47741 43416,47744 43421,47743 43422,47748 43424,47753 43419,47754 43420,47749 43419,52749 43423,52751 43421,52753 43421,52750 43426,52752 43428,52748 43430,52748 43426,52747 43431,52744 43431,52748 43435,52748 43435,52750 45435,52753 45440,52753 45440,52757 45442,52761 45447,52758 45447,52761 45447,52761 45452,52758 45454,52758 45455,52758 45456,52761 45460,52759 45458,52755 45463,52759 45464,52756 45461,52756 45462,52758 45467,52760 45470,52759 45469,52762 45473,52762 45474,15617 20233,15612 20238,15611 20242,15613 20237,15617 20238,15618 20239,15621 20236,15623 20240,15622 20240,15622 20245,15623 20244,15628 20242,15628 20247,15625 20246,15628 20250,15630 24250,15632 24251,15634 24253,15629 24252,15633 24250,15629 24250,15633 24248,15629 24248,15634 24248,15636 24253,15640 24253,15643 24257,15639 24254,15642 24257,15643 26257,15648 26255,15643 26256,15641 26258,15646 26262,15646 26263,15651 26263,15648 26267,15653 27267,15656 27270,15660 27272,15662 29272,15658 29276,15658 29277,15658 29272,15663 29274,15663 29274,17663 29274,17663 29279,17668 29283,17671 29285,17670 29287,17675 29289,17676 29293,17679 29296,17682 29297,17685 29299,17686 29300,17687 29305,17685 33305,17686 33310,17687 33310,17689 33306,17687 34306,17691 34304,17694 34306,17696 34306,17695 34309,17691 34314,17691 34311,17692 34306,17696 34310,17700 34310,17697 34312,17699 34316,17704 34318,17701 34318,17705 34322,17704 34321,17706 34319,17706 34319,17702 34316,17707 37316,17710 37318,19710 37313,19705 37313,19708 37308,19712 37310,19710 37312,19711 37307,19711 37307,19714 37310,19718 37312,19719 37309,19723 37312,19727 37315,19729 37317,19731 37322,19734 37323,19735 37324,19737 37322,19742 37326,19740 37331,19745 37335,19742 37335,19742 37340,19745 37341,19749 37341,19749 37342,19752 37347,19757 37347,19762 37345,19764 37341,19768 37345,19769 37350,19771 37355,19773 33355,19770 33360,19765 33364,19769 33364,19773 33365,22773 33364,22771 33360,22775 38360,22779 38364,22780 38369,22782 38371,22784 38371,22789 40371,22792 40375,22789 40375,22789 40377,22793 40376,23793 40378,23795 41378,23791 41378,23792 41378,23796 41382,23798 41383,22798 41386,22799 41390,22804 41390,22804 41391,22808 41391,22812 41393,22814 39393,22819 39393,22821 39395,22823 39397,22828 36397,22832 36392,22832 36393,22836 36396,22836 36401,22838 36402,19838 36403,19837 36408,19841 36408,19843 36409,19845 36404,19847 36405,19847 36408,19847 36411,19848 36413,19850 36415,19845 36419,19841 36417,19843 36419,19843 36419,19846 36424,19848 36425,19850 36425,19845 36425,19846 36425,19848 36430,19852 36430,19849 36435,19846 36440,19851 36440,19846 36438,19848 36439,19844 36442,19845 36446,19841 36448,19841 36449,19841 38449,19841 38452,19846 38455,19848 38458,19852 42458,19856 42462,19859 42463,19859 42465,19861 42462,19862 42463,19864 42463,19867 42467,19870 42470,19871 42468,21871 42467,26871 42464,26867 42466,26872 42463,26872 42464,26874 42463,26879 42466,26882 42466,26883 42471,26879 42476,26878 42477,27878 42479,27882 42479,27883 42480,27886 42483,27887 42487,27885 42484,27887 42483,27890 42484,27890 42485,22890 42486,22890 42489,22890 42491,22895 42494,22897 42498,22899 42502,22901 42502,22896 42503,22892 42498,22896 42498,22891 42502,22892 42505,22897 42507,22898 42511,22903 42515,22906 42510,22911 42513,17911 42508,17915 42512,17918 42509,17913 44509,17915 44514,17919 44510,17923 44514,17927 44510,17927 44513,17927 44517,17928 44521,21928 44517,21930 44516,21931 44513,21929 44513,21933 44517,21934 44519,21933 44520,21934 44520,21937 44520,21938 44520,21943 44520,21938 44523,21940 44527,21936 44532,21941 44536,21942 44541,21937 44545,21938 44545,21938 44545,21940 44543,21937 44538,21941 44543,21938 44547,21938 44547,21938 44547,21937 44551,21937 44551,21933 44556,21935 44554,21937 44558,21940 44562,21944 44564,21949 44561,21952 44566,21955 44568,21960 44569,21963 44571,21963 44571,21965 44574,25965 44579,25967 44584,25967 44584,25970 44588,22970 41588,22970 41586,22975 41585,22974 41589,22970 41593,22966 41598,22965 41598,22970 41598,22965 41601,22965 41604,22965 46604,22968 46604,27968 46602,27968 46602,25968 46601,25967 45601,25968 45602,25971 45607,25975 45610,25979 45614,25977 45612,25975 45609,26975 45609,26980 46609,26979 46613,26982 46610,26982 46611,26980 46615,26982 46616,26985 46616,26986 46617,26987 46615,30987 46617,30987 46622,30986 46626,30988 46629,30989 46627,17671 29285,17673 26285,17677 26286,17678 26285,17681 26289,15681 26292,15685 26297,10685 26297,10689 26301,10689 26297,10693 26300,10695 26301,10691 26297,10696 26299,10696 26304,10692 26306,10688 26301,10690 26302,10690 26307,10686 26305,10684 26309,10686 26312,10691 26313,10688 26318,10683 26320,10684 26325,10683 26328,14683 26328,14680 21328,14681 21331,14683 21335,14680 21333,14677 21333,14682 25333,14684 25334,14689 25338,14693 25338,14698 25341,14696 25342,18696 25343,20696 25345,20699 25349,20702 25346,20703 25351,20703 25351,20704 25351,20704 25354,20700 26354,20705 26352,20706 26351,20706 26351,20703 26354,20708 26354,20712 26355,20712 26352,20717 26349,20717 26346,20722 26351,20727 26353,20729 26348,20734 26353,24734 26349,24729 26349,24729 26352,24725 26349,24725 26353,24726 26353,24729 26355,24729 26357,24732 26359,24735 26362,24735 26364,24730 26364,24730 26363,24734 26365,24739 26368,24739 26364,24739 26366,24739 26367,24734 26370,24735 26365,24732 26367,24732 26369,24729 26372,24728 26370,24726 26365,24728 26368,24731 26370,24734 26375,24738 26378,24733 26378,24733 26381,24729 26381,13496 17147,13491 17152,13495 17148,13496 17146,13498 17141,13498 17145,13501 17147,13502 17149,13502 17153,13505 17149,13505 17152,13500 17149,13496 20149,13492 20150,13497 20155,8497 20151,8501 20153,8502 20156,8506 20159,8503 20159,12503 19159,12503 19159,12505 19164,12500 19159,12500 19164,12500 15164,12503 15169,12508 15168,12511 15170,12514 15170,12510 15169,12512 15172,12512 15172,12515 15172,12519 15175,12522 15176,12525 15180,12528 15184,23912 53663,23915 53661,28915 53666,28914 53667,28918 53664,28921 53667,28922 53667,28924 53670,28925 53674,28926 53674,28927 53672,28922 53676,28924 53677,28927 53678,28932 56678,28934 56682,28935 56683,28936 56688,28938 56688,28934 56691,28938 56693,28942 56690,28939 56694,28939 56698,28942 56695,28946 56698,28950 56701,28953 56706,28954 56706,28949 56708,28950 56708,28953 56709,28958 56706,28960 56709,28965 56707,28965 56707,28965 56705,28963 56709,28966 59709,28969 59710,28973 59711,28977 59715,28977 59717,28982 59719,28981 59715,28985 59718,28986 59718,33986 59721,35986 59723,35990 59723,35990 61723,35993 61726,35995 61728,35998 61724,36000 61721,36004 61723,36002 61718,36007 61718,36010 61719,36010 61721,36010 61721,36010 61721,36015 61721,36018 61716,36022 61717,36024 61718,36025 61723,36029 61722,36031 61726,36035 61722,36040 62722,36042 62722,36044 62722,36049 62724,36051 62720,36053 62723,36052 62719,36055 62717,36056 62712,36059 62714,36058 67714,36059 67716,40059 67716,40063 67719,40067 67722,40069 67726,40065 67724,40067 67721,40067 67722,40071 67721,40075 67726,37075 67730,37076 67733,37076 67736,37072 67741,37072 67741,37072 67744,37076 67744,37079 67745,37081 67750,37082 67750,37082 67753,37082 67753,37083 67752,37081 67753,37084 67753,37087 67757,37087 67758,37083 67753,37084 67758,37084 67761,37088 67759,37091 67762,37088 67762,37090 67767,37090 72767,37090 72771,37085 72771,37089 72774,38089 71774,38090 71771,38086 71771,38086 71774,38086 71777,38089 71782,38089 71782,38087 71780,38092 71782,38087 71785,38083 71783,38081 71781,38078 71781,38078 71783,38076 71786,38075 71787,38078 71783,38079 71781,38081 71781,41081 71783,41081 71778,41082 71778,41085 71783,41085 71783,41088 71785,41083 71789,41083 71794,41088 71796,41088 71796,41092 71798,41095 71794,41095 71789,41098 71790,41093 71790,41091 71795,41092 71796,41087 71798,41084 71796,41086 71797,41084 71799,41084 71795,41086 71798,41085 71799,41089 71803,41085 71804,41083 71802,41083 71803,41079 71803,41081 71808,41081 71809,41083 71810,41083 71809,41085 71810,41082 71814,41087 71817,41089 71818,41086 71813,41083 71813,39083 71816,39083 71814,39085 71814,39083 71814,39086 71818,39087 71820,39087 71824,39091 71826,39096 71829,39098 74829,39102 74830,39107 74833,39110 74836,39115 74835,39115 74836,39115 74838,39115 74835,39119 74838,39117 74840,39121 74840,39125 74843,39121 74848,39122 77848,39122 77844,39123 77848,39126 77851,39131 77855,39136 77857,39132 77857,39135 78857,39135 78859,39136 78864,39133 78865,39135 78866,39139 79866,39142 79870,39147 79872,39146 79872,39150 79876,39150 78876,39154 78879,39154 75879,39154 75881,39158 75881,39157 75884,39160 75884,39155 75884,39160 75889,39156 75891,39158 75888,39163 75891,39163 75894,39166 75891,39166 75895,39167 75900,39170 75901,39170 75906,35170 75907,35171 75911,35176 75906,35172 75908,35173 75908,35178 75908,35175 75909,35170 75908,35170 75903,35168 75904,35173 75906,35178 75903,35179 75904,35179 75908,35182 75905,35184 71905,35188 71902,35185 71904,35186 71907,35187 71908,35189 71903,35191 71905,35195 71900,35197 71904,35198 71909,35200 71907,35199 71903,35201 71900,40201 71896,25028 55790,25029 55785,28029 55789,28031 55790,28032 55790,28037 55794,28042 55793,28043 55798,28046 55803,30046 55803,30051 55806,30050 55810,30049 55810,30049 55812,30049 55816,30054 55820,2545 16129,2540 16133,2542 16137,2542 16139,2544 16138,2545 16139,7545 16136,7546 16139,7541 16142,7542 16142,7543 20142,7547 20143,11547 20143,11550 20139,11555 20139,11556 20137,11552 20142,11555 24142,11556 24145,11559 24140,11563 24143,11567 24139,16567 24136,16567 24139,16572 24142,16573 24147,14573 24143,14574 24147,14570 24145,14573 24150,14569 24150,14570 24145,14573 24149,14575 24150,14575 24154,14579 24149,14579 24153,14576 24157,14576 24152,14571 24149,14571 24152,14575 24150,14572 24151,15572 24153,15575 24149,15577 24154,15582 24151,15582 24153,15586 24156,15587 24152,15588 24157,15590 24162,15590 24166,15590 24166,20590 24166,17590 24169,17595 24171,17597 24172,17599 24172,17595 24174,17599 24178,17599 24181,18599 24184,18594 24187,18597 24187,18593 24189,18597 24192,18601 24192,18599 24197,18599 24197,18603 24200,18605 24204,18600 24205,18605 24201,18605 24197,18610 24202,18608 24205,18611 24204,18613 24208,18617 24203,22617 24205,22619 29205,22622 31205,22622 31209,22623 31214,22624 31212,22627 31214,22623 31214,22626 31215,22629 31214,22633 31218,22631 31221,22630 31223,22632 31227,21937 44551,21935 44555,21939 44551,21934 44553,21936 44554,21933 44556,21935 44552,21935 44553,21939 44548,21939 44551,21939 44551,21938 44555,21938 44558,21938 44559,21941 44559,21945 44558,19945 44562,19942 44560,19943 44561,19939 44565,19940 44561,19939 44556,19935 44557,9770 19466,9773 19471,9775 19471,9770 19471,9770 19468,9770 19467,9772 19466,9772 19468,9774 19469,9775 19472,12775 19470,12773 19466,12773 19467,12773 19464,12773 19466,12776 19461,12779 19461,12779 19465,12780 19465,12782 19460,12781 19458,12776 19461,12776 19461,12777 19463,12778 19466,12776 19466,12780 19463,12780 19466,12785 19468,12789 19473,12788 19477,12793 19475,12798 19480,12802 19482,12803 24482,12802 24484,16802 24486,16806 28486,16808 28486,16812 28490,16812 28494,16815 28498,16816 28498,16818 28502,16818 28504,16819 28509,19819 28513,19819 28510,19821 28515,19816 28510,19811 28510,19811 28511,19809 28511,19810 28510,19813 28515,22813 28510,22818 28514,22818 28515,22815 28516,22818 28514,22819 28514)',')')));
@@ -393,7 +392,6 @@ Table Op Msg_type Msg_text
test.t1 check status OK
drop table t1;
SET GLOBAL innodb_file_per_table=default;
-SET GLOBAL innodb_file_format=default;
create table t1(i int primary key,
a geometry not null, b geometry not null,
c int,
diff --git a/mysql-test/suite/innodb_gis/t/alter_spatial_index.test b/mysql-test/suite/innodb_gis/t/alter_spatial_index.test
index 703a89b4065..653e250017a 100644
--- a/mysql-test/suite/innodb_gis/t/alter_spatial_index.test
+++ b/mysql-test/suite/innodb_gis/t/alter_spatial_index.test
@@ -476,15 +476,24 @@ ALTER TABLE tab ADD INDEX idx6(c4(10)) USING BTREE;
ALTER TABLE tab MODIFY COLUMN c2 GEOMETRY NOT NULL;
-# --error ER_CANT_CREATE_GEOMETRY_OBJECT
-# ALTER TABLE tab MODIFY COLUMN c3 POLYGON NOT NULL;
+ALTER TABLE tab MODIFY COLUMN c3 POLYGON NOT NULL;
-# --error ER_INVALID_USE_OF_NULL
-# ALTER TABLE tab add COLUMN c7 POINT NOT NULL;
+ALTER TABLE tab add COLUMN c7 POINT NOT NULL;
+--disable_info
---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+# instant add, supported
ALTER TABLE tab add COLUMN c8 POINT NOT NULL, ALGORITHM = INPLACE, LOCK=NONE;
---disable_info
+SELECT HEX(c8) FROM tab;
+BEGIN;
+INSERT INTO tab SELECT 0,c2,c3,c4,c5,
+ST_GeomFromText('POINT(67 89)'),ST_GeomFromText('POINT(67 89)')
+FROM tab LIMIT 1;
+SELECT HEX(c8) FROM tab;
+ROLLBACK;
+
+# not instant, not supported
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+ALTER TABLE tab add COLUMN c9 POINT NOT NULL AFTER c5, ALGORITHM = INPLACE, LOCK=NONE;
SHOW CREATE TABLE tab;
diff --git a/mysql-test/suite/innodb_gis/t/rollback.test b/mysql-test/suite/innodb_gis/t/rollback.test
index 52268cfc962..fcfe71e2f80 100644
--- a/mysql-test/suite/innodb_gis/t/rollback.test
+++ b/mysql-test/suite/innodb_gis/t/rollback.test
@@ -413,11 +413,9 @@ DROP TABLE t4;
# Test externally stored update rollback.
LET $file_per_table='on';
-LET $file_format='Barracuda';
--disable_warnings
eval SET GLOBAL innodb_file_per_table=$file_per_table;
-eval SET GLOBAL innodb_file_format=$file_format;
--enable_warnings
create table t1(i int primary key,
@@ -441,7 +439,6 @@ drop table t1;
--disable_warnings
SET GLOBAL innodb_file_per_table=default;
-SET GLOBAL innodb_file_format=default;
--enable_warnings
# Test partial update rollback.
diff --git a/mysql-test/suite/innodb_zip/include/innodb_wl6501_scale.inc b/mysql-test/suite/innodb_zip/include/innodb_wl6501_scale.inc
index bef28a9c484..99bf065c515 100644
--- a/mysql-test/suite/innodb_zip/include/innodb_wl6501_scale.inc
+++ b/mysql-test/suite/innodb_zip/include/innodb_wl6501_scale.inc
@@ -7,7 +7,6 @@
# create test-bed
#
let $per_table = `select @@innodb_file_per_table`;
-let $format = `select @@innodb_file_format`;
let $WL6501_TMP_DIR = `select @@tmpdir`;
let $WL6501_DATA_DIR = `select @@datadir`;
@@ -108,5 +107,4 @@ drop procedure populate_small;
#
# remove test-bed
#
-eval set global innodb_file_format = $format;
eval set global innodb_file_per_table = $per_table;
diff --git a/mysql-test/suite/innodb_zip/r/16k.result b/mysql-test/suite/innodb_zip/r/16k.result
index 7010cac182d..e7def759e87 100644
--- a/mysql-test/suite/innodb_zip/r/16k.result
+++ b/mysql-test/suite/innodb_zip/r/16k.result
@@ -18,6 +18,10 @@ AND t.name LIKE 'mysql%'
table_name n_cols table_flags index_name root_page type n_fields merge_threshold
mysql/innodb_index_stats 11 33 PRIMARY 3 3 4 50
mysql/innodb_table_stats 9 33 PRIMARY 3 3 2 50
+mysql/transaction_registry 8 33 PRIMARY 3 3 1 50
+mysql/transaction_registry 8 33 commit_id 4 2 1 50
+mysql/transaction_registry 8 33 begin_timestamp 5 0 1 50
+mysql/transaction_registry 8 33 commit_timestamp 6 0 2 50
CREATE TABLE t1 (a INT KEY, b TEXT) ROW_FORMAT=REDUNDANT ENGINE=innodb;
CREATE TABLE t2 (a INT KEY, b TEXT) ROW_FORMAT=COMPACT ENGINE=innodb;
CREATE TABLE t3 (a INT KEY, b TEXT) ROW_FORMAT=COMPRESSED ENGINE=innodb;
@@ -282,26 +286,6 @@ Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
Error 1005 Can't create table `test`.`t5` (errno: 140 "Wrong create options")
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
SET GLOBAL innodb_file_per_table = ON;
-SET GLOBAL innodb_file_format = `Antelope`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-CREATE TABLE t4 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=8;
-Got one of the listed errors
-SHOW WARNINGS;
-Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Error 1005 Can't create table `test`.`t4` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-CREATE TABLE t5 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=16;
-Got one of the listed errors
-SHOW WARNINGS;
-Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Error 1005 Can't create table `test`.`t5` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-SET GLOBAL innodb_file_format = `Barracuda`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
# Test 7) This series of tests were moved from innodb-index to here
# because the second alter table t1 assumes a 16k page size.
# Moving the test allows the rest of innodb-index to be run on all
diff --git a/mysql-test/suite/innodb_zip/r/4k.result b/mysql-test/suite/innodb_zip/r/4k.result
index af67087f877..585e54f1b94 100644
--- a/mysql-test/suite/innodb_zip/r/4k.result
+++ b/mysql-test/suite/innodb_zip/r/4k.result
@@ -245,28 +245,6 @@ Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
Error 1005 Can't create table `test`.`t5` (errno: 140 "Wrong create options")
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
SET GLOBAL innodb_file_per_table = ON;
-SET GLOBAL innodb_file_format = `Antelope`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-CREATE TABLE t4 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=8;
-ERROR HY000: Can't create table `test`.`t4` (errno: 140 "Wrong create options")
-SHOW WARNINGS;
-Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE=8 cannot be larger than 4.
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Error 1005 Can't create table `test`.`t4` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-CREATE TABLE t5 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=16;
-ERROR HY000: Can't create table `test`.`t5` (errno: 140 "Wrong create options")
-SHOW WARNINGS;
-Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE=16 cannot be larger than 4.
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Error 1005 Can't create table `test`.`t5` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-SET GLOBAL innodb_file_format = `Barracuda`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
# Test 7) Not included here; 16k only
# Test 8) Test creating a table that could lead to undo log overflow.
CREATE TABLE t1(a blob,b blob,c blob,d blob,e blob,f blob,g blob,
diff --git a/mysql-test/suite/innodb_zip/r/8k.result b/mysql-test/suite/innodb_zip/r/8k.result
index 1b65daeaeac..c6ca2c7a9d3 100644
--- a/mysql-test/suite/innodb_zip/r/8k.result
+++ b/mysql-test/suite/innodb_zip/r/8k.result
@@ -257,27 +257,6 @@ Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
Error 1005 Can't create table `test`.`t5` (errno: 140 "Wrong create options")
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
SET GLOBAL innodb_file_per_table = ON;
-SET GLOBAL innodb_file_format = `Antelope`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-CREATE TABLE t4 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=8;
-ERROR HY000: Can't create table `test`.`t4` (errno: 140 "Wrong create options")
-SHOW WARNINGS;
-Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Error 1005 Can't create table `test`.`t4` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-CREATE TABLE t5 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=16;
-ERROR HY000: Can't create table `test`.`t5` (errno: 140 "Wrong create options")
-SHOW WARNINGS;
-Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE=16 cannot be larger than 8.
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Error 1005 Can't create table `test`.`t5` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-SET GLOBAL innodb_file_format = `Barracuda`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
# Test 7) Not included here; 16k only
# Test 8) Test creating a table that could lead to undo log overflow.
CREATE TABLE t1(a blob,b blob,c blob,d blob,e blob,f blob,g blob,
diff --git a/mysql-test/suite/innodb_zip/r/bug56680.result b/mysql-test/suite/innodb_zip/r/bug56680.result
index 40660f435fb..02ec24c98ae 100644
--- a/mysql-test/suite/innodb_zip/r/bug56680.result
+++ b/mysql-test/suite/innodb_zip/r/bug56680.result
@@ -116,5 +116,8 @@ DF
CHECK TABLE bug56680_2;
Table Op Msg_type Msg_text
test.bug56680_2 check status OK
+CHECK TABLE bug56680_2;
+Table Op Msg_type Msg_text
+test.bug56680_2 check status OK
DROP TABLE bug56680_2;
DROP TABLE bug56680;
diff --git a/mysql-test/suite/innodb_zip/r/cmp_per_index.result b/mysql-test/suite/innodb_zip/r/cmp_per_index.result
index b380071c623..5b001279b58 100644
--- a/mysql-test/suite/innodb_zip/r/cmp_per_index.result
+++ b/mysql-test/suite/innodb_zip/r/cmp_per_index.result
@@ -1,3 +1,5 @@
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+SET GLOBAL innodb_fast_shutdown=0;
SET GLOBAL innodb_cmp_per_index_enabled=ON;
SELECT * FROM information_schema.innodb_cmp_per_index;
CREATE TABLE t (
diff --git a/mysql-test/suite/innodb_zip/r/create_options.result b/mysql-test/suite/innodb_zip/r/create_options.result
index 9165e9ee5ae..b217388b6dc 100644
--- a/mysql-test/suite/innodb_zip/r/create_options.result
+++ b/mysql-test/suite/innodb_zip/r/create_options.result
@@ -1,7 +1,4 @@
SET default_storage_engine=InnoDB;
-SET GLOBAL innodb_file_format=`Barracuda`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
SET GLOBAL innodb_file_per_table=ON;
SET SESSION innodb_strict_mode = ON;
# Test 1) StrictMode=ON, CREATE and ALTER with each ROW_FORMAT & KEY_BLOCK_SIZE=0
@@ -260,81 +257,17 @@ Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 1
Error 1005 Can't create table `test`.`t1` (errno: 140 "Wrong create options")
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
# Test 7) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and
-# and a valid non-zero KEY_BLOCK_SIZE are rejected with Antelope
-# and that they can be set to default values during strict mode.
-SET GLOBAL innodb_file_format=Antelope;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=4;
-Got one of the listed errors
-SHOW WARNINGS;
-Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Error 1005 Can't create table `test`.`t1` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED;
-Got one of the listed errors
-SHOW WARNINGS;
-Level Code Message
-Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
-Error 1005 Can't create table `test`.`t1` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
-ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
-CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT;
-SHOW WARNINGS;
-Level Code Message
-SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
-TABLE_NAME ROW_FORMAT CREATE_OPTIONS
-t1 Redundant row_format=REDUNDANT
-DROP TABLE t1;
-CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
-SHOW WARNINGS;
-Level Code Message
-SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
-TABLE_NAME ROW_FORMAT CREATE_OPTIONS
-t1 Compact row_format=COMPACT
-DROP TABLE t1;
-CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT;
-SHOW WARNINGS;
-Level Code Message
-ALTER TABLE t1 KEY_BLOCK_SIZE=2;
-ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'KEY_BLOCK_SIZE'
-SHOW WARNINGS;
-Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Error 1478 Table storage engine 'InnoDB' does not support the create option 'KEY_BLOCK_SIZE'
-ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
-ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ROW_FORMAT'
-SHOW WARNINGS;
-Level Code Message
-Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
-Error 1478 Table storage engine 'InnoDB' does not support the create option 'ROW_FORMAT'
-ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
-ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ROW_FORMAT'
-SHOW WARNINGS;
-Level Code Message
-Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
-Error 1478 Table storage engine 'InnoDB' does not support the create option 'ROW_FORMAT'
-SET GLOBAL innodb_file_format=Barracuda;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-DROP TABLE t1;
+# and a valid non-zero KEY_BLOCK_SIZE
+# can be set to default values during strict mode.
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
-SET GLOBAL innodb_file_format=Antelope;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
ALTER TABLE t1 ADD COLUMN f1 INT;
-ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ROW_FORMAT'
SHOW WARNINGS;
Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
-Error 1478 Table storage engine 'InnoDB' does not support the create option 'ROW_FORMAT'
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `i` int(11) DEFAULT NULL
+ `i` int(11) DEFAULT NULL,
+ `f1` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
SHOW WARNINGS;
@@ -342,9 +275,6 @@ Level Code Message
ALTER TABLE t1 ADD COLUMN f2 INT;
SHOW WARNINGS;
Level Code Message
-SET GLOBAL innodb_file_format=Barracuda;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
# Test 8) StrictMode=ON, Make sure ROW_FORMAT=COMPRESSED
# and a valid non-zero KEY_BLOCK_SIZE are rejected with
# innodb_file_per_table=OFF and that they can be set to default
@@ -742,9 +672,7 @@ Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=15.
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
t1 Dynamic key_block_size=15
-# Test 15) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a
-valid KEY_BLOCK_SIZE are remembered but not used when ROW_FORMAT
-is reverted to Antelope and then used again when ROW_FORMAT=Barracuda.
+# Test 15) StrictMode=OFF.
DROP TABLE t1;
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
SHOW WARNINGS;
@@ -752,27 +680,12 @@ Level Code Message
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
t1 Compressed row_format=COMPRESSED key_block_size=1
-SET GLOBAL innodb_file_format=Antelope;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
ALTER TABLE t1 ADD COLUMN f1 INT;
-Warnings:
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1.
-Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
-Warning 1478 InnoDB: assuming ROW_FORMAT=DYNAMIC.
SHOW WARNINGS;
Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1.
-Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
-Warning 1478 InnoDB: assuming ROW_FORMAT=DYNAMIC.
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
-t1 Dynamic row_format=COMPRESSED key_block_size=1
-SET GLOBAL innodb_file_format=Barracuda;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
+t1 Compressed row_format=COMPRESSED key_block_size=1
ALTER TABLE t1 ADD COLUMN f2 INT;
SHOW WARNINGS;
Level Code Message
@@ -786,18 +699,12 @@ Level Code Message
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
t1 Dynamic row_format=DYNAMIC
-SET GLOBAL innodb_file_format=Antelope;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
ALTER TABLE t1 ADD COLUMN f1 INT;
SHOW WARNINGS;
Level Code Message
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
t1 Dynamic row_format=DYNAMIC
-SET GLOBAL innodb_file_format=Barracuda;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
ALTER TABLE t1 ADD COLUMN f2 INT;
SHOW WARNINGS;
Level Code Message
@@ -851,5 +758,3 @@ TABLE_NAME ROW_FORMAT CREATE_OPTIONS
t1 Dynamic row_format=DYNAMIC
# Cleanup
DROP TABLE t1;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
diff --git a/mysql-test/suite/innodb_zip/r/index_large_prefix.result b/mysql-test/suite/innodb_zip/r/index_large_prefix.result
index fe03586546a..58d35cf2603 100644
--- a/mysql-test/suite/innodb_zip/r/index_large_prefix.result
+++ b/mysql-test/suite/innodb_zip/r/index_large_prefix.result
@@ -94,18 +94,6 @@ create table worklog5743_2(a1 int, a2 TEXT not null) KEY_BLOCK_SIZE=2;
create table worklog5743_4(a1 int, a2 TEXT not null) KEY_BLOCK_SIZE=4;
create table worklog5743_8(a1 int, a2 TEXT, a3 TEXT) KEY_BLOCK_SIZE=8;
create table worklog5743_16(a1 int, a2 TEXT, a3 TEXT) KEY_BLOCK_SIZE=16;
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-create index idx1 on worklog5743_1(a2(4000));
-Got one of the listed errors
-show warnings;
-Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
-Error 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create index idx2 on worklog5743_1(a2(4000));
Got one of the listed errors
show warnings;
@@ -128,19 +116,6 @@ Error 1118 Row size too large. The maximum row size for the used table type, not
create index idx6 on worklog5743_1(a1, a2(428));
show warnings;
Level Code Message
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-SET sql_mode= '';
-create index idx1 on worklog5743_2(a2(4000));
-Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
-show warnings;
-Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create index idx2 on worklog5743_2(a2(4000));
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
show warnings;
@@ -163,18 +138,6 @@ Error 1118 Row size too large. The maximum row size for the used table type, not
create index idx6 on worklog5743_2(a1, a2(940));
show warnings;
Level Code Message
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-create index idx1 on worklog5743_4(a2(4000));
-Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
-show warnings;
-Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create index idx2 on worklog5743_4(a2(4000));
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
show warnings;
@@ -197,18 +160,6 @@ Error 1118 Row size too large. The maximum row size for the used table type, not
create index idx6 on worklog5743_4(a1, a2(1964));
show warnings;
Level Code Message
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-create index idx1 on worklog5743_8(a2(1000));
-Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
-show warnings;
-Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create index idx2 on worklog5743_8(a2(3073));
Warnings:
Note 1071 Specified key was too long; max key length is 3072 bytes
@@ -237,18 +188,6 @@ Error 1071 Specified key was too long; max key length is 3072 bytes
create index idx7 on worklog5743_8(a1, a2(2000), a3(1068));
show warnings;
Level Code Message
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-create index idx1 on worklog5743_16(a2(1000));
-Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
-show warnings;
-Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create index idx2 on worklog5743_16(a2(3073));
Warnings:
Note 1071 Specified key was too long; max key length is 3072 bytes
@@ -283,37 +222,21 @@ insert into worklog5743_2 values(9, repeat("a", 10000));
insert into worklog5743_4 values(9, repeat("a", 10000));
insert into worklog5743_8 values(9, repeat("a", 10000), repeat("a", 10000));
insert into worklog5743_16 values(9, repeat("a", 10000), repeat("a", 10000));
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-insert into worklog5743_1 values(2, repeat("b", 10000));
-insert into worklog5743_2 values(2, repeat("b", 10000));
-insert into worklog5743_4 values(2, repeat("b", 10000));
-insert into worklog5743_8 values(2, repeat("b", 10000), repeat("b", 10000));
-insert into worklog5743_16 values(2, repeat("b", 10000), repeat("b", 10000));
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
select a1, left(a2, 20) from worklog5743_1;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_2;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_4;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_8;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_16;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
begin;
update worklog5743_1 set a1 = 1000;
update worklog5743_2 set a1 = 1000;
@@ -323,23 +246,18 @@ update worklog5743_16 set a1 = 1000;
select a1, left(a2, 20) from worklog5743_1;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_2;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_4;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_8;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_16;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
connection con1;
select @@session.tx_isolation;
@@session.tx_isolation
diff --git a/mysql-test/suite/innodb_zip/r/index_large_prefix_4k.result b/mysql-test/suite/innodb_zip/r/index_large_prefix_4k.result
index c2929bf7937..f1d72fbe281 100644
--- a/mysql-test/suite/innodb_zip/r/index_large_prefix_4k.result
+++ b/mysql-test/suite/innodb_zip/r/index_large_prefix_4k.result
@@ -97,14 +97,11 @@ drop table worklog5743;
create table worklog5743_1(a1 int, a2 TEXT not null) KEY_BLOCK_SIZE=1;
create table worklog5743_2(a1 int, a2 TEXT not null) KEY_BLOCK_SIZE=2;
create table worklog5743_4(a1 int, a2 TEXT not null) KEY_BLOCK_SIZE=4;
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create index idx1 on worklog5743_1(a2(4000));
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 1982. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
show warnings;
Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
+Note 1071 Specified key was too long; max key length is 768 bytes
Error 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 1982. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
create index idx3 on worklog5743_1(a2(436));
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 1982. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
@@ -122,9 +119,6 @@ Error 1118 Row size too large. The maximum row size for the used table type, not
create index idx6 on worklog5743_1(a1, a2(428));
show warnings;
Level Code Message
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
SET sql_mode= '';
create index idx1 on worklog5743_2(a2(4000));
Warnings:
@@ -159,34 +153,31 @@ Error 1071 Specified key was too long; max key length is 768 bytes
create index idx6 on worklog5743_2(a1, a2(764));
show warnings;
Level Code Message
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create index idx1 on worklog5743_4(a2(4000));
Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
+Note 1071 Specified key was too long; max key length is 768 bytes
show warnings;
Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
+Note 1071 Specified key was too long; max key length is 768 bytes
show create table worklog5743_4;
Table Create Table
worklog5743_4 CREATE TABLE `worklog5743_4` (
`a1` int(11) DEFAULT NULL,
`a2` text NOT NULL,
- KEY `idx1` (`a2`(767))
+ KEY `idx1` (`a2`(768))
) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=4
create index idx3 on worklog5743_4(a2(769));
Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
+Note 1071 Specified key was too long; max key length is 768 bytes
show warnings;
Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
+Note 1071 Specified key was too long; max key length is 768 bytes
create index idx4 on worklog5743_4(a2(768));
Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
+Note 1831 Duplicate index `idx4`. This is deprecated and will be disallowed in a future release
show warnings;
Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
+Note 1831 Duplicate index `idx4`. This is deprecated and will be disallowed in a future release
create index idx5 on worklog5743_4(a1, a2(765));
ERROR 42000: Specified key was too long; max key length is 768 bytes
show warnings;
@@ -199,27 +190,15 @@ SET sql_mode= default;
insert into worklog5743_1 values(9, repeat("a", 10000));
insert into worklog5743_2 values(9, repeat("a", 10000));
insert into worklog5743_4 values(9, repeat("a", 10000));
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-insert into worklog5743_1 values(2, repeat("b", 10000));
-insert into worklog5743_2 values(2, repeat("b", 10000));
-insert into worklog5743_4 values(2, repeat("b", 10000));
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
select a1, left(a2, 20) from worklog5743_1;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_2;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_4;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
begin;
update worklog5743_1 set a1 = 1000;
update worklog5743_2 set a1 = 1000;
@@ -227,15 +206,12 @@ update worklog5743_4 set a1 = 1000;
select a1, left(a2, 20) from worklog5743_1;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_2;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_4;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
connection con1;
select @@session.tx_isolation;
@@session.tx_isolation
diff --git a/mysql-test/suite/innodb_zip/r/index_large_prefix_8k.result b/mysql-test/suite/innodb_zip/r/index_large_prefix_8k.result
index 60dafa2ac46..f064a823b59 100644
--- a/mysql-test/suite/innodb_zip/r/index_large_prefix_8k.result
+++ b/mysql-test/suite/innodb_zip/r/index_large_prefix_8k.result
@@ -98,18 +98,6 @@ create table worklog5743_1(a1 int, a2 TEXT not null) KEY_BLOCK_SIZE=1;
create table worklog5743_2(a1 int, a2 TEXT not null) KEY_BLOCK_SIZE=2;
create table worklog5743_4(a1 int, a2 TEXT not null) KEY_BLOCK_SIZE=4;
create table worklog5743_8(a1 int, a2 TEXT, a3 TEXT) KEY_BLOCK_SIZE=8;
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-create index idx1 on worklog5743_1(a2(4000));
-ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 4030. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
-show warnings;
-Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
-Error 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 4030. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create index idx2 on worklog5743_1(a2(4000));
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 4030. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
show warnings;
@@ -132,19 +120,6 @@ Error 1118 Row size too large. The maximum row size for the used table type, not
create index idx6 on worklog5743_1(a1, a2(428));
show warnings;
Level Code Message
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-SET sql_mode= '';
-create index idx1 on worklog5743_2(a2(4000));
-Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
-show warnings;
-Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create index idx2 on worklog5743_2(a2(4000));
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 4030. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
show warnings;
@@ -167,18 +142,6 @@ Error 1118 Row size too large. The maximum row size for the used table type, not
create index idx6 on worklog5743_2(a1, a2(940));
show warnings;
Level Code Message
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-create index idx1 on worklog5743_4(a2(4000));
-Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
-show warnings;
-Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create index idx3 on worklog5743_4(a2(1537));
Warnings:
Note 1071 Specified key was too long; max key length is 1536 bytes
@@ -199,18 +162,6 @@ Error 1071 Specified key was too long; max key length is 1536 bytes
create index idx6 on worklog5743_4(a1, a2(1532));
show warnings;
Level Code Message
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-create index idx1 on worklog5743_8(a2(1000));
-Warnings:
-Note 1071 Specified key was too long; max key length is 767 bytes
-show warnings;
-Level Code Message
-Note 1071 Specified key was too long; max key length is 767 bytes
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
create index idx2 on worklog5743_8(a2(3073));
Warnings:
Note 1071 Specified key was too long; max key length is 1536 bytes
@@ -236,32 +187,18 @@ insert into worklog5743_1 values(9, repeat("a", 10000));
insert into worklog5743_2 values(9, repeat("a", 10000));
insert into worklog5743_4 values(9, repeat("a", 10000));
insert into worklog5743_8 values(9, repeat("a", 10000), repeat("a", 10000));
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-insert into worklog5743_1 values(2, repeat("b", 10000));
-insert into worklog5743_2 values(2, repeat("b", 10000));
-insert into worklog5743_4 values(2, repeat("b", 10000));
-insert into worklog5743_8 values(2, repeat("b", 10000), repeat("b", 10000));
-set global innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
select a1, left(a2, 20) from worklog5743_1;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_2;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_4;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_8;
a1 left(a2, 20)
9 aaaaaaaaaaaaaaaaaaaa
-2 bbbbbbbbbbbbbbbbbbbb
begin;
update worklog5743_1 set a1 = 1000;
update worklog5743_2 set a1 = 1000;
@@ -270,19 +207,15 @@ update worklog5743_8 set a1 = 1000;
select a1, left(a2, 20) from worklog5743_1;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_2;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_4;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
select a1, left(a2, 20) from worklog5743_8;
a1 left(a2, 20)
1000 aaaaaaaaaaaaaaaaaaaa
-1000 bbbbbbbbbbbbbbbbbbbb
connection con1;
select @@session.tx_isolation;
@@session.tx_isolation
diff --git a/mysql-test/suite/innodb_zip/r/innodb-zip.result b/mysql-test/suite/innodb_zip/r/innodb-zip.result
index 419671a6735..0da1d6bbe85 100644
--- a/mysql-test/suite/innodb_zip/r/innodb-zip.result
+++ b/mysql-test/suite/innodb_zip/r/innodb-zip.result
@@ -7,9 +7,6 @@ table_name row_format data_length index_length
SET @save_innodb_stats_on_metadata=@@global.innodb_stats_on_metadata;
set session innodb_strict_mode=0;
set global innodb_file_per_table=off;
-set global innodb_file_format=`0`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
SET @@global.innodb_stats_on_metadata=ON;
create table t0(a int primary key) engine=innodb row_format=compressed;
Warnings:
@@ -19,7 +16,6 @@ create table t00(a int primary key) engine=innodb
key_block_size=4 row_format=compressed;
Warnings:
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=4.
Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table.
Warning 1478 InnoDB: assuming ROW_FORMAT=DYNAMIC.
@@ -29,23 +25,17 @@ create table t3(a int primary key) engine=innodb row_format=compact;
create table t4(a int primary key) engine=innodb key_block_size=9;
Warnings:
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=9.
create table t5(a int primary key) engine=innodb
key_block_size=1 row_format=redundant;
Warnings:
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1.
set global innodb_file_per_table=on;
create table t6(a int primary key) engine=innodb
key_block_size=1 row_format=redundant;
Warnings:
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1.
-set global innodb_file_format=`1`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
+Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=1 unless ROW_FORMAT=COMPRESSED.
create table t7(a int primary key) engine=innodb
key_block_size=1 row_format=redundant;
Warnings:
@@ -72,7 +62,7 @@ row_format=compressed;
create table t14(a int primary key) engine=innodb key_block_size=9;
Warnings:
Warning 1478 InnoDB: ignoring KEY_BLOCK_SIZE=9.
-SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql';
+SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql' order by table_name;
table_schema table_name row_format data_length index_length
mysqltest_innodb_zip t0 Dynamic {valid} 0
mysqltest_innodb_zip t00 Dynamic {valid} 0
@@ -93,15 +83,15 @@ mysqltest_innodb_zip t9 Compact {valid} 0
drop table t0,t00,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14;
alter table t1 key_block_size=0;
alter table t1 row_format=dynamic;
-SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql';
+SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql' order by table_name;
table_schema table_name row_format data_length index_length
mysqltest_innodb_zip t1 Dynamic {valid} 0
alter table t1 row_format=compact;
-SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql';
+SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql' order by table_name;
table_schema table_name row_format data_length index_length
mysqltest_innodb_zip t1 Compact {valid} 0
alter table t1 row_format=redundant;
-SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql';
+SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql' order by table_name;
table_schema table_name row_format data_length index_length
mysqltest_innodb_zip t1 Redundant {valid} 0
drop table t1;
@@ -135,7 +125,7 @@ mysqltest_innodb_zip.t1 analyze status OK
analyze table t2;
Table Op Msg_type Msg_text
mysqltest_innodb_zip.t2 analyze status OK
-SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql';
+SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql' order by table_name;
table_schema table_name row_format data_length index_length
mysqltest_innodb_zip t1 Compressed 2048 1024
mysqltest_innodb_zip t2 Dynamic {valid} 0
@@ -159,40 +149,7 @@ count(*)
1
update t1 set c3 = repeat('E', 20000) where c1 = 1;
drop table t1;
-set global innodb_file_format=`0`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@innodb_file_format;
-@@innodb_file_format
-Antelope
-set global innodb_file_format=`1`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@innodb_file_format;
-@@innodb_file_format
-Barracuda
-set global innodb_file_format=`2`;
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of '2'
-set global innodb_file_format=`-1`;
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of '-1'
-set global innodb_file_format=`Antelope`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-set global innodb_file_format=`Barracuda`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-set global innodb_file_format=`Cheetah`;
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'Cheetah'
-set global innodb_file_format=`abc`;
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'abc'
-set global innodb_file_format=`1a`;
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of '1a'
-set global innodb_file_format=``;
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of ''
set global innodb_file_per_table = on;
-set global innodb_file_format = `1`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
set innodb_strict_mode = off;
create table t1 (id int primary key) engine = innodb key_block_size = 0;
drop table t1;
@@ -212,7 +169,7 @@ create table t8 (id int primary key) engine = innodb row_format = compressed;
create table t9 (id int primary key) engine = innodb row_format = dynamic;
create table t10(id int primary key) engine = innodb row_format = compact;
create table t11(id int primary key) engine = innodb row_format = redundant;
-SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql';
+SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql' order by table_name;
table_schema table_name row_format data_length index_length
mysqltest_innodb_zip t1 Dynamic {valid} 0
mysqltest_innodb_zip t10 Compact {valid} 0
@@ -251,7 +208,7 @@ Error 1005 Can't create table `mysqltest_innodb_zip`.`t4` (errno: 140 "Wrong cre
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
create table t5 (id int primary key) engine = innodb
key_block_size = 4 row_format = default;
-SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql';
+SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql' order by table_name;
table_schema table_name row_format data_length index_length
mysqltest_innodb_zip t1 Compressed 4096 0
mysqltest_innodb_zip t5 Compressed 4096 0
@@ -283,7 +240,7 @@ Warning 1478 InnoDB: invalid KEY_BLOCK_SIZE = 9. Valid values are [1, 2, 4, 8, 1
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
Error 1005 Can't create table `mysqltest_innodb_zip`.`t2` (errno: 140 "Wrong create options")
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql';
+SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql' order by table_name;
table_schema table_name row_format data_length index_length
set global innodb_file_per_table = off;
create table t1 (id int primary key) engine = innodb key_block_size = 1;
@@ -319,90 +276,10 @@ show warnings;
Level Code Message
create table t8 (id int primary key) engine = innodb row_format = compact;
create table t9 (id int primary key) engine = innodb row_format = redundant;
-SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql';
+SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql' order by table_name;
table_schema table_name row_format data_length index_length
mysqltest_innodb_zip t7 Dynamic {valid} 0
mysqltest_innodb_zip t8 Compact {valid} 0
mysqltest_innodb_zip t9 Redundant {valid} 0
drop table t7, t8, t9;
-set global innodb_file_per_table = on;
-set global innodb_file_format = `0`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-create table t1 (id int primary key) engine = innodb key_block_size = 1;
-ERROR HY000: Can't create table `mysqltest_innodb_zip`.`t1` (errno: 140 "Wrong create options")
-show warnings;
-Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Error 1005 Can't create table `mysqltest_innodb_zip`.`t1` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-create table t2 (id int primary key) engine = innodb key_block_size = 2;
-ERROR HY000: Can't create table `mysqltest_innodb_zip`.`t2` (errno: 140 "Wrong create options")
-show warnings;
-Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Error 1005 Can't create table `mysqltest_innodb_zip`.`t2` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-create table t3 (id int primary key) engine = innodb key_block_size = 4;
-ERROR HY000: Can't create table `mysqltest_innodb_zip`.`t3` (errno: 140 "Wrong create options")
-show warnings;
-Level Code Message
-Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
-Error 1005 Can't create table `mysqltest_innodb_zip`.`t3` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-create table t6 (id int primary key) engine = innodb row_format = compressed;
-ERROR HY000: Can't create table `mysqltest_innodb_zip`.`t6` (errno: 140 "Wrong create options")
-show warnings;
-Level Code Message
-Warning 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
-Error 1005 Can't create table `mysqltest_innodb_zip`.`t6` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-create table t7 (id int primary key) engine = innodb row_format = dynamic;
-ERROR HY000: Can't create table `mysqltest_innodb_zip`.`t7` (errno: 140 "Wrong create options")
-show warnings;
-Level Code Message
-Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
-Error 1005 Can't create table `mysqltest_innodb_zip`.`t7` (errno: 140 "Wrong create options")
-Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
-create table t8 (id int primary key) engine = innodb row_format = compact;
-create table t9 (id int primary key) engine = innodb row_format = redundant;
-SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql';
-table_schema table_name row_format data_length index_length
-mysqltest_innodb_zip t8 Compact {valid} 0
-mysqltest_innodb_zip t9 Redundant {valid} 0
-drop table t8, t9;
-set global innodb_file_per_table=1;
-set global innodb_file_format=Barracuda;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-set global innodb_file_per_table=on;
-set global innodb_file_format=`Barracuda`;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-set global innodb_file_format_max=`Antelope`;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-create table normal_table (
-c1 int
-) engine = innodb;
-select @@innodb_file_format_max;
-@@innodb_file_format_max
-Barracuda
-create table zip_table (
-c1 int
-) engine = innodb key_block_size = 4;
-select @@innodb_file_format_max;
-@@innodb_file_format_max
-Barracuda
-set global innodb_file_format_max=`Antelope`;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@innodb_file_format_max;
-@@innodb_file_format_max
-Antelope
-show table status;
-select @@innodb_file_format_max;
-@@innodb_file_format_max
-Barracuda
-drop table normal_table, zip_table;
DROP DATABASE mysqltest_innodb_zip;
diff --git a/mysql-test/suite/innodb_zip/r/prefix_index_liftedlimit.result b/mysql-test/suite/innodb_zip/r/prefix_index_liftedlimit.result
index a7a9917b6f4..7a73dae473e 100644
--- a/mysql-test/suite/innodb_zip/r/prefix_index_liftedlimit.result
+++ b/mysql-test/suite/innodb_zip/r/prefix_index_liftedlimit.result
@@ -1,4 +1,3 @@
-SET @large_prefix_orig = @@GLOBAL.innodb_large_prefix;
CREATE TABLE worklog5743 (
col_1_varchar VARCHAR (4000) , col_2_varchar VARCHAR (4000) ,
PRIMARY KEY (col_1_varchar(3072))
@@ -1389,33 +1388,30 @@ ALTER TABLE worklog5743 ADD PRIMARY KEY `pk_idx` (col_1_varchar(3000));
ERROR 23000: Duplicate entry 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' for key 'PRIMARY'
DROP TABLE worklog5743;
set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
+ERROR HY000: Unknown system variable 'innodb_large_prefix'
CREATE TABLE worklog5743 (
col_1_varchar VARCHAR (4000) , col_2_varchar VARCHAR (4000) ,
PRIMARY KEY (col_1_varchar(3072))
) ROW_FORMAT=DYNAMIC, engine = innodb;
-ERROR 42000: Specified key was too long; max key length is 767 bytes
+DROP TABLE worklog5743;
CREATE TABLE worklog5743 (
col_1_varchar VARCHAR (4000) , col_2_varchar VARCHAR (4000) ,
PRIMARY KEY (col_1_varchar(767))
) engine = innodb;
INSERT INTO worklog5743 VALUES(REPEAT('a',4000),REPEAT('b',4000));
-CREATE INDEX prefix_idx ON worklog5743(col_1_varchar (767));
-affected rows: 0
-info: Records: 0 Duplicates: 0 Warnings: 0
-ALTER TABLE worklog5743 ROW_FORMAT=REDUNDANT;
+CREATE INDEX prefix_idx ON worklog5743(col_1_varchar (1000));
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
+ALTER TABLE worklog5743 ROW_FORMAT=REDUNDANT, ALGORITHM=INPLACE;
+ERROR HY000: Index column size too large. The maximum column size is 767 bytes
+ALTER TABLE worklog5743 ROW_FORMAT=REDUNDANT, ALGORITHM=COPY;
+ERROR HY000: Index column size too large. The maximum column size is 767 bytes
SHOW CREATE TABLE worklog5743;
Table Create Table
worklog5743 CREATE TABLE `worklog5743` (
`col_1_varchar` varchar(4000) NOT NULL,
`col_2_varchar` varchar(4000) DEFAULT NULL,
PRIMARY KEY (`col_1_varchar`(767)),
- KEY `prefix_idx` (`col_1_varchar`(767))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
+ KEY `prefix_idx` (`col_1_varchar`(1000))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE worklog5743;
-SET GLOBAL innodb_large_prefix = @large_prefix_orig;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
diff --git a/mysql-test/suite/innodb_zip/r/wl6501_scale_1.result b/mysql-test/suite/innodb_zip/r/wl6501_scale_1.result
index 3a74b6ebc11..464a97ba2fe 100644
--- a/mysql-test/suite/innodb_zip/r/wl6501_scale_1.result
+++ b/mysql-test/suite/innodb_zip/r/wl6501_scale_1.result
@@ -109,9 +109,6 @@ drop table t2;
drop table t3;
drop procedure populate;
drop procedure populate_small;
-set global innodb_file_format = Barracuda;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
set global innodb_file_per_table = 1;
set innodb_strict_mode=OFF;
create procedure populate()
@@ -222,9 +219,6 @@ drop table t2;
drop table t3;
drop procedure populate;
drop procedure populate_small;
-set global innodb_file_format = Barracuda;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
set global innodb_file_per_table = 1;
set innodb_strict_mode=OFF;
create procedure populate()
@@ -339,7 +333,4 @@ drop table t2;
drop table t3;
drop procedure populate;
drop procedure populate_small;
-set global innodb_file_format = Barracuda;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
set global innodb_file_per_table = 1;
diff --git a/mysql-test/suite/innodb_zip/t/16k.test b/mysql-test/suite/innodb_zip/t/16k.test
index 3c6eda4c272..6a829e6bbb6 100644
--- a/mysql-test/suite/innodb_zip/t/16k.test
+++ b/mysql-test/suite/innodb_zip/t/16k.test
@@ -298,15 +298,6 @@ SHOW WARNINGS;
CREATE TABLE t5 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=16;
SHOW WARNINGS;
SET GLOBAL innodb_file_per_table = ON;
-SET GLOBAL innodb_file_format = `Antelope`;
---error ER_ILLEGAL_HA,1005
-CREATE TABLE t4 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=8;
-SHOW WARNINGS;
---error ER_ILLEGAL_HA,1005
-CREATE TABLE t5 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=16;
-SHOW WARNINGS;
-SET GLOBAL innodb_file_format = `Barracuda`;
-
--echo # Test 7) This series of tests were moved from innodb-index to here
--echo # because the second alter table t1 assumes a 16k page size.
diff --git a/mysql-test/suite/innodb_zip/t/4k.test b/mysql-test/suite/innodb_zip/t/4k.test
index 73f21739342..3b8c1771a96 100644
--- a/mysql-test/suite/innodb_zip/t/4k.test
+++ b/mysql-test/suite/innodb_zip/t/4k.test
@@ -247,15 +247,6 @@ SHOW WARNINGS;
CREATE TABLE t5 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=16;
SHOW WARNINGS;
SET GLOBAL innodb_file_per_table = ON;
-SET GLOBAL innodb_file_format = `Antelope`;
---error ER_CANT_CREATE_TABLE
-CREATE TABLE t4 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=8;
-SHOW WARNINGS;
---error ER_CANT_CREATE_TABLE
-CREATE TABLE t5 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=16;
-SHOW WARNINGS;
-SET GLOBAL innodb_file_format = `Barracuda`;
-
--echo # Test 7) Not included here; 16k only
diff --git a/mysql-test/suite/innodb_zip/t/8k.test b/mysql-test/suite/innodb_zip/t/8k.test
index 8d54d0daaf4..e10d48cb284 100644
--- a/mysql-test/suite/innodb_zip/t/8k.test
+++ b/mysql-test/suite/innodb_zip/t/8k.test
@@ -264,15 +264,6 @@ SHOW WARNINGS;
CREATE TABLE t5 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=16;
SHOW WARNINGS;
SET GLOBAL innodb_file_per_table = ON;
-SET GLOBAL innodb_file_format = `Antelope`;
---error ER_CANT_CREATE_TABLE
-CREATE TABLE t4 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=8;
-SHOW WARNINGS;
---error ER_CANT_CREATE_TABLE
-CREATE TABLE t5 (id int PRIMARY KEY) ENGINE=innodb KEY_BLOCK_SIZE=16;
-SHOW WARNINGS;
-SET GLOBAL innodb_file_format = `Barracuda`;
-
--echo # Test 7) Not included here; 16k only
diff --git a/mysql-test/suite/innodb_zip/t/bug56680.test b/mysql-test/suite/innodb_zip/t/bug56680.test
index da37f6a28b4..54cbc7ca798 100644
--- a/mysql-test/suite/innodb_zip/t/bug56680.test
+++ b/mysql-test/suite/innodb_zip/t/bug56680.test
@@ -1,20 +1,18 @@
#Want to skip this test from daily Valgrind execution
--source include/no_valgrind_without_big.inc
+# Embedded server tests do not support restarting.
+--source include/not_embedded.inc
#
# Bug #56680 InnoDB may return wrong results from a case-insensitive index
#
-- source include/innodb_page_size_small.inc
-- disable_query_log
-SET @tx_isolation_orig = @@tx_isolation;
-SET @innodb_file_per_table_orig = @@innodb_file_per_table;
# The flag innodb_change_buffering_debug is only available in debug builds.
# It instructs InnoDB to try to evict pages from the buffer pool when
# change buffering is possible, so that the change buffer will be used
# whenever possible.
-- error 0,ER_UNKNOWN_SYSTEM_VARIABLE
-SET @innodb_change_buffering_debug_orig = @@innodb_change_buffering_debug;
--- error 0,ER_UNKNOWN_SYSTEM_VARIABLE
SET GLOBAL innodb_change_buffering_debug = 1;
-- enable_query_log
SET GLOBAL tx_isolation='REPEATABLE-READ';
@@ -129,11 +127,9 @@ INSERT INTO bug56680_2 VALUES(1,_latin1 0xdf,1);
SELECT HEX(b) FROM bug56680_2 LIMIT 3;
CHECK TABLE bug56680_2;
+--let $shutdown_timeout=0
+--source include/restart_mysqld.inc
+
+CHECK TABLE bug56680_2;
DROP TABLE bug56680_2;
DROP TABLE bug56680;
-
--- disable_query_log
-SET GLOBAL tx_isolation = @tx_isolation_orig;
-SET GLOBAL innodb_file_per_table = @innodb_file_per_table_orig;
--- error 0, ER_UNKNOWN_SYSTEM_VARIABLE
-SET GLOBAL innodb_change_buffering_debug = @innodb_change_buffering_debug_orig;
diff --git a/mysql-test/suite/innodb_zip/t/cmp_per_index.test b/mysql-test/suite/innodb_zip/t/cmp_per_index.test
index 58b7855219b..b26d5a4f243 100644
--- a/mysql-test/suite/innodb_zip/t/cmp_per_index.test
+++ b/mysql-test/suite/innodb_zip/t/cmp_per_index.test
@@ -19,6 +19,10 @@ if (`SELECT @@innodb_log_compressed_pages = 0`)
# include/restart_mysqld.inc does not work in embedded mode
-- source include/not_embedded.inc
+# ensure that all history gets purged on shutdown
+SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
+SET GLOBAL innodb_fast_shutdown=0;
+
-- vertical_results
SET GLOBAL innodb_cmp_per_index_enabled=ON;
diff --git a/mysql-test/suite/innodb_zip/t/create_options.test b/mysql-test/suite/innodb_zip/t/create_options.test
index 58fd764932c..fce64060df3 100644
--- a/mysql-test/suite/innodb_zip/t/create_options.test
+++ b/mysql-test/suite/innodb_zip/t/create_options.test
@@ -36,8 +36,7 @@
# 4) KEY_BLOCK_SIZE=1,2,4,8 & 16 are incompatible with COMPACT, DYNAMIC &
# REDUNDANT.
# 5) KEY_BLOCK_SIZE=1,2,4,8 & 16 as well as ROW_FORMAT=COMPRESSED
-# are incompatible with innodb_file_format=Antelope
-# and innodb_file_per_table=OFF
+# are incompatible with innodb_file_per_table=OFF
# 6) KEY_BLOCK_SIZE on an ALTER must occur with ROW_FORMAT=COMPRESSED
# or ROW_FORMAT=DEFAULT if the ROW_FORMAT was previously specified
# as COMPACT, DYNAMIC or REDUNDANT.
@@ -49,7 +48,7 @@
# 2. Ignore a bad ROW_FORMAT, defaulting to COMPACT.
# 3. Ignore a valid KEY_BLOCK_SIZE when an incompatible but valid
# ROW_FORMAT is specified.
-# 4. If innodb_file_format=Antelope or innodb_file_per_table=OFF
+# 4. If innodb_file_per_table=OFF
# it will ignore ROW_FORMAT=COMPRESSED and non-zero KEY_BLOCK_SIZEs.
#
# See InnoDB documentation page "SQL Compression Syntax Warnings and Errors"
@@ -60,13 +59,9 @@
--source include/innodb_page_size_small.inc
SET default_storage_engine=InnoDB;
---disable_query_log
# These values can change during the test
-LET $innodb_file_format_orig=`select @@innodb_file_format`;
LET $innodb_file_per_table_orig=`select @@innodb_file_per_table`;
---enable_query_log
-SET GLOBAL innodb_file_format=`Barracuda`;
SET GLOBAL innodb_file_per_table=ON;
# The first half of these tests are with strict mode ON.
@@ -215,41 +210,9 @@ CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=9;
SHOW WARNINGS;
--echo # Test 7) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and
---echo # and a valid non-zero KEY_BLOCK_SIZE are rejected with Antelope
---echo # and that they can be set to default values during strict mode.
-SET GLOBAL innodb_file_format=Antelope;
---error ER_ILLEGAL_HA,1005
-CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=4;
-SHOW WARNINGS;
---error ER_ILLEGAL_HA,1005
-CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED;
-SHOW WARNINGS;
---error 1005
-CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
-CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT;
-SHOW WARNINGS;
-SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
-DROP TABLE t1;
-CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
-SHOW WARNINGS;
-SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
-DROP TABLE t1;
-CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT;
-SHOW WARNINGS;
---error ER_ILLEGAL_HA_CREATE_OPTION
-ALTER TABLE t1 KEY_BLOCK_SIZE=2;
-SHOW WARNINGS;
---error ER_ILLEGAL_HA_CREATE_OPTION
-ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
-SHOW WARNINGS;
---error ER_ILLEGAL_HA_CREATE_OPTION
-ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
-SHOW WARNINGS;
-SET GLOBAL innodb_file_format=Barracuda;
-DROP TABLE t1;
+--echo # and a valid non-zero KEY_BLOCK_SIZE
+--echo # can be set to default values during strict mode.
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
-SET GLOBAL innodb_file_format=Antelope;
---error ER_ILLEGAL_HA_CREATE_OPTION
ALTER TABLE t1 ADD COLUMN f1 INT;
SHOW WARNINGS;
SHOW CREATE TABLE t1;
@@ -257,7 +220,6 @@ ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
SHOW WARNINGS;
ALTER TABLE t1 ADD COLUMN f2 INT;
SHOW WARNINGS;
-SET GLOBAL innodb_file_format=Barracuda;
--echo # Test 8) StrictMode=ON, Make sure ROW_FORMAT=COMPRESSED
--echo # and a valid non-zero KEY_BLOCK_SIZE are rejected with
@@ -466,18 +428,14 @@ CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=15;
SHOW WARNINGS;
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
---echo # Test 15) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a
---echo valid KEY_BLOCK_SIZE are remembered but not used when ROW_FORMAT
---echo is reverted to Antelope and then used again when ROW_FORMAT=Barracuda.
+--echo # Test 15) StrictMode=OFF.
DROP TABLE t1;
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
SHOW WARNINGS;
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
-SET GLOBAL innodb_file_format=Antelope;
ALTER TABLE t1 ADD COLUMN f1 INT;
SHOW WARNINGS;
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
-SET GLOBAL innodb_file_format=Barracuda;
ALTER TABLE t1 ADD COLUMN f2 INT;
SHOW WARNINGS;
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
@@ -485,11 +443,9 @@ DROP TABLE t1;
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
SHOW WARNINGS;
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
-SET GLOBAL innodb_file_format=Antelope;
ALTER TABLE t1 ADD COLUMN f1 INT;
SHOW WARNINGS;
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
-SET GLOBAL innodb_file_format=Barracuda;
ALTER TABLE t1 ADD COLUMN f2 INT;
SHOW WARNINGS;
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
@@ -527,6 +483,5 @@ SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE
DROP TABLE t1;
--disable_query_log
-EVAL SET GLOBAL innodb_file_format=$innodb_file_format_orig;
EVAL SET GLOBAL innodb_file_per_table=$innodb_file_per_table_orig;
--enable_query_log
diff --git a/mysql-test/suite/innodb_zip/t/index_large_prefix.test b/mysql-test/suite/innodb_zip/t/index_large_prefix.test
index d61cce8d484..bc76f52dcbf 100644
--- a/mysql-test/suite/innodb_zip/t/index_large_prefix.test
+++ b/mysql-test/suite/innodb_zip/t/index_large_prefix.test
@@ -137,11 +137,6 @@ create table worklog5743_16(a1 int, a2 TEXT, a3 TEXT) KEY_BLOCK_SIZE=16;
# See page_zip_empty_size() and Bug #47495 for more detail.
# Test edge cases for indexes using key_block_size=1
-set global innodb_large_prefix=0;
--- error ER_TOO_LONG_KEY,1118
-create index idx1 on worklog5743_1(a2(4000));
-show warnings;
-set global innodb_large_prefix=1;
-- error ER_TOO_LONG_KEY,1118
create index idx2 on worklog5743_1(a2(4000));
show warnings;
@@ -159,12 +154,6 @@ create index idx6 on worklog5743_1(a1, a2(428));
show warnings;
# Test edge cases for indexes using key_block_size=2
-set global innodb_large_prefix=0;
-# Check index creation behavior without STRICT mode
-SET sql_mode= '';
-create index idx1 on worklog5743_2(a2(4000));
-show warnings;
-set global innodb_large_prefix=1;
-- error ER_TOO_BIG_ROWSIZE
create index idx2 on worklog5743_2(a2(4000));
show warnings;
@@ -182,10 +171,6 @@ create index idx6 on worklog5743_2(a1, a2(940));
show warnings;
# Test edge cases for indexes using key_block_size=4
-set global innodb_large_prefix=0;
-create index idx1 on worklog5743_4(a2(4000));
-show warnings;
-set global innodb_large_prefix=1;
-- error ER_TOO_BIG_ROWSIZE
create index idx2 on worklog5743_4(a2(4000));
show warnings;
@@ -203,10 +188,6 @@ create index idx6 on worklog5743_4(a1, a2(1964));
show warnings;
# Test edge cases for indexes using key_block_size=8
-set global innodb_large_prefix=0;
-create index idx1 on worklog5743_8(a2(1000));
-show warnings;
-set global innodb_large_prefix=1;
create index idx2 on worklog5743_8(a2(3073));
show warnings;
create index idx3 on worklog5743_8(a2(3072));
@@ -223,10 +204,6 @@ create index idx7 on worklog5743_8(a1, a2(2000), a3(1068));
show warnings;
# Test edge cases for indexes using key_block_size=16
-set global innodb_large_prefix=0;
-create index idx1 on worklog5743_16(a2(1000));
-show warnings;
-set global innodb_large_prefix=1;
create index idx2 on worklog5743_16(a2(3073));
show warnings;
create index idx3 on worklog5743_16(a2(3072));
@@ -250,16 +227,6 @@ insert into worklog5743_4 values(9, repeat("a", 10000));
insert into worklog5743_8 values(9, repeat("a", 10000), repeat("a", 10000));
insert into worklog5743_16 values(9, repeat("a", 10000), repeat("a", 10000));
-# Now if we change the global innodb_large_prefix back to 767,
-# updates to these indexes should still be allowed.
-set global innodb_large_prefix=0;
-insert into worklog5743_1 values(2, repeat("b", 10000));
-insert into worklog5743_2 values(2, repeat("b", 10000));
-insert into worklog5743_4 values(2, repeat("b", 10000));
-insert into worklog5743_8 values(2, repeat("b", 10000), repeat("b", 10000));
-insert into worklog5743_16 values(2, repeat("b", 10000), repeat("b", 10000));
-set global innodb_large_prefix=1;
-
select a1, left(a2, 20) from worklog5743_1;
select a1, left(a2, 20) from worklog5743_2;
select a1, left(a2, 20) from worklog5743_4;
diff --git a/mysql-test/suite/innodb_zip/t/index_large_prefix_4k.test b/mysql-test/suite/innodb_zip/t/index_large_prefix_4k.test
index cc4f9f5387d..1bfff79e94c 100644
--- a/mysql-test/suite/innodb_zip/t/index_large_prefix_4k.test
+++ b/mysql-test/suite/innodb_zip/t/index_large_prefix_4k.test
@@ -136,7 +136,6 @@ create table worklog5743_4(a1 int, a2 TEXT not null) KEY_BLOCK_SIZE=4;
# See page_zip_empty_size() and Bug #47495 for more detail.
# Test edge cases for indexes using key_block_size=1
-set global innodb_large_prefix=0;
-- error ER_TOO_BIG_ROWSIZE
create index idx1 on worklog5743_1(a2(4000));
show warnings;
@@ -154,7 +153,6 @@ create index idx6 on worklog5743_1(a1, a2(428));
show warnings;
# Test edge cases for indexes using key_block_size=2
-set global innodb_large_prefix=1;
SET sql_mode= '';
create index idx1 on worklog5743_2(a2(4000));
show warnings;
@@ -169,7 +167,6 @@ show warnings;
create index idx6 on worklog5743_2(a1, a2(764));
show warnings;
# Test edge cases for indexes using key_block_size=4
-set global innodb_large_prefix=0;
create index idx1 on worklog5743_4(a2(4000));
show warnings;
show create table worklog5743_4;
@@ -188,14 +185,6 @@ insert into worklog5743_1 values(9, repeat("a", 10000));
insert into worklog5743_2 values(9, repeat("a", 10000));
insert into worklog5743_4 values(9, repeat("a", 10000));
-# Now if we change the global innodb_large_prefix back to 767,
-# updates to these indexes should still be allowed.
-set global innodb_large_prefix=0;
-insert into worklog5743_1 values(2, repeat("b", 10000));
-insert into worklog5743_2 values(2, repeat("b", 10000));
-insert into worklog5743_4 values(2, repeat("b", 10000));
-set global innodb_large_prefix=1;
-
select a1, left(a2, 20) from worklog5743_1;
select a1, left(a2, 20) from worklog5743_2;
select a1, left(a2, 20) from worklog5743_4;
diff --git a/mysql-test/suite/innodb_zip/t/index_large_prefix_8k.test b/mysql-test/suite/innodb_zip/t/index_large_prefix_8k.test
index 81e7df3582f..cb27a9e9776 100644
--- a/mysql-test/suite/innodb_zip/t/index_large_prefix_8k.test
+++ b/mysql-test/suite/innodb_zip/t/index_large_prefix_8k.test
@@ -138,11 +138,6 @@ create table worklog5743_8(a1 int, a2 TEXT, a3 TEXT) KEY_BLOCK_SIZE=8;
# See page_zip_empty_size() and Bug #47495 for more detail.
# Test edge cases for indexes using key_block_size=1
-set global innodb_large_prefix=0;
--- error ER_TOO_BIG_ROWSIZE
-create index idx1 on worklog5743_1(a2(4000));
-show warnings;
-set global innodb_large_prefix=1;
-- error ER_TOO_BIG_ROWSIZE
create index idx2 on worklog5743_1(a2(4000));
show warnings;
@@ -160,11 +155,6 @@ create index idx6 on worklog5743_1(a1, a2(428));
show warnings;
# Test edge cases for indexes using key_block_size=2
-set global innodb_large_prefix=0;
-SET sql_mode= '';
-create index idx1 on worklog5743_2(a2(4000));
-show warnings;
-set global innodb_large_prefix=1;
-- error ER_TOO_BIG_ROWSIZE
create index idx2 on worklog5743_2(a2(4000));
show warnings;
@@ -182,10 +172,6 @@ create index idx6 on worklog5743_2(a1, a2(940));
show warnings;
# Test edge cases for indexes using key_block_size=4
-set global innodb_large_prefix=0;
-create index idx1 on worklog5743_4(a2(4000));
-show warnings;
-set global innodb_large_prefix=1;
create index idx3 on worklog5743_4(a2(1537));
show warnings;
create index idx4 on worklog5743_4(a2(1536));
@@ -197,10 +183,6 @@ create index idx6 on worklog5743_4(a1, a2(1532));
show warnings;
# Test edge cases for indexes using key_block_size=8
-set global innodb_large_prefix=0;
-create index idx1 on worklog5743_8(a2(1000));
-show warnings;
-set global innodb_large_prefix=1;
create index idx2 on worklog5743_8(a2(3073));
show warnings;
create index idx3 on worklog5743_8(a2(3072));
@@ -218,15 +200,6 @@ insert into worklog5743_2 values(9, repeat("a", 10000));
insert into worklog5743_4 values(9, repeat("a", 10000));
insert into worklog5743_8 values(9, repeat("a", 10000), repeat("a", 10000));
-# Now if we change the global innodb_large_prefix back to 767,
-# updates to these indexes should still be allowed.
-set global innodb_large_prefix=0;
-insert into worklog5743_1 values(2, repeat("b", 10000));
-insert into worklog5743_2 values(2, repeat("b", 10000));
-insert into worklog5743_4 values(2, repeat("b", 10000));
-insert into worklog5743_8 values(2, repeat("b", 10000), repeat("b", 10000));
-set global innodb_large_prefix=1;
-
select a1, left(a2, 20) from worklog5743_1;
select a1, left(a2, 20) from worklog5743_2;
select a1, left(a2, 20) from worklog5743_4;
diff --git a/mysql-test/suite/innodb_zip/t/innodb-zip.test b/mysql-test/suite/innodb_zip/t/innodb-zip.test
index a2b55144c61..9049b231191 100644
--- a/mysql-test/suite/innodb_zip/t/innodb-zip.test
+++ b/mysql-test/suite/innodb_zip/t/innodb-zip.test
@@ -7,16 +7,12 @@ SELECT table_name, row_format, data_length, index_length
WHERE table_schema='mysqltest_innodb_zip';
let $per_table=`select @@innodb_file_per_table`;
-let $format=`select @@innodb_file_format`;
-let $innodb_file_format_orig=`select @@innodb_file_format`;
-let $innodb_file_format_max_orig=`select @@innodb_file_format_max`;
SET @save_innodb_stats_on_metadata=@@global.innodb_stats_on_metadata;
---let $query_i_s = SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql'
+--let $query_i_s = SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql' order by table_name
set session innodb_strict_mode=0;
set global innodb_file_per_table=off;
-set global innodb_file_format=`0`;
SET @@global.innodb_stats_on_metadata=ON;
create table t0(a int primary key) engine=innodb row_format=compressed;
@@ -32,7 +28,6 @@ key_block_size=1 row_format=redundant;
set global innodb_file_per_table=on;
create table t6(a int primary key) engine=innodb
key_block_size=1 row_format=redundant;
-set global innodb_file_format=`1`;
create table t7(a int primary key) engine=innodb
key_block_size=1 row_format=redundant;
create table t8(a int primary key) engine=innodb
@@ -128,34 +123,7 @@ select count(*) from t1 where c4 = repeat('C', 20000);
update t1 set c3 = repeat('E', 20000) where c1 = 1;
drop table t1;
-#
-#
-# Test innodb_file_format
-#
-set global innodb_file_format=`0`;
-select @@innodb_file_format;
-set global innodb_file_format=`1`;
-select @@innodb_file_format;
--- error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format=`2`;
--- error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format=`-1`;
-set global innodb_file_format=`Antelope`;
-set global innodb_file_format=`Barracuda`;
--- error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format=`Cheetah`;
--- error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format=`abc`;
--- error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format=`1a`;
--- error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format=``;
-
-#test strict mode.
-# this does not work anymore, has been removed from mysqltest
-# -- enable_errors
set global innodb_file_per_table = on;
-set global innodb_file_format = `1`;
set innodb_strict_mode = off;
create table t1 (id int primary key) engine = innodb key_block_size = 0;
@@ -282,79 +250,12 @@ create table t9 (id int primary key) engine = innodb row_format = redundant;
--eval $query_i_s
drop table t7, t8, t9;
-#test valid values with innodb_file_format unset
-set global innodb_file_per_table = on;
-set global innodb_file_format = `0`;
-
---replace_regex / - .*[0-9]*[)]/)/
---error ER_CANT_CREATE_TABLE
-create table t1 (id int primary key) engine = innodb key_block_size = 1;
---replace_regex / - .*[0-9]*[)]/)/
-show warnings;
---replace_regex / - .*[0-9]*[)]/)/
---error ER_CANT_CREATE_TABLE
-create table t2 (id int primary key) engine = innodb key_block_size = 2;
---replace_regex / - .*[0-9]*[)]/)/
-show warnings;
---replace_regex / - .*[0-9]*[)]/)/
---error ER_CANT_CREATE_TABLE
-create table t3 (id int primary key) engine = innodb key_block_size = 4;
-show warnings;
-
-# Tests for key_block_size = 8 and 16 were moved to innodb_16k, innodb_8k
-# and innodb_4k since they get different warnings with smaller page sizes.
-
---error ER_CANT_CREATE_TABLE
-create table t6 (id int primary key) engine = innodb row_format = compressed;
---replace_regex / - .*[0-9]*[)]/)/
-show warnings;
---replace_regex / - .*[0-9]*[)]/)/
---error ER_CANT_CREATE_TABLE
-create table t7 (id int primary key) engine = innodb row_format = dynamic;
---replace_regex / - .*[0-9]*[)]/)/
-show warnings;
-create table t8 (id int primary key) engine = innodb row_format = compact;
-create table t9 (id int primary key) engine = innodb row_format = redundant;
-
---replace_result 16384 {valid} 8192 {valid} 4096 {valid}
---eval $query_i_s
-drop table t8, t9;
-
-eval set global innodb_file_per_table=$per_table;
-eval set global innodb_file_format=$format;
-#
-# Testing of tablespace tagging
-#
--- disable_info
-set global innodb_file_per_table=on;
-set global innodb_file_format=`Barracuda`;
-set global innodb_file_format_max=`Antelope`;
-create table normal_table (
- c1 int
-) engine = innodb;
-select @@innodb_file_format_max;
-create table zip_table (
- c1 int
-) engine = innodb key_block_size = 4;
-select @@innodb_file_format_max;
-set global innodb_file_format_max=`Antelope`;
-select @@innodb_file_format_max;
--- disable_result_log
-show table status;
--- enable_result_log
-select @@innodb_file_format_max;
-drop table normal_table, zip_table;
--- disable_result_log
-
#
# restore environment to the state it was before this test execution
#
-- disable_query_log
-eval set global innodb_file_format=$format;
eval set global innodb_file_per_table=$per_table;
-eval SET GLOBAL innodb_file_format=$innodb_file_format_orig;
-eval SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig;
SET @@global.innodb_stats_on_metadata=@save_innodb_stats_on_metadata;
--enable_query_log
diff --git a/mysql-test/suite/innodb_zip/t/prefix_index_liftedlimit.test b/mysql-test/suite/innodb_zip/t/prefix_index_liftedlimit.test
index ac4946e08c6..5a944f0ae8b 100644
--- a/mysql-test/suite/innodb_zip/t/prefix_index_liftedlimit.test
+++ b/mysql-test/suite/innodb_zip/t/prefix_index_liftedlimit.test
@@ -15,8 +15,6 @@
--source include/have_innodb.inc
--source include/have_innodb_16k.inc
-SET @large_prefix_orig = @@GLOBAL.innodb_large_prefix;
-
# Prefix index with VARCHAR data type , primary/secondary index and DML ops
CREATE TABLE worklog5743 (
col_1_varchar VARCHAR (4000) , col_2_varchar VARCHAR (4000) ,
@@ -1115,8 +1113,8 @@ AND col_2_varbinary = REPEAT("o", 4000);
DROP INDEX prefix_idx ON worklog5743;
# Again add index length > 3072.
-# If "innodb_large_prefix" is turned on, than the index prefix larger than 3072
-# will be truncated to 3072. If the table is REDUNDANT and COMPACT, which does
+# index prefix larger than 3072 will be truncated to 3072
+# For the ROW_FORMAT of REDUNDANT or COMPACT, which do
# not support prefix > 767, the create index will be rejected.
SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
CREATE INDEX prefix_idx ON worklog5743(col_1_varbinary (4000));
@@ -1172,9 +1170,10 @@ WHERE col_1_text = REPEAT("c", 4000) AND col_2_text = REPEAT("o", 4000);
DROP INDEX prefix_idx ON worklog5743;
# Again add index length > 3072.
-# If "innodb_large_prefix" is turned on, than the index prefix larger than 3072
-# will be truncated to 3072. In STRICT mode, the statement will fail with error.
-# If the table is REDUNDANT or COMPACT, which does not support prefix > 767, the create index will be rejected.
+# index prefix larger than 3072 will be truncated to 3072
+# In STRICT mode, the statement will fail with error.
+# For ROW_FORMAT of REDUNDANT or COMPACT, which does not support prefix > 767,
+# the create index will be rejected.
# --error ER_TOO_LONG_KEY
CREATE INDEX prefix_idx ON worklog5743(col_1_text (4000));
#CREATE INDEX prefix_idx ON worklog5743(col_1_text (3072));
@@ -1260,8 +1259,8 @@ ALTER TABLE worklog5743 DROP PRIMARY KEY;
# Again add index length > 3072. Expect error.Length exceeds maximum supported
# key length
# Again add index length > 3072.
-# If "innodb_large_prefix" is turned on, than the index prefix larger than 3072
-# will be truncated to 3072. If the table is REDUNDANT and COMPACT, which does
+# index prefix larger than 3072 will be truncated to 3072.
+# For ROW_FORMAT of REDUNDANT or COMPACT, which do
# not support prefix > 767, the create index will be rejected.
# Index length is truncated only for 'create index' , but error if we add
# prefix index with length > 3072
@@ -1301,13 +1300,13 @@ ALTER TABLE worklog5743 ADD PRIMARY KEY `pk_idx` (col_1_varchar(3000));
DROP TABLE worklog5743;
# -----------------------------------------------------------------------------
+--error ER_UNKNOWN_SYSTEM_VARIABLE
set global innodb_large_prefix=0;
-# Prefix index > 767 is allowed if innodb_large_prefix is set to 1
---error ER_TOO_LONG_KEY
CREATE TABLE worklog5743 (
col_1_varchar VARCHAR (4000) , col_2_varchar VARCHAR (4000) ,
PRIMARY KEY (col_1_varchar(3072))
) ROW_FORMAT=DYNAMIC, engine = innodb;
+DROP TABLE worklog5743;
# -----------------------------------------------------------------------------
@@ -1320,13 +1319,11 @@ PRIMARY KEY (col_1_varchar(767))
INSERT INTO worklog5743 VALUES(REPEAT('a',4000),REPEAT('b',4000));
# Prefix index > 767 is truncated with REDUNDANT and COMPACT
--enable_info
-# FIXME: MDEV-15257 Invalid CREATE INDEX fails to report error correctly
-#--error ER_TOO_LONG_KEY
-#CREATE INDEX prefix_idx ON worklog5743(col_1_varchar (1000));
-CREATE INDEX prefix_idx ON worklog5743(col_1_varchar (767));
-ALTER TABLE worklog5743 ROW_FORMAT=REDUNDANT;
+CREATE INDEX prefix_idx ON worklog5743(col_1_varchar (1000));
+--error ER_INDEX_COLUMN_TOO_LONG
+ALTER TABLE worklog5743 ROW_FORMAT=REDUNDANT, ALGORITHM=INPLACE;
+--error ER_INDEX_COLUMN_TOO_LONG
+ALTER TABLE worklog5743 ROW_FORMAT=REDUNDANT, ALGORITHM=COPY;
--disable_info
SHOW CREATE TABLE worklog5743;
DROP TABLE worklog5743;
-
-SET GLOBAL innodb_large_prefix = @large_prefix_orig;
diff --git a/mysql-test/suite/innodb_zip/t/recover.test b/mysql-test/suite/innodb_zip/t/recover.test
index 0cfc2b672fb..f32ff3d3783 100644
--- a/mysql-test/suite/innodb_zip/t/recover.test
+++ b/mysql-test/suite/innodb_zip/t/recover.test
@@ -1,5 +1,4 @@
---source include/have_innodb.inc
---source include/have_innodb_max_16k.inc
+--source include/innodb_page_size_small.inc
--source include/not_embedded.inc
--disable_query_log
diff --git a/mysql-test/suite/jp/r/jp_create_db_sjis.result b/mysql-test/suite/jp/r/jp_create_db_sjis.result
index 93524e1c443..78c80c27cc5 100644
--- a/mysql-test/suite/jp/r/jp_create_db_sjis.result
+++ b/mysql-test/suite/jp/r/jp_create_db_sjis.result
@@ -6,7 +6,7 @@ drop database if exists `ƒ\\•\`;
CREATE DATABASE `ÆÎݺÞ`;
CREATE DATABASE `“ú–{Œê`;
CREATE DATABASE `ƒ\\•\`;
-SELECT schema_name from information_schema.schemata where schema_name <> 'mtr';
+SELECT schema_name from information_schema.schemata where schema_name <> 'mtr' ORDER BY schema_name;
schema_name
information_schema
mysql
diff --git a/mysql-test/suite/jp/r/jp_create_db_ucs2.result b/mysql-test/suite/jp/r/jp_create_db_ucs2.result
index c6a2ff78b4f..380fcf09389 100644
--- a/mysql-test/suite/jp/r/jp_create_db_ucs2.result
+++ b/mysql-test/suite/jp/r/jp_create_db_ucs2.result
@@ -7,7 +7,7 @@ SET character_set_server = ucs2;
CREATE DATABASE `ŽÆŽÎŽÝŽºŽÞ`;
CREATE DATABASE `ÆüËܸì`;
CREATE DATABASE `íÜíÝíÞ`;
-SELECT schema_name from information_schema.schemata where schema_name <> 'mtr';
+SELECT schema_name from information_schema.schemata where schema_name <> 'mtr' ORDER BY schema_name;
schema_name
information_schema
mysql
diff --git a/mysql-test/suite/jp/r/jp_create_db_ujis.result b/mysql-test/suite/jp/r/jp_create_db_ujis.result
index e5e0c2f1ad8..529a225e4ed 100644
--- a/mysql-test/suite/jp/r/jp_create_db_ujis.result
+++ b/mysql-test/suite/jp/r/jp_create_db_ujis.result
@@ -6,7 +6,7 @@ SET character_set_database = ujis;
CREATE DATABASE `ŽÆŽÎŽÝŽºŽÞ`;
CREATE DATABASE `ÆüËܸì`;
CREATE DATABASE `íÜíÝíÞ`;
-SELECT schema_name from information_schema.schemata where schema_name <> 'mtr';
+SELECT schema_name from information_schema.schemata where schema_name <> 'mtr' ORDER BY schema_name;
schema_name
information_schema
mysql
diff --git a/mysql-test/suite/jp/r/jp_create_db_utf8.result b/mysql-test/suite/jp/r/jp_create_db_utf8.result
index f07a36fd7c7..7d950ea53f9 100644
--- a/mysql-test/suite/jp/r/jp_create_db_utf8.result
+++ b/mysql-test/suite/jp/r/jp_create_db_utf8.result
@@ -6,7 +6,7 @@ SET character_set_database = utf8;
CREATE DATABASE `ニホï¾ï½ºï¾ž`;
CREATE DATABASE `日本語`;
CREATE DATABASE `龔龖龗`;
-SELECT schema_name from information_schema.schemata where schema_name <> 'mtr';
+SELECT schema_name from information_schema.schemata where schema_name <> 'mtr' ORDER BY schema_name;
schema_name
information_schema
mysql
diff --git a/mysql-test/suite/jp/t/jp_create_db_sjis.test b/mysql-test/suite/jp/t/jp_create_db_sjis.test
index 49647bf1753..5458e6f0abd 100644
--- a/mysql-test/suite/jp/t/jp_create_db_sjis.test
+++ b/mysql-test/suite/jp/t/jp_create_db_sjis.test
@@ -16,7 +16,7 @@ CREATE DATABASE `ÆÎݺÞ`;
CREATE DATABASE `“ú–{Œê`;
CREATE DATABASE `ƒ\\•\`;
-SELECT schema_name from information_schema.schemata where schema_name <> 'mtr';
+SELECT schema_name from information_schema.schemata where schema_name <> 'mtr' ORDER BY schema_name;
USE `ÆÎݺÞ`;
USE `“ú–{Œê`;
diff --git a/mysql-test/suite/jp/t/jp_create_db_ucs2.test b/mysql-test/suite/jp/t/jp_create_db_ucs2.test
index 8be8cf62f15..a3f64d1ebc7 100644
--- a/mysql-test/suite/jp/t/jp_create_db_ucs2.test
+++ b/mysql-test/suite/jp/t/jp_create_db_ucs2.test
@@ -18,7 +18,7 @@ CREATE DATABASE `ŽÆŽÎŽÝŽºŽÞ`;
CREATE DATABASE `ÆüËܸì`;
CREATE DATABASE `íÜíÝíÞ`;
-SELECT schema_name from information_schema.schemata where schema_name <> 'mtr';
+SELECT schema_name from information_schema.schemata where schema_name <> 'mtr' ORDER BY schema_name;
USE `ŽÆŽÎŽÝŽºŽÞ`;
USE `ÆüËܸì`;
diff --git a/mysql-test/suite/jp/t/jp_create_db_ujis.test b/mysql-test/suite/jp/t/jp_create_db_ujis.test
index 382c7937552..514745aad43 100644
--- a/mysql-test/suite/jp/t/jp_create_db_ujis.test
+++ b/mysql-test/suite/jp/t/jp_create_db_ujis.test
@@ -17,7 +17,7 @@ CREATE DATABASE `ŽÆŽÎŽÝŽºŽÞ`;
CREATE DATABASE `ÆüËܸì`;
CREATE DATABASE `íÜíÝíÞ`;
-SELECT schema_name from information_schema.schemata where schema_name <> 'mtr';
+SELECT schema_name from information_schema.schemata where schema_name <> 'mtr' ORDER BY schema_name;
USE `ŽÆŽÎŽÝŽºŽÞ`;
USE `ÆüËܸì`;
diff --git a/mysql-test/suite/jp/t/jp_create_db_utf8.test b/mysql-test/suite/jp/t/jp_create_db_utf8.test
index 2df5b9e1f6f..8617af57c7b 100644
--- a/mysql-test/suite/jp/t/jp_create_db_utf8.test
+++ b/mysql-test/suite/jp/t/jp_create_db_utf8.test
@@ -16,7 +16,7 @@ CREATE DATABASE `ニホï¾ï½ºï¾ž`;
CREATE DATABASE `日本語`;
CREATE DATABASE `龔龖龗`;
-SELECT schema_name from information_schema.schemata where schema_name <> 'mtr';
+SELECT schema_name from information_schema.schemata where schema_name <> 'mtr' ORDER BY schema_name;
USE `ニホï¾ï½ºï¾ž`;
USE `日本語`;
diff --git a/mysql-test/suite/mariabackup/suite.opt b/mysql-test/suite/mariabackup/suite.opt
index 8b1e9c7bcb2..752a2e41983 100644
--- a/mysql-test/suite/mariabackup/suite.opt
+++ b/mysql-test/suite/mariabackup/suite.opt
@@ -1 +1 @@
---innodb --loose-changed_page_bitmaps --innodb-file-format=Barracuda --innodb-sys-tables --partition \ No newline at end of file
+--innodb --loose-changed_page_bitmaps --innodb-sys-tables --partition
diff --git a/mysql-test/suite/mariabackup/system_versioning.result b/mysql-test/suite/mariabackup/system_versioning.result
new file mode 100644
index 00000000000..0e1e9253dd0
--- /dev/null
+++ b/mysql-test/suite/mariabackup/system_versioning.result
@@ -0,0 +1,49 @@
+create table t (a int) with system versioning;
+insert into t values (1);
+update t set a=2;
+insert into t values (3);
+# shutdown server
+# remove datadir
+# xtrabackup move back
+# restart server
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=INNODB_OR_MYISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+select * from t;
+a
+2
+select a from t for system_time all;
+a
+2
+1
+create or replace table t (
+a int,
+s bigint unsigned as row start invisible,
+e bigint unsigned as row end invisible,
+period for system_time(s, e)
+) with system versioning engine=innodb;
+insert into t values (1);
+update t set a=2;
+insert into t values (3);
+# shutdown server
+# remove datadir
+# xtrabackup move back
+# restart server
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `s` bigint(20) unsigned GENERATED ALWAYS AS ROW START INVISIBLE,
+ `e` bigint(20) unsigned GENERATED ALWAYS AS ROW END INVISIBLE,
+ PERIOD FOR SYSTEM_TIME (`s`, `e`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+select * from t;
+a
+2
+select a from t for system_time all;
+a
+2
+1
+drop table t;
diff --git a/mysql-test/suite/mariabackup/system_versioning.test b/mysql-test/suite/mariabackup/system_versioning.test
new file mode 100644
index 00000000000..1ced00b4588
--- /dev/null
+++ b/mysql-test/suite/mariabackup/system_versioning.test
@@ -0,0 +1,50 @@
+create table t (a int) with system versioning;
+insert into t values (1);
+update t set a=2;
+
+let $targetdir=$MYSQLTEST_VARDIR/tmp/backup;
+
+--disable_result_log
+exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir;
+--enable_result_log
+
+insert into t values (3);
+
+--disable_result_log
+exec $XTRABACKUP --prepare --target-dir=$targetdir;
+-- source include/restart_and_restore.inc
+--enable_result_log
+
+--replace_result InnoDB INNODB_OR_MYISAM MyISAM INNODB_OR_MYISAM
+show create table t;
+select * from t;
+select a from t for system_time all;
+
+rmdir $targetdir;
+
+create or replace table t (
+ a int,
+ s bigint unsigned as row start invisible,
+ e bigint unsigned as row end invisible,
+ period for system_time(s, e)
+) with system versioning engine=innodb;
+insert into t values (1);
+update t set a=2;
+
+--disable_result_log
+exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir;
+--enable_result_log
+
+insert into t values (3);
+
+--disable_result_log
+exec $XTRABACKUP --prepare --target-dir=$targetdir;
+-- source include/restart_and_restore.inc
+--enable_result_log
+
+show create table t;
+select * from t;
+select a from t for system_time all;
+
+drop table t;
+rmdir $targetdir;
diff --git a/mysql-test/suite/mariabackup/xb_compressed_encrypted.opt b/mysql-test/suite/mariabackup/xb_compressed_encrypted.opt
index e6cbe00bb7c..8baef973470 100644
--- a/mysql-test/suite/mariabackup/xb_compressed_encrypted.opt
+++ b/mysql-test/suite/mariabackup/xb_compressed_encrypted.opt
@@ -6,4 +6,3 @@
--loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/logkey.txt
--innodb_strict_mode
--innodb_file_per_table
---innodb_file_format=Barracuda
diff --git a/mysql-test/suite/multi_source/gtid_ignore_duplicates.result b/mysql-test/suite/multi_source/gtid_ignore_duplicates.result
index 92d096245c7..96627b42c97 100644
--- a/mysql-test/suite/multi_source/gtid_ignore_duplicates.result
+++ b/mysql-test/suite/multi_source/gtid_ignore_duplicates.result
@@ -65,6 +65,7 @@ include/wait_for_slave_to_start.inc
set default_master_connection = '';
connection server_1;
ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
+CALL mtr.add_suppression("This change will not take full effect until all SQL threads have been restarted");
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
BEGIN;
@@ -491,17 +492,21 @@ SET GLOBAL slave_parallel_threads= @old_parallel;
SET GLOBAL gtid_ignore_duplicates= @old_ignore_duplicates;
connection server_1;
DROP TABLE t1;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
include/reset_master_slave.inc
disconnect server_1;
connection server_2;
DROP TABLE t1;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
include/reset_master_slave.inc
disconnect server_2;
connection server_3;
DROP TABLE t1;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
include/reset_master_slave.inc
disconnect server_3;
connection server_4;
DROP TABLE t1;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
include/reset_master_slave.inc
disconnect server_4;
diff --git a/mysql-test/suite/multi_source/gtid_ignore_duplicates.test b/mysql-test/suite/multi_source/gtid_ignore_duplicates.test
index 218d91aa7fb..b61da0f0f33 100644
--- a/mysql-test/suite/multi_source/gtid_ignore_duplicates.test
+++ b/mysql-test/suite/multi_source/gtid_ignore_duplicates.test
@@ -86,6 +86,7 @@ set default_master_connection = '';
--connection server_1
ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
+CALL mtr.add_suppression("This change will not take full effect until all SQL threads have been restarted");
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
BEGIN;
@@ -431,20 +432,24 @@ SET GLOBAL gtid_ignore_duplicates= @old_ignore_duplicates;
--connection server_1
DROP TABLE t1;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
--source include/reset_master_slave.inc
--disconnect server_1
--connection server_2
DROP TABLE t1;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
--source include/reset_master_slave.inc
--disconnect server_2
--connection server_3
DROP TABLE t1;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
--source include/reset_master_slave.inc
--disconnect server_3
--connection server_4
DROP TABLE t1;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
--source include/reset_master_slave.inc
--disconnect server_4
diff --git a/mysql-test/suite/multi_source/gtid_slave_pos.result b/mysql-test/suite/multi_source/gtid_slave_pos.result
new file mode 100644
index 00000000000..d57cfc17959
--- /dev/null
+++ b/mysql-test/suite/multi_source/gtid_slave_pos.result
@@ -0,0 +1,155 @@
+connect slave1,127.0.0.1,root,,,$SERVER_MYPORT_3;
+connect master1,127.0.0.1,root,,,$SERVER_MYPORT_1;
+connect master2,127.0.0.1,root,,,$SERVER_MYPORT_2;
+connection slave1;
+CHANGE MASTER 'slave1' TO master_port=MYPORT_1, master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
+CHANGE MASTER 'slave2' TO master_port=MYPORT_2, master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
+set default_master_connection = 'slave1';
+START SLAVE;
+include/wait_for_slave_to_start.inc
+set default_master_connection = 'slave2';
+START SLAVE;
+include/wait_for_slave_to_start.inc
+set default_master_connection = '';
+connection master1;
+SET GLOBAL gtid_domain_id= 1;
+SET SESSION gtid_domain_id= 1;
+CREATE TABLE t3 (a INT PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
+CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10));
+INSERT INTO t1 VALUES (1, "initial");
+INSERT INTO t3 VALUES (101, "initial 1");
+include/save_master_gtid.inc
+connection master2;
+SET GLOBAL gtid_domain_id= 2;
+SET SESSION gtid_domain_id= 2;
+CREATE TABLE t2 (a INT PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1, "initial");
+connection slave1;
+include/sync_with_master_gtid.inc
+connection master2;
+include/save_master_gtid.inc
+connection slave1;
+include/sync_with_master_gtid.inc
+*** Add an innodb gtid_slave_pos table. It is not used yet as slaves are already running ***
+SET sql_log_bin=0;
+CREATE TABLE mysql.gtid_slave_pos_innodb LIKE mysql.gtid_slave_pos;
+ALTER TABLE mysql.gtid_slave_pos_innodb ENGINE=InnoDB;
+SET sql_log_bin=0;
+connection master1;
+INSERT INTO t3 VALUES (102, "secondary");
+include/save_master_gtid.inc
+connection slave1;
+include/sync_with_master_gtid.inc
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+domain_id max(seq_no)
+1 5
+2 2
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos_innodb GROUP BY domain_id;
+domain_id max(seq_no)
+*** Restart one slave thread, the other keeps running. Now the new table is used ***
+connection slave1;
+set default_master_connection = 'slave1';
+STOP SLAVE;
+include/wait_for_slave_to_stop.inc
+START SLAVE;
+include/wait_for_slave_to_start.inc
+connection master1;
+INSERT INTO t1 VALUES (2, "followup");
+include/save_master_gtid.inc
+connection slave1;
+include/sync_with_master_gtid.inc
+connection master2;
+INSERT INTO t2 VALUES (2, "secondary2");
+include/save_master_gtid.inc
+connection slave1;
+include/sync_with_master_gtid.inc
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+domain_id max(seq_no)
+1 6
+2 2
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos_innodb GROUP BY domain_id;
+domain_id max(seq_no)
+2 3
+*** Remove a gtid_slave_posXXX table, restart one slave ***
+*** Get a warning that the change is not yet picked up ***
+*** See that updates fail due to trying to use the missing table ***
+connection slave1;
+SET sql_log_bin=0;
+DROP TABLE mysql.gtid_slave_pos_innodb;
+SET sql_log_bin=1;
+set default_master_connection = 'slave2';
+STOP SLAVE;
+include/wait_for_slave_to_stop.inc
+START SLAVE;
+include/wait_for_slave_to_start.inc
+CALL mtr.add_suppression("The table mysql.gtid_slave_pos_innodb was removed.");
+connection master2;
+INSERT INTO t2 VALUES (3, "tertiary 2");
+connection slave1;
+include/wait_for_slave_sql_error.inc [errno=1942]
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+domain_id max(seq_no)
+1 6
+2 2
+*** Stop both slaves, see that the drop of mysql.gtid_slave_pos_innodb is now picked up ***
+connection slave1;
+set default_master_connection = 'slave1';
+STOP SLAVE;
+include/wait_for_slave_to_stop.inc
+set default_master_connection = 'slave2';
+STOP SLAVE;
+include/wait_for_slave_to_stop.inc
+set default_master_connection = 'slave1';
+START SLAVE;
+include/wait_for_slave_to_start.inc
+connection master1;
+INSERT INTO t1 VALUES (3, "more stuff");
+include/save_master_gtid.inc
+connection slave1;
+include/sync_with_master_gtid.inc
+set default_master_connection = 'slave2';
+START SLAVE;
+include/wait_for_slave_to_start.inc
+connection master2;
+include/save_master_gtid.inc
+connection slave1;
+include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+a b
+1 initial
+2 followup
+3 more stuff
+SELECT * FROM t2 ORDER BY a;
+a b
+1 initial
+2 secondary2
+3 tertiary 2
+SELECT * FROM t3 ORDER BY a;
+a b
+101 initial 1
+102 secondary
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+domain_id max(seq_no)
+1 7
+2 4
+connection master1;
+DROP TABLE t1;
+DROP TABLE t3;
+connection master2;
+DROP TABLE t2;
+connection slave1;
+SET GLOBAL gtid_domain_id=0;
+STOP ALL SLAVES;
+Warnings:
+Note 1938 SLAVE 'slave1' stopped
+Note 1938 SLAVE 'slave2' stopped
+include/reset_master_slave.inc
+disconnect slave1;
+connection master1;
+SET GLOBAL gtid_domain_id=0;
+include/reset_master_slave.inc
+disconnect master1;
+connection master2;
+SET GLOBAL gtid_domain_id=0;
+include/reset_master_slave.inc
+disconnect master2;
diff --git a/mysql-test/suite/multi_source/gtid_slave_pos.test b/mysql-test/suite/multi_source/gtid_slave_pos.test
new file mode 100644
index 00000000000..c01130f8cd5
--- /dev/null
+++ b/mysql-test/suite/multi_source/gtid_slave_pos.test
@@ -0,0 +1,173 @@
+--source include/not_embedded.inc
+--source include/have_innodb.inc
+
+#
+# Test multiple mysql.gtid_slave_posXXX tables with multiple master connections
+#
+
+--connect (slave1,127.0.0.1,root,,,$SERVER_MYPORT_3)
+--connect (master1,127.0.0.1,root,,,$SERVER_MYPORT_1)
+--connect (master2,127.0.0.1,root,,,$SERVER_MYPORT_2)
+
+--connection slave1
+--replace_result $SERVER_MYPORT_1 MYPORT_1
+eval CHANGE MASTER 'slave1' TO master_port=$SERVER_MYPORT_1, master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
+--replace_result $SERVER_MYPORT_2 MYPORT_2
+eval CHANGE MASTER 'slave2' TO master_port=$SERVER_MYPORT_2, master_host='127.0.0.1', master_user='root', master_use_gtid=slave_pos;
+set default_master_connection = 'slave1';
+START SLAVE;
+--source include/wait_for_slave_to_start.inc
+set default_master_connection = 'slave2';
+START SLAVE;
+--source include/wait_for_slave_to_start.inc
+set default_master_connection = '';
+
+
+--connection master1
+SET GLOBAL gtid_domain_id= 1;
+SET SESSION gtid_domain_id= 1;
+CREATE TABLE t3 (a INT PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
+CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10));
+INSERT INTO t1 VALUES (1, "initial");
+INSERT INTO t3 VALUES (101, "initial 1");
+--source include/save_master_gtid.inc
+
+--connection master2
+SET GLOBAL gtid_domain_id= 2;
+SET SESSION gtid_domain_id= 2;
+CREATE TABLE t2 (a INT PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1, "initial");
+
+
+--connection slave1
+--source include/sync_with_master_gtid.inc
+
+--connection master2
+--source include/save_master_gtid.inc
+
+--connection slave1
+--source include/sync_with_master_gtid.inc
+
+
+--echo *** Add an innodb gtid_slave_pos table. It is not used yet as slaves are already running ***
+
+SET sql_log_bin=0;
+CREATE TABLE mysql.gtid_slave_pos_innodb LIKE mysql.gtid_slave_pos;
+ALTER TABLE mysql.gtid_slave_pos_innodb ENGINE=InnoDB;
+SET sql_log_bin=0;
+
+--connection master1
+INSERT INTO t3 VALUES (102, "secondary");
+--source include/save_master_gtid.inc
+
+--connection slave1
+--source include/sync_with_master_gtid.inc
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos_innodb GROUP BY domain_id;
+
+--echo *** Restart one slave thread, the other keeps running. Now the new table is used ***
+--connection slave1
+set default_master_connection = 'slave1';
+STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
+START SLAVE;
+--source include/wait_for_slave_to_start.inc
+
+# Send through a transaction on the slave1 connection, to be sure that it has
+# had time to update the state with the new table.
+--connection master1
+INSERT INTO t1 VALUES (2, "followup");
+--source include/save_master_gtid.inc
+--connection slave1
+--source include/sync_with_master_gtid.inc
+
+--connection master2
+INSERT INTO t2 VALUES (2, "secondary2");
+--source include/save_master_gtid.inc
+
+--connection slave1
+--source include/sync_with_master_gtid.inc
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos_innodb GROUP BY domain_id;
+
+--echo *** Remove a gtid_slave_posXXX table, restart one slave ***
+--echo *** Get a warning that the change is not yet picked up ***
+--echo *** See that updates fail due to trying to use the missing table ***
+--connection slave1
+SET sql_log_bin=0;
+DROP TABLE mysql.gtid_slave_pos_innodb;
+SET sql_log_bin=1;
+set default_master_connection = 'slave2';
+STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
+START SLAVE;
+--source include/wait_for_slave_to_start.inc
+CALL mtr.add_suppression("The table mysql.gtid_slave_pos_innodb was removed.");
+
+--connection master2
+INSERT INTO t2 VALUES (3, "tertiary 2");
+
+--connection slave1
+--let $slave_sql_errno= 1942
+--source include/wait_for_slave_sql_error.inc
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+
+--echo *** Stop both slaves, see that the drop of mysql.gtid_slave_pos_innodb is now picked up ***
+--connection slave1
+set default_master_connection = 'slave1';
+STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
+set default_master_connection = 'slave2';
+STOP SLAVE;
+--source include/wait_for_slave_to_stop.inc
+set default_master_connection = 'slave1';
+START SLAVE;
+--source include/wait_for_slave_to_start.inc
+# Send through a transaction on the slave1 connection, to be sure that it has
+# had time to update the state with the new table.
+--connection master1
+INSERT INTO t1 VALUES (3, "more stuff");
+--source include/save_master_gtid.inc
+--connection slave1
+--source include/sync_with_master_gtid.inc
+set default_master_connection = 'slave2';
+START SLAVE;
+--source include/wait_for_slave_to_start.inc
+
+--connection master2
+--source include/save_master_gtid.inc
+--connection slave1
+--source include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+SELECT * FROM t2 ORDER BY a;
+SELECT * FROM t3 ORDER BY a;
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+
+
+# Cleanup.
+--connection master1
+DROP TABLE t1;
+DROP TABLE t3;
+
+--connection master2
+DROP TABLE t2;
+
+--connection slave1
+SET GLOBAL gtid_domain_id=0;
+--let $wait_condition= SELECT COUNT(*)=0 FROM information_schema.tables WHERE table_name IN ("t1", "t2", "t3") AND table_schema = "test"
+--source include/wait_condition.inc
+--sorted_result
+STOP ALL SLAVES;
+--source include/reset_master_slave.inc
+--disconnect slave1
+
+
+--connection master1
+SET GLOBAL gtid_domain_id=0;
+--source include/reset_master_slave.inc
+--disconnect master1
+
+--connection master2
+SET GLOBAL gtid_domain_id=0;
+--source include/reset_master_slave.inc
+--disconnect master2
diff --git a/mysql-test/suite/parts/r/cache.result b/mysql-test/suite/parts/r/cache.result
new file mode 100644
index 00000000000..fb40526f379
--- /dev/null
+++ b/mysql-test/suite/parts/r/cache.result
@@ -0,0 +1,15 @@
+CREATE TABLE t1 (f1 INT, f2 INT, f3 INT, f4 INT, KEY (f4),
+KEY (f1,f4,f3,f2)
+) PARTITION BY RANGE(f1) ( PARTITION p VALUES LESS THAN MAXVALUE );
+INSERT IGNORE INTO t1 VALUES
+(140,0,0,7),(143,92,NULL,0),(0,0,NULL,154),(NULL,255,117,197),(0,0,NULL,0),(60,0,0,1);
+CREATE TABLE t2 (f INT);
+INSERT INTO t2 VALUES (NULL),(35),(NULL),(2);
+SELECT * FROM t1, t2 WHERE f4 >= f;
+f1 f2 f3 f4 f
+0 0 NULL 154 2
+0 0 NULL 154 35
+140 0 0 7 2
+NULL 255 117 197 2
+NULL 255 117 197 35
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/parts/r/optimizer.result b/mysql-test/suite/parts/r/optimizer.result
index cdf0b2b83dc..465c6c7d762 100644
--- a/mysql-test/suite/parts/r/optimizer.result
+++ b/mysql-test/suite/parts/r/optimizer.result
@@ -22,7 +22,7 @@ INSERT INTO t2 SELECT * FROM t1;
# plans should be identical
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 range a a 5 NULL 1 Using where; Using index for group-by
+1 SIMPLE t1 range a a 5 NULL 2 Using where; Using index
EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 range a a 5 NULL 2 Using where; Using index for group-by
@@ -33,7 +33,7 @@ a MAX(b)
# Should be no more than 4 reads.
SHOW status LIKE 'handler_read_key';
Variable_name Value
-Handler_read_key 4
+Handler_read_key 2
FLUSH status;
SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a;
a MAX(b)
diff --git a/mysql-test/suite/parts/r/partition_open.result b/mysql-test/suite/parts/r/partition_open.result
new file mode 100644
index 00000000000..98600d98ce3
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_open.result
@@ -0,0 +1,8 @@
+select * from t1 partition (p1);
+x
+300
+select * from t1 partition (p0);
+ERROR HY000: Can't find file: './test/t1.MYI' (errno: 2 "No such file or directory")
+drop table t1;
+Warnings:
+Warning 1017 Can't find file: './test/t1.MYI' (errno: 2 "No such file or directory")
diff --git a/mysql-test/suite/parts/t/cache.test b/mysql-test/suite/parts/t/cache.test
new file mode 100644
index 00000000000..fcf2ba5d6b6
--- /dev/null
+++ b/mysql-test/suite/parts/t/cache.test
@@ -0,0 +1,22 @@
+#
+# Test cases related to row cache
+#
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+CREATE TABLE t1 (f1 INT, f2 INT, f3 INT, f4 INT, KEY (f4),
+ KEY (f1,f4,f3,f2)
+) PARTITION BY RANGE(f1) ( PARTITION p VALUES LESS THAN MAXVALUE );
+
+INSERT IGNORE INTO t1 VALUES
+(140,0,0,7),(143,92,NULL,0),(0,0,NULL,154),(NULL,255,117,197),(0,0,NULL,0),(60,0,0,1);
+
+CREATE TABLE t2 (f INT);
+INSERT INTO t2 VALUES (NULL),(35),(NULL),(2);
+
+--sorted_result
+SELECT * FROM t1, t2 WHERE f4 >= f;
+
+# Cleanup
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/parts/t/partition_debug_innodb-master.opt b/mysql-test/suite/parts/t/partition_debug_innodb-master.opt
index 5253df4563a..4fa3cb12e29 100644
--- a/mysql-test/suite/parts/t/partition_debug_innodb-master.opt
+++ b/mysql-test/suite/parts/t/partition_debug_innodb-master.opt
@@ -1 +1 @@
---loose-innodb-file-format-check --loose-innodb-file-per-table=1 --skip-stack-trace --skip-core-file --loose-innodb-buffer-pool-size=32M
+--loose-innodb-file-per-table=1 --skip-stack-trace --skip-core-file --loose-innodb-buffer-pool-size=32M
diff --git a/mysql-test/suite/parts/t/partition_exch_qa_12.test b/mysql-test/suite/parts/t/partition_exch_qa_12.test
index 7e048f79017..80fd7ebba82 100644
--- a/mysql-test/suite/parts/t/partition_exch_qa_12.test
+++ b/mysql-test/suite/parts/t/partition_exch_qa_12.test
@@ -164,6 +164,7 @@ SELECT * FROM tsp_04;
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
#--error ER_TABLES_DIFFERENT_METADATA
#ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10 IGNORE;
+--sorted_result
SELECT TABLE_NAME, ROW_FORMAT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test'
AND TABLE_NAME IN ('tp', 't_100');
ALTER TABLE tp EXCHANGE PARTITION p1 WITH TABLE t_100;
diff --git a/mysql-test/suite/parts/t/partition_open.test b/mysql-test/suite/parts/t/partition_open.test
new file mode 100644
index 00000000000..de6873aacec
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_open.test
@@ -0,0 +1,24 @@
+#
+# MDEV-11084 Select statement with partition selection against MyISAM table opens all partitions.
+#
+--source include/have_partition.inc
+
+let $datadir=`select @@datadir`;
+
+# Table declared as having 2 partitions
+# create table t1 (x int) egine=myisam
+# partition by range columns (x)
+# ( partition p0 values less than (100), partition p1 values less than (1000));
+#
+# But we copy only second partition. So the 'p0' can't be opened.
+
+copy_file std_data/mdev11084.frm $datadir/test/t1.frm;
+copy_file std_data/mdev11084.par $datadir/test/t1.par;
+copy_file std_data/mdev11084.part1.MYD $datadir/test/t1#P#p1.MYD;
+copy_file std_data/mdev11084.part1.MYI $datadir/test/t1#P#p1.MYI;
+select * from t1 partition (p1);
+--replace_result $datadir ./
+--error ER_FILE_NOT_FOUND
+select * from t1 partition (p0);
+--replace_result $datadir ./
+drop table t1;
diff --git a/mysql-test/suite/percona/disabled.def b/mysql-test/suite/percona/disabled.def
deleted file mode 100644
index cd3fd72cc54..00000000000
--- a/mysql-test/suite/percona/disabled.def
+++ /dev/null
@@ -1,45 +0,0 @@
-percona_sync_flush: removed from XtraDB-26.0
-
-percona_suppress_log_warning_1592: Feature not merged into MariaDB
-percona_log_slow_slave_statements: Feature not merged into MariaDB
-percona_log_slow_slave_statements-and-use_global_long_query_time: Feature not merged into MariaDB
-percona_slow_query_log-control_global_slow: Feature not merged into MariaDB
-percona_slow_query_log-microseconds_in_slow_query_log: Feature not merged into MariaDB
-percona_query_cache_with_comments: Feature not merged into MariaDB
-percona_query_cache_with_comments_prepared_statements: Feature not merged into MariaDB
-percona_show_temp_tables: Feature not merged into MariaDB
-percona_slow_query_log-use_global_long_query_time: Feature not merged into MariaDB
-percona_query_cache_with_comments_disable: Feature not merged into MariaDB
-percona_log_connection_error: Feature not merged into MariaDB
-percona_query_response_time: Feature not merged into MariaDB
-percona_query_response_time-stored: Feature not merged into MariaDB
-percona_sql_no_fcache: Feature not merged into MariaDB
-percona_status_wait_query_cache_mutex: Feature not merged into MariaDB
-percona_slave_innodb_stats: Feature not merged into MariaDB
-percona_query_response_time-replication: Feature not merged into MariaDB
-percona_server_variables_debug: Feature not merged into MariaDB
-percona_server_variables_release: Feature not merged into MariaDB
-percona_slow_query_log-log_slow_verbosity: InnoDB filtering information not fully merged into MariaDB
-percona_innodb_buffer_pool_shm: Requires big shmmax not default on many systems
-percona_log_warnings_suppress: Feature not merged into MariaDB
-percona_slow_extended-log_slow_sp_statements-cl: Feature not merged into MariaDB
-percona_slow_extended-log_slow_verbosity-cl: Feature not merged into MariaDB
-slow_query_log_use_global_control: Feature not merged into MariaDB
-percona_slow_extended-use_global_control: Feature not merged into MariaDB
-percona_slow_query_log-log_slow_verbosity: Feature not merged into MariaDB
-percona_slow_extended-log_slow_verbosity: Feature not merged into MariaDB
-percona_slow_extended-microseconds_in_slow_extended: Feature not merged into MariaDB
-percona_slow_extended-use_global_long_query_time: Feature not merged into MariaDB
-percona_slow_extended-slow_query_log_timestamp_always-cl: Feature not merged into MariaDB
-percona_slow_extended-slow_query_log_microseconds_timestamp-cl: Feature not merged into MariaDB
-percona_bug643149: Feature not merged into MariaDB
-percona_processlist_row_stats: Feature not merged into MariaDB
-percona_server_variables_debug: Feature not merged into MariaDB
-percona_slow_extended-slave_statements: Feature not merged into MariaDB
-percona_show_slave_status_nolock: Feature not merged into MariaDB
-percona_slow_extended-slave_innodb_stats: Feature not merged into MariaDB
-percona_slow_extended-slave_statements-and-use_global_long_query_time: Feature not merged into MariaDB
-userstat_bug602047: Feature not merged into MariaDB
-percona_innodb_expand_fast_index_creation: Feature not merged into MariaDB
-percona_innodb_kill_idle_trx: Feature not merged into MariaDB
-percona_innodb_kill_idle_trx_locks: Feature not merged into MariaDB
diff --git a/mysql-test/suite/percona/have_response_time_distribution.inc b/mysql-test/suite/percona/have_response_time_distribution.inc
deleted file mode 100644
index 45650133b31..00000000000
--- a/mysql-test/suite/percona/have_response_time_distribution.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-if (`SELECT @@have_response_time_distribution != 'YES'`)
-{
- --skip No response time distribution
-}
diff --git a/mysql-test/suite/percona/have_response_time_distribution.require b/mysql-test/suite/percona/have_response_time_distribution.require
deleted file mode 100644
index fd7196830ff..00000000000
--- a/mysql-test/suite/percona/have_response_time_distribution.require
+++ /dev/null
@@ -1,2 +0,0 @@
-Variable_name Value
-have_response_time_distribution YES
diff --git a/mysql-test/suite/percona/innodb_sys_index.result b/mysql-test/suite/percona/innodb_sys_index.result
deleted file mode 100644
index 2bf2d576086..00000000000
--- a/mysql-test/suite/percona/innodb_sys_index.result
+++ /dev/null
@@ -1,11 +0,0 @@
-SELECT COUNT(*) FROM `information_schema`.`INNODB_SYS_INDEXES` ;
-CREATE TABLE test.t1 ( `a` SERIAL NOT NULL , `b` VARCHAR( 255 ) NOT NULL , INDEX ( `b` ) ) ENGINE = InnoDB ;
-SHOW TABLE STATUS FROM `information_schema` LIKE 'INNODB\_SYS\_INDEXES%' ;
-drop table test.t1;
-SHOW TABLE STATUS FROM `information_schema` LIKE 'INNODB\_SYS\_INDEXES%' ;
-SELECT COUNT(*) FROM `information_schema`.`INNODB_SYS_INDEXES` ;
-CREATE TABLE test.t1 ( `a` SERIAL NOT NULL , `b` VARCHAR( 255 ) NOT NULL , INDEX ( `b` ) ) ENGINE = InnoDB ;
-SHOW TABLE STATUS FROM `information_schema` LIKE 'INNODB\_SYS\_INDEXES%' ;
-SELECT COUNT(*) FROM `information_schema`.`INNODB_SYS_INDEXES` ;
-drop table test.t1;
-SHOW TABLE STATUS FROM `information_schema` LIKE 'INNODB\_SYS\_INDEXES%' ;
diff --git a/mysql-test/suite/percona/innodb_sys_index.test b/mysql-test/suite/percona/innodb_sys_index.test
deleted file mode 100644
index 8e242bda98e..00000000000
--- a/mysql-test/suite/percona/innodb_sys_index.test
+++ /dev/null
@@ -1,19 +0,0 @@
---source include/big_test.inc
---source include/have_xtradb.inc
-
-#
-# test for bug LP#875797 "Using 'innodb_sys_indexes' causes core dump"
-#
---disable_result_log
-SELECT COUNT(*) FROM `information_schema`.`INNODB_SYS_INDEXES` ;
-CREATE TABLE test.t1 ( `a` SERIAL NOT NULL , `b` VARCHAR( 255 ) NOT NULL , INDEX ( `b` ) ) ENGINE = InnoDB ;
-SHOW TABLE STATUS FROM `information_schema` LIKE 'INNODB\_SYS\_INDEXES%' ;
-drop table test.t1;
-SHOW TABLE STATUS FROM `information_schema` LIKE 'INNODB\_SYS\_INDEXES%' ;
-SELECT COUNT(*) FROM `information_schema`.`INNODB_SYS_INDEXES` ;
-CREATE TABLE test.t1 ( `a` SERIAL NOT NULL , `b` VARCHAR( 255 ) NOT NULL , INDEX ( `b` ) ) ENGINE = InnoDB ;
-SHOW TABLE STATUS FROM `information_schema` LIKE 'INNODB\_SYS\_INDEXES%' ;
-SELECT COUNT(*) FROM `information_schema`.`INNODB_SYS_INDEXES` ;
-drop table test.t1;
-SHOW TABLE STATUS FROM `information_schema` LIKE 'INNODB\_SYS\_INDEXES%' ;
---enable_result_log
diff --git a/mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error-master.opt b/mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error-master.opt
deleted file mode 100644
index 4658d62af60..00000000000
--- a/mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---log-error
diff --git a/mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error.result b/mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error.result
deleted file mode 100644
index 352c9ca2a99..00000000000
--- a/mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error.result
+++ /dev/null
@@ -1,16 +0,0 @@
-SET @old_max_connections = @@max_connections;
-SET @old_log_warnings = @@log_warnings;
-SET GLOBAL max_connections=2;
-SET GLOBAL LOG_WARNINGS = 0;
-connect(localhost,root,,test,port,socket);
-ERROR HY000: Too many connections
-SET GLOBAL LOG_WARNINGS = 1;
-connect(localhost,root,,test,port,socket);
-ERROR HY000: Too many connections
-SET GLOBAL LOG_WARNINGS = 0;
-connect(localhost,root,,test,port,socket);
-ERROR HY000: Too many connections
-SET GLOBAL max_connections = @old_max_connections;
-SET GLOBAL log_warnings = @old_log_warnings;
-[log_grep.inc] file: percona.log_connection_error.err pattern: Too many connections
-[log_grep.inc] lines: 1
diff --git a/mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error.test b/mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error.test
deleted file mode 100644
index 048102d0499..00000000000
--- a/mysql-test/suite/percona/log_connection_error.patch/percona_log_connection_error.test
+++ /dev/null
@@ -1,54 +0,0 @@
---source include/not_embedded.inc
-
-connect (main,localhost,root,,);
-connection main;
-SET @old_max_connections = @@max_connections;
-SET @old_log_warnings = @@log_warnings;
-SET GLOBAL max_connections=2;
-let $port=`SELECT Variable_value FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE Variable_name LIKE 'port'`;
-let $socket=`SELECT Variable_value FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE Variable_name LIKE 'socket'`;
-
-SET GLOBAL LOG_WARNINGS = 0;
---connect (conn0,localhost,root,,)
-connection conn0;
-replace_result $port port $socket socket;
---error 1040
---connect(conn1,localhost,root,,)
-disconnect conn0;
-SLEEP 0.1; # tsarev: hack, but i don't know (and didn't find) how right
-
-connection main;
-SET GLOBAL LOG_WARNINGS = 1;
---connect (conn1,localhost,root,,)
-replace_result $port port $socket socket;
---error 1040
---connect (conn0,localhost,root,,)
-disconnect conn1;
-SLEEP 0.1; # tsarev: hack, but i don't know (and didn't find) how right
-
-connection main;
-SET GLOBAL LOG_WARNINGS = 0;
---connect (conn0,localhost,root,,)
-replace_result $port port $socket socket;
---error 1040
---connect(conn1,localhost,root,,)
-disconnect conn0;
-SLEEP 0.1; # tsarev: hack, but i don't know (and didn't find) how right
-
-connection main;
-SET GLOBAL max_connections = @old_max_connections;
-SET GLOBAL log_warnings = @old_log_warnings;
-let $log_error_= `SELECT @@GLOBAL.log_error`;
-if(!`select LENGTH('$log_error_')`)
-{
- # MySQL Server on windows is started with --console and thus
- # does not know the location of its .err log, use default location
- let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err;
-}
-
---let log_error=$log_error_
---let log_file=percona.log_connection_error.err
---let log_file_full_path=$log_error
---let grep_pattern= Too many connections
---source log_grep.inc
-
diff --git a/mysql-test/suite/percona/percona_flush_contiguous_neighbors-master.opt b/mysql-test/suite/percona/percona_flush_contiguous_neighbors-master.opt
deleted file mode 100644
index f61926581b7..00000000000
--- a/mysql-test/suite/percona/percona_flush_contiguous_neighbors-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---loose-innodb_flush_neighbor_pages=cont
diff --git a/mysql-test/suite/percona/percona_flush_contiguous_neighbors.result b/mysql-test/suite/percona/percona_flush_contiguous_neighbors.result
deleted file mode 100644
index 8c6b81f0848..00000000000
--- a/mysql-test/suite/percona/percona_flush_contiguous_neighbors.result
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (id INT AUTO_INCREMENT, foo CHAR(255), PRIMARY KEY (id)) ENGINE=InnoDB;
-INSERT INTO t1(foo) VALUES ('a'), ('b');
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-DROP TABLE t1;
diff --git a/mysql-test/suite/percona/percona_flush_contiguous_neighbors.test b/mysql-test/suite/percona/percona_flush_contiguous_neighbors.test
deleted file mode 100644
index 728081fc493..00000000000
--- a/mysql-test/suite/percona/percona_flush_contiguous_neighbors.test
+++ /dev/null
@@ -1,37 +0,0 @@
-# Test for innodb_flush_neighbor_pages=contiguous.
-# The test is very crude: we simply overflow the buffer pool with such a number of
-# new/modified pages that some flushing is bound to happen.
-
---source include/have_xtradb.inc
---source include/big_test.inc
-
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-
-CREATE TABLE t1 (id INT AUTO_INCREMENT, foo CHAR(255), PRIMARY KEY (id)) ENGINE=InnoDB;
-
-INSERT INTO t1(foo) VALUES ('a'), ('b');
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-INSERT INTO t1(foo) SELECT foo FROM t1;
-
-# TODO: cannot record a stable value here. A check of > 0 should be enough,
-# but the variable is not accessible through INFORMATION_SCHEMA currently.
-# SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_flushed';
-
-DROP TABLE t1;
diff --git a/mysql-test/suite/percona/percona_innodb_buffer_pool_shm-master.opt b/mysql-test/suite/percona/percona_innodb_buffer_pool_shm-master.opt
deleted file mode 100644
index 5974ef6e2be..00000000000
--- a/mysql-test/suite/percona/percona_innodb_buffer_pool_shm-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---innodb_buffer_pool_shm_key=123456
diff --git a/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.result b/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.result
deleted file mode 100644
index e5373606099..00000000000
--- a/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.result
+++ /dev/null
@@ -1,4 +0,0 @@
-show variables like 'innodb_buffer_pool_shm%';
-Variable_name Value
-innodb_buffer_pool_shm_checksum ON
-innodb_buffer_pool_shm_key 123456
diff --git a/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.test b/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.test
deleted file mode 100644
index 7b26c217893..00000000000
--- a/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.test
+++ /dev/null
@@ -1,2 +0,0 @@
---source include/have_xtradb.inc
-show variables like 'innodb_buffer_pool_shm%';
diff --git a/mysql-test/suite/percona/percona_innodb_deadlock_count.result b/mysql-test/suite/percona/percona_innodb_deadlock_count.result
deleted file mode 100644
index b2af780778d..00000000000
--- a/mysql-test/suite/percona/percona_innodb_deadlock_count.result
+++ /dev/null
@@ -1,28 +0,0 @@
-connect con1,localhost,root,,;
-connect con2,localhost,root,,;
-connect con3,localhost,root,,;
-# Drop test table
-drop table if exists t;
-# Create test table
-create table t(a INT PRIMARY KEY, b INT) engine=InnoDB;
-# Insert two rows to test table
-insert into t values(2,1);
-insert into t values(1,2);
-connection con1;
-BEGIN;
-SELECT b FROM t WHERE a=1 FOR UPDATE;
-connection con2;
-BEGIN;
-SELECT b FROM t WHERE a=2 FOR UPDATE;
-connection con1;
-SELECT b FROM t WHERE a=2 FOR UPDATE;
-connection con2;
-SELECT b FROM t WHERE a=1 FOR UPDATE;
-connection con1;
-ROLLBACK;
-connection con2;
-ROLLBACK;
-connection con3;
-Deadlocks: 1
-# Drop test table
-drop table t;
diff --git a/mysql-test/suite/percona/percona_innodb_deadlock_count.test b/mysql-test/suite/percona/percona_innodb_deadlock_count.test
deleted file mode 100644
index da1273bc038..00000000000
--- a/mysql-test/suite/percona/percona_innodb_deadlock_count.test
+++ /dev/null
@@ -1,51 +0,0 @@
---source include/have_xtradb.inc
-connect (con1,localhost,root,,);
-connect (con2,localhost,root,,);
-connect (con3,localhost,root,,);
---echo # Drop test table
---disable_warnings
-drop table if exists t;
---enable_warnings
-
---echo # Create test table
-create table t(a INT PRIMARY KEY, b INT) engine=InnoDB;
---echo # Insert two rows to test table
-insert into t values(2,1);
-insert into t values(1,2);
-
-#--echo # Save current deadlock count
-let $current = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_deadlocks'`;
-
---disable_result_log
-
-connection con1;
-BEGIN; SELECT b FROM t WHERE a=1 FOR UPDATE;
-
-connection con2;
-BEGIN; SELECT b FROM t WHERE a=2 FOR UPDATE;
-
-connection con1;
-SEND SELECT b FROM t WHERE a=2 FOR UPDATE;
-
-connection con2;
-SEND SELECT b FROM t WHERE a=1 FOR UPDATE;
-
-connection con1;
---error 0, ER_LOCK_DEADLOCK
-reap;
-ROLLBACK;
-
-connection con2;
---error 0, ER_LOCK_DEADLOCK
-reap;
-ROLLBACK;
-
-connection con3;
-let $result = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_deadlocks'`;
-
---enable_result_log
-
-let $diff = `SELECT $result - $current`;
-echo Deadlocks: $diff;
---echo # Drop test table
-drop table t;
diff --git a/mysql-test/suite/percona/percona_innodb_expand_fast_index_creation.result b/mysql-test/suite/percona/percona_innodb_expand_fast_index_creation.result
deleted file mode 100644
index b8cec3d4398..00000000000
--- a/mysql-test/suite/percona/percona_innodb_expand_fast_index_creation.result
+++ /dev/null
@@ -1,64 +0,0 @@
-CREATE TABLE t1(
-id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-a CHAR(1) NOT NULL,
-b CHAR(36) NOT NULL) ENGINE=InnoDB;
-INSERT INTO t1(a,b) VALUES ('a','b');
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-ALTER TABLE t1 ADD KEY (a);
-affected rows: 0
-info: Records: 0 Duplicates: 0 Warnings: 0
-EXPLAIN SELECT COUNT(*) FROM t1, t1 t2 WHERE t1.a = t2.a AND t1.b = t2.b;
-id 1
-select_type SIMPLE
-table t1
-type ALL
-possible_keys a
-key NULL
-key_len NULL
-ref NULL
-rows 16
-Extra
-id 1
-select_type SIMPLE
-table t2
-type ref
-possible_keys a
-key a
-key_len 1
-ref test.t1.a
-rows 1
-Extra Using where
-ALTER TABLE t1 DROP KEY a;
-SET expand_fast_index_creation = 1;
-SELECT @@expand_fast_index_creation;
-@@expand_fast_index_creation
-1
-ALTER TABLE t1 ADD KEY (a);
-affected rows: 0
-info: Records: 0 Duplicates: 0 Warnings: 0
-EXPLAIN SELECT COUNT(*) FROM t1, t1 t2 WHERE t1.a = t2.a AND t1.b = t2.b;
-id 1
-select_type SIMPLE
-table t1
-type ALL
-possible_keys a
-key NULL
-key_len NULL
-ref NULL
-rows 16
-Extra
-id 1
-select_type SIMPLE
-table t2
-type ALL
-possible_keys a
-key NULL
-key_len NULL
-ref NULL
-rows 16
-Extra Using where; Using join buffer
-SET expand_fast_index_creation = 0;
-DROP TABLE t1;
diff --git a/mysql-test/suite/percona/percona_innodb_expand_fast_index_creation.test b/mysql-test/suite/percona/percona_innodb_expand_fast_index_creation.test
deleted file mode 100644
index 06e6c719c17..00000000000
--- a/mysql-test/suite/percona/percona_innodb_expand_fast_index_creation.test
+++ /dev/null
@@ -1,45 +0,0 @@
---source include/have_innodb.inc
-
-########################################################################
-# Bug #857590: Fast index creation does not update index statistics
-########################################################################
-
-CREATE TABLE t1(
- id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
- a CHAR(1) NOT NULL,
- b CHAR(36) NOT NULL) ENGINE=InnoDB;
-
-INSERT INTO t1(a,b) VALUES ('a','b');
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-
-# Check that fast index creation is used
---enable_info
-ALTER TABLE t1 ADD KEY (a);
---disable_info
-
-# The default (wrong) plan due to bogus statistics
---vertical_results
-EXPLAIN SELECT COUNT(*) FROM t1, t1 t2 WHERE t1.a = t2.a AND t1.b = t2.b;
---horizontal_results
-
-ALTER TABLE t1 DROP KEY a;
-
-SET expand_fast_index_creation = 1;
-SELECT @@expand_fast_index_creation;
-
-# Check that stats are updated with the option enabled
-
---enable_info
-ALTER TABLE t1 ADD KEY (a);
---disable_info
-
---vertical_results
-EXPLAIN SELECT COUNT(*) FROM t1, t1 t2 WHERE t1.a = t2.a AND t1.b = t2.b;
---horizontal_results
-
-SET expand_fast_index_creation = 0;
-
-DROP TABLE t1;
diff --git a/mysql-test/suite/percona/percona_innodb_fake_changes.result b/mysql-test/suite/percona/percona_innodb_fake_changes.result
deleted file mode 100644
index 1b870fdbb92..00000000000
--- a/mysql-test/suite/percona/percona_innodb_fake_changes.result
+++ /dev/null
@@ -1,55 +0,0 @@
-DROP TABLE IF EXISTS t1;
-# Checking variables
-SHOW VARIABLES LIKE 'innodb_fake_changes';
-Variable_name Value
-innodb_fake_changes OFF
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_fake_changes';
-VARIABLE_VALUE
-OFF
-SET innodb_fake_changes=1;
-SHOW VARIABLES LIKE 'innodb_fake_changes';
-Variable_name Value
-innodb_fake_changes ON
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_fake_changes';
-VARIABLE_VALUE
-ON
-SET innodb_fake_changes=default;
-SHOW VARIABLES LIKE 'innodb_fake_changes';
-Variable_name Value
-innodb_fake_changes OFF
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_fake_changes';
-VARIABLE_VALUE
-OFF
-# Explicit COMMIT should fail when innodb_fake_changes is enabled
-# DML should be fine
-CREATE TABLE t1 (a INT) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-SET autocommit=0;
-SET innodb_fake_changes=1;
-BEGIN;
-INSERT INTO t1 VALUES (2);
-UPDATE t1 SET a=0;
-DELETE FROM t1 LIMIT 1;
-SELECT * FROM t1;
-a
-1
-COMMIT;
-ERROR HY000: Got error 131 "Command not supported by database" during COMMIT
-SET innodb_fake_changes=default;
-DROP TABLE t1;
-# DDL must result in error
-CREATE TABLE t1 (a INT) ENGINE=InnoDB;
-SET autocommit=0;
-SET innodb_fake_changes=1;
-BEGIN;
-CREATE TABLE t2 (a INT) ENGINE=InnoDB;
-ERROR HY000: Can't create table `test`.`t2` (errno: 131 "Command not supported by database")
-DROP TABLE t1;
-ERROR HY000: Storage engine InnoDB of the table `test`.`t1` doesn't have this option
-TRUNCATE TABLE t1;
-ERROR HY000: Got error 131 "Command not supported by database" during COMMIT
-ALTER TABLE t1 ENGINE=MyISAM;
-ERROR HY000: Got error 131 "Command not supported by database" during COMMIT
-ROLLBACK;
-SET innodb_fake_changes=default;
-DROP TABLE t1;
diff --git a/mysql-test/suite/percona/percona_innodb_fake_changes.test b/mysql-test/suite/percona/percona_innodb_fake_changes.test
deleted file mode 100644
index 67f5450ba45..00000000000
--- a/mysql-test/suite/percona/percona_innodb_fake_changes.test
+++ /dev/null
@@ -1,49 +0,0 @@
---source include/have_xtradb.inc
-
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-
-
---echo # Checking variables
-SHOW VARIABLES LIKE 'innodb_fake_changes';
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_fake_changes';
-SET innodb_fake_changes=1;
-SHOW VARIABLES LIKE 'innodb_fake_changes';
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_fake_changes';
-SET innodb_fake_changes=default;
-SHOW VARIABLES LIKE 'innodb_fake_changes';
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_fake_changes';
-
---echo # Explicit COMMIT should fail when innodb_fake_changes is enabled
---echo # DML should be fine
-CREATE TABLE t1 (a INT) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-SET autocommit=0;
-SET innodb_fake_changes=1;
-BEGIN;
-INSERT INTO t1 VALUES (2);
-UPDATE t1 SET a=0;
-DELETE FROM t1 LIMIT 1;
-SELECT * FROM t1;
---error 1180
-COMMIT;
-SET innodb_fake_changes=default;
-DROP TABLE t1;
-
---echo # DDL must result in error
-CREATE TABLE t1 (a INT) ENGINE=InnoDB;
-SET autocommit=0;
-SET innodb_fake_changes=1;
-BEGIN;
---error 1005
-CREATE TABLE t2 (a INT) ENGINE=InnoDB;
---error 1031
-DROP TABLE t1;
---error 1180
-TRUNCATE TABLE t1;
---error 1180
-ALTER TABLE t1 ENGINE=MyISAM;
-ROLLBACK;
-SET innodb_fake_changes=default;
-DROP TABLE t1;
diff --git a/mysql-test/suite/percona/percona_innodb_fake_changes_locks.result b/mysql-test/suite/percona/percona_innodb_fake_changes_locks.result
deleted file mode 100644
index 233b55b8ac4..00000000000
--- a/mysql-test/suite/percona/percona_innodb_fake_changes_locks.result
+++ /dev/null
@@ -1,23 +0,0 @@
-DROP TABLE IF EXISTS t1;
-# Verifying that X_LOCK not acquired
-CREATE TABLE t1 (a INT) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-connect conn1,localhost,root,,;
-connection conn1;
-SET autocommit=0;
-SET innodb_fake_changes=1;
-BEGIN;
-SELECT * FROM t1 FOR UPDATE;
-a
-1
-connection default;
-SET innodb_lock_wait_timeout=3;
-UPDATE t1 SET a=2;
-ERROR HY000: Lock wait timeout exceeded; try restarting transaction
-SELECT * FROM t1 LOCK IN SHARE MODE;
-a
-1
-connection conn1;
-ROLLBACK;
-SET innodb_fake_changes=default;
-DROP TABLE t1;
diff --git a/mysql-test/suite/percona/percona_innodb_fake_changes_locks.test b/mysql-test/suite/percona/percona_innodb_fake_changes_locks.test
deleted file mode 100644
index ce15fc0bf43..00000000000
--- a/mysql-test/suite/percona/percona_innodb_fake_changes_locks.test
+++ /dev/null
@@ -1,24 +0,0 @@
---source include/have_xtradb.inc
-
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-
---echo # Verifying that X_LOCK not acquired
-CREATE TABLE t1 (a INT) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
---connect (conn1,localhost,root,,)
---connection conn1
-SET autocommit=0;
-SET innodb_fake_changes=1;
-BEGIN;
-SELECT * FROM t1 FOR UPDATE;
---connection default
-SET innodb_lock_wait_timeout=3;
---error 1205
-UPDATE t1 SET a=2;
-SELECT * FROM t1 LOCK IN SHARE MODE;
---connection conn1
-ROLLBACK;
-SET innodb_fake_changes=default;
-DROP TABLE t1;
diff --git a/mysql-test/suite/percona/percona_innodb_kill_idle_trx.result b/mysql-test/suite/percona/percona_innodb_kill_idle_trx.result
deleted file mode 100644
index a05b5a912fe..00000000000
--- a/mysql-test/suite/percona/percona_innodb_kill_idle_trx.result
+++ /dev/null
@@ -1,41 +0,0 @@
-DROP TABLE IF EXISTS t1;
-SET autocommit=0;
-CREATE TABLE t1 (a INT) ENGINE=InnoDB;
-SHOW GLOBAL VARIABLES LIKE 'innodb_kill_idle_transaction';
-Variable_name Value
-innodb_kill_idle_transaction 0
-SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_kill_idle_transaction';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_KILL_IDLE_TRANSACTION 0
-SET GLOBAL innodb_kill_idle_transaction=1;
-SHOW GLOBAL VARIABLES LIKE 'innodb_kill_idle_transaction';
-Variable_name Value
-innodb_kill_idle_transaction 1
-SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_kill_idle_transaction';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_KILL_IDLE_TRANSACTION 1
-BEGIN;
-INSERT INTO t1 VALUES (1),(2),(3);
-COMMIT;
-SELECT * FROM t1;
-a
-1
-2
-3
-BEGIN;
-INSERT INTO t1 VALUES (4),(5),(6);
-SELECT * FROM t1;
-ERROR HY000: MySQL server has gone away
-SELECT * FROM t1;
-a
-1
-2
-3
-DROP TABLE t1;
-SET GLOBAL innodb_kill_idle_transaction=0;
-SHOW GLOBAL VARIABLES LIKE 'innodb_kill_idle_transaction';
-Variable_name Value
-innodb_kill_idle_transaction 0
-SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_kill_idle_transaction';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_KILL_IDLE_TRANSACTION 0
diff --git a/mysql-test/suite/percona/percona_innodb_kill_idle_trx.test b/mysql-test/suite/percona/percona_innodb_kill_idle_trx.test
deleted file mode 100644
index e1b7b778a31..00000000000
--- a/mysql-test/suite/percona/percona_innodb_kill_idle_trx.test
+++ /dev/null
@@ -1,28 +0,0 @@
---source include/have_innodb.inc
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-
-SET autocommit=0;
-CREATE TABLE t1 (a INT) ENGINE=InnoDB;
-
---source percona_innodb_kill_idle_trx_show.inc
-SET GLOBAL innodb_kill_idle_transaction=1;
---source percona_innodb_kill_idle_trx_show.inc
-
-BEGIN;
-INSERT INTO t1 VALUES (1),(2),(3);
-COMMIT;
-SELECT * FROM t1;
-
-BEGIN;
-INSERT INTO t1 VALUES (4),(5),(6);
-sleep 3;
-
---enable_reconnect
---error 2006 --error CR_SERVER_GONE_ERROR
-SELECT * FROM t1;
-SELECT * FROM t1;
-DROP TABLE t1;
-SET GLOBAL innodb_kill_idle_transaction=0;
---source percona_innodb_kill_idle_trx_show.inc
diff --git a/mysql-test/suite/percona/percona_innodb_kill_idle_trx_locks.result b/mysql-test/suite/percona/percona_innodb_kill_idle_trx_locks.result
deleted file mode 100644
index 6bdd2617805..00000000000
--- a/mysql-test/suite/percona/percona_innodb_kill_idle_trx_locks.result
+++ /dev/null
@@ -1,45 +0,0 @@
-DROP TABLE IF EXISTS t1;
-SET autocommit=0;
-CREATE TABLE t1 (a INT) ENGINE=InnoDB;
-SHOW GLOBAL VARIABLES LIKE 'innodb_kill_idle_transaction';
-Variable_name Value
-innodb_kill_idle_transaction 0
-SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_kill_idle_transaction';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_KILL_IDLE_TRANSACTION 0
-SET GLOBAL innodb_kill_idle_transaction=5;
-SHOW GLOBAL VARIABLES LIKE 'innodb_kill_idle_transaction';
-Variable_name Value
-innodb_kill_idle_transaction 5
-SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_kill_idle_transaction';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_KILL_IDLE_TRANSACTION 5
-BEGIN;
-INSERT INTO t1 VALUES (1),(2),(3);
-COMMIT;
-SELECT * FROM t1;
-a
-1
-2
-3
-### Locking rows. Lock should be released when idle trx is killed.
-BEGIN;
-SELECT * FROM t1 FOR UPDATE;
-a
-1
-2
-3
-UPDATE t1 set a=4;
-SELECT * FROM t1;
-a
-4
-4
-4
-DROP TABLE t1;
-SET GLOBAL innodb_kill_idle_transaction=0;
-SHOW GLOBAL VARIABLES LIKE 'innodb_kill_idle_transaction';
-Variable_name Value
-innodb_kill_idle_transaction 0
-SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_kill_idle_transaction';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_KILL_IDLE_TRANSACTION 0
diff --git a/mysql-test/suite/percona/percona_innodb_kill_idle_trx_locks.test b/mysql-test/suite/percona/percona_innodb_kill_idle_trx_locks.test
deleted file mode 100644
index c283f38de42..00000000000
--- a/mysql-test/suite/percona/percona_innodb_kill_idle_trx_locks.test
+++ /dev/null
@@ -1,31 +0,0 @@
---source include/have_innodb.inc
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-
-SET autocommit=0;
-CREATE TABLE t1 (a INT) ENGINE=InnoDB;
-
---source percona_innodb_kill_idle_trx_show.inc
-SET GLOBAL innodb_kill_idle_transaction=5;
---source percona_innodb_kill_idle_trx_show.inc
-
-connect (conn1,localhost,root,,);
-connection conn1;
-
-BEGIN;
-INSERT INTO t1 VALUES (1),(2),(3);
-COMMIT;
-SELECT * FROM t1;
-
---echo ### Locking rows. Lock should be released when idle trx is killed.
-BEGIN;
-SELECT * FROM t1 FOR UPDATE;
-
-connection default;
-UPDATE t1 set a=4;
-
-SELECT * FROM t1;
-DROP TABLE t1;
-SET GLOBAL innodb_kill_idle_transaction=0;
---source percona_innodb_kill_idle_trx_show.inc
diff --git a/mysql-test/suite/percona/percona_innodb_kill_idle_trx_show.inc b/mysql-test/suite/percona/percona_innodb_kill_idle_trx_show.inc
deleted file mode 100644
index c85c0311c81..00000000000
--- a/mysql-test/suite/percona/percona_innodb_kill_idle_trx_show.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-SHOW GLOBAL VARIABLES LIKE 'innodb_kill_idle_transaction';
-SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_kill_idle_transaction';
diff --git a/mysql-test/suite/percona/percona_log_warnings_suppress-master.opt b/mysql-test/suite/percona/percona_log_warnings_suppress-master.opt
deleted file mode 100644
index 4658d62af60..00000000000
--- a/mysql-test/suite/percona/percona_log_warnings_suppress-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---log-error
diff --git a/mysql-test/suite/percona/percona_log_warnings_suppress.result b/mysql-test/suite/percona/percona_log_warnings_suppress.result
deleted file mode 100644
index 1ee6c46738a..00000000000
--- a/mysql-test/suite/percona/percona_log_warnings_suppress.result
+++ /dev/null
@@ -1,31 +0,0 @@
-SET @old_log_warnings = @@log_warnings;
-SET @old_log_warnings_suppress = @@log_warnings_suppress;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(20));
-SET GLOBAL log_warnings_suppress='';
-SET GLOBAL LOG_WARNINGS=0;
-SHOW GLOBAL VARIABLES LIKE 'log_warnings_suppress';
-Variable_name Value
-log_warnings_suppress
-INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
-Warnings:
-Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
-SET GLOBAL LOG_WARNINGS=1;
-INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
-Warnings:
-Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
-SET GLOBAL log_warnings_suppress='1592';
-SET GLOBAL LOG_WARNINGS=0;
-INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
-Warnings:
-Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
-SET GLOBAL LOG_WARNINGS=1;
-INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
-Warnings:
-Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
-DROP TABLE t1;
-SET GLOBAL log_warnings = @old_log_warnings;
-SET GLOBAL log_warnings_suppress = @old_log_warnings_suppress;
-# Count the number of times the "Unsafe" message was printed
-# to the error log.
-Occurrences: 1
diff --git a/mysql-test/suite/percona/percona_log_warnings_suppress.test b/mysql-test/suite/percona/percona_log_warnings_suppress.test
deleted file mode 100644
index 82221013f0b..00000000000
--- a/mysql-test/suite/percona/percona_log_warnings_suppress.test
+++ /dev/null
@@ -1,47 +0,0 @@
--- source include/have_log_bin.inc
--- source include/have_binlog_format_statement.inc
-
-SET @old_log_warnings = @@log_warnings;
-SET @old_log_warnings_suppress = @@log_warnings_suppress;
-
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(20));
-SET GLOBAL log_warnings_suppress='';
-SET GLOBAL LOG_WARNINGS=0;
-SHOW GLOBAL VARIABLES LIKE 'log_warnings_suppress';
-INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
-SET GLOBAL LOG_WARNINGS=1;
-INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
-SET GLOBAL log_warnings_suppress='1592';
-SET GLOBAL LOG_WARNINGS=0;
-INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
-SET GLOBAL LOG_WARNINGS=1;
-INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
-DROP TABLE t1;
-
-SET GLOBAL log_warnings = @old_log_warnings;
-SET GLOBAL log_warnings_suppress = @old_log_warnings_suppress;
-
-let $log_error_= `SELECT @@GLOBAL.log_error`;
-if(!`select LENGTH('$log_error_')`)
-{
- # MySQL Server on windows is started with --console and thus
- # does not know the location of its .err log, use default location
- let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err;
-}
-# Assign env variable LOG_ERROR
-let LOG_ERROR=$log_error_;
-
---echo # Count the number of times the "Unsafe" message was printed
---echo # to the error log.
-
-perl;
- use strict;
- my $log_error= $ENV{'LOG_ERROR'} or die "LOG_ERROR not set";
- open(FILE, "$log_error") or die("Unable to open $log_error: $!\n");
- my $count = () = grep(/suppress_1592/g,<FILE>);
- print "Occurrences: $count\n";
- close(FILE);
-EOF
diff --git a/mysql-test/suite/percona/percona_processlist_row_stats.result b/mysql-test/suite/percona/percona_processlist_row_stats.result
deleted file mode 100644
index 109b6a912d9..00000000000
--- a/mysql-test/suite/percona/percona_processlist_row_stats.result
+++ /dev/null
@@ -1,70 +0,0 @@
-DROP TABLE IF EXISTS t1;
-DROP TABLE IF EXISTS t2;
-CREATE TABLE t2 (a INT);
-INSERT INTO t2 VALUES(10);
-INSERT INTO t2 VALUES(10);
-INSERT INTO t2 VALUES(20);
-INSERT INTO t2 VALUES(10);
-INSERT INTO t2 VALUES(20);
-SET DEBUG_SYNC= 'locked_table_name SIGNAL thread1_ready WAIT_FOR threads_dumped';
-CREATE TABLE t1 (a INT);
-SET DEBUG_SYNC= 'now WAIT_FOR thread1_ready';
-SET DEBUG_SYNC= 'execute_command_after_close_tables SIGNAL thread2_ready WAIT_FOR threads_dumped';
-SELECT a FROM t2 WHERE a > 15;
-SET DEBUG_SYNC= 'now WAIT_FOR thread2_ready';
-SHOW PROCESSLIST;
-Id User Host db Command Time State Info Rows_sent Rows_examined Rows_read
-### root ### test Query ### ### SHOW PROCESSLIST 0 0 2
-### root ### test Query ### ### CREATE TABLE t1 (a INT) 0 0 1
-### root ### test Query ### ### SELECT a FROM t2 WHERE a > 15 2 5 6
-SELECT id, info, rows_sent, rows_examined, rows_read FROM INFORMATION_SCHEMA.PROCESSLIST ORDER BY id;
-id info rows_sent rows_examined rows_read
-### SELECT id, info, rows_sent, rows_examined, rows_read FROM INFORMATION_SCHEMA.PROCESSLIST ORDER BY id 0 0 1
-### CREATE TABLE t1 (a INT) 0 0 1
-### SELECT a FROM t2 WHERE a > 15 2 5 6
-SET DEBUG_SYNC= 'now SIGNAL threads_dumped';
-a
-20
-20
-SET DEBUG_SYNC= 'sent_row SIGNAL thread1_ready WAIT_FOR threads_dumped';
-SELECT a FROM t2 WHERE a < 15;
-SET DEBUG_SYNC= 'now WAIT_FOR thread1_ready';
-SET DEBUG_SYNC= 'sent_row SIGNAL thread2_ready WAIT_FOR threads_dumped';
-SELECT a FROM t2 WHERE a > 15;
-SET DEBUG_SYNC= 'now WAIT_FOR thread2_ready';
-SHOW PROCESSLIST;
-Id User Host db Command Time State Info Rows_sent Rows_examined Rows_read
-### root ### test Query ### ### SHOW PROCESSLIST 0 0 4
-### root ### test Query ### ### SELECT a FROM t2 WHERE a < 15 1 0 1
-### root ### test Query ### ### SELECT a FROM t2 WHERE a > 15 1 0 3
-SELECT id, info, rows_sent, rows_examined, rows_read FROM INFORMATION_SCHEMA.PROCESSLIST ORDER BY id;
-id info rows_sent rows_examined rows_read
-### SELECT id, info, rows_sent, rows_examined, rows_read FROM INFORMATION_SCHEMA.PROCESSLIST ORDER BY id 0 0 1
-### SELECT a FROM t2 WHERE a < 15 1 0 1
-### SELECT a FROM t2 WHERE a > 15 1 0 3
-SET DEBUG_SYNC= 'now SIGNAL threads_dumped';
-a
-10
-10
-10
-a
-20
-20
-SET DEBUG_SYNC= 'execute_command_after_close_tables SIGNAL thread1_ready WAIT_FOR threads_dumped';
-UPDATE t2 SET a = 15 WHERE a = 20;
-SET DEBUG_SYNC= 'now WAIT_FOR thread1_ready';
-SET DEBUG_SYNC= 'execute_command_after_close_tables SIGNAL thread2_ready WAIT_FOR threads_dumped';
-UPDATE t2 SET a = 15 WHERE a = 10;
-SET DEBUG_SYNC= 'now WAIT_FOR thread2_ready';
-SHOW PROCESSLIST;
-Id User Host db Command Time State Info Rows_sent Rows_examined Rows_read
-### root ### test Query ### ### SHOW PROCESSLIST 0 0 4
-### root ### test Query ### ### UPDATE t2 SET a = 15 WHERE a = 20 0 5 6
-### root ### test Query ### ### UPDATE t2 SET a = 15 WHERE a = 10 0 5 6
-SELECT id, info, rows_sent, rows_examined, rows_read FROM INFORMATION_SCHEMA.PROCESSLIST ORDER BY id;
-id info rows_sent rows_examined rows_read
-### SELECT id, info, rows_sent, rows_examined, rows_read FROM INFORMATION_SCHEMA.PROCESSLIST ORDER BY id 0 0 1
-### UPDATE t2 SET a = 15 WHERE a = 20 0 5 6
-### UPDATE t2 SET a = 15 WHERE a = 10 0 5 6
-SET DEBUG_SYNC= 'now SIGNAL threads_dumped';
-DROP TABLES t1, t2;
diff --git a/mysql-test/suite/percona/percona_processlist_row_stats.test b/mysql-test/suite/percona/percona_processlist_row_stats.test
deleted file mode 100644
index 17ebfedfa40..00000000000
--- a/mysql-test/suite/percona/percona_processlist_row_stats.test
+++ /dev/null
@@ -1,79 +0,0 @@
-# Testing of INFORMATION_SCHEMA.PROCESSLIST fields ROWS_SENT, ROWS_EXAMINED, ROWS_READ
---source include/have_debug_sync.inc
-
---disable_warnings
-DROP TABLE IF EXISTS t1;
-DROP TABLE IF EXISTS t2;
---enable_warnings
-
-CREATE TABLE t2 (a INT);
-INSERT INTO t2 VALUES(10);
-INSERT INTO t2 VALUES(10);
-INSERT INTO t2 VALUES(20);
-INSERT INTO t2 VALUES(10);
-INSERT INTO t2 VALUES(20);
-
---connect (conn1, localhost, root, ,)
---connect (conn2, localhost, root, ,)
-
---connection conn1
-SET DEBUG_SYNC= 'locked_table_name SIGNAL thread1_ready WAIT_FOR threads_dumped';
-send CREATE TABLE t1 (a INT);
---connection default
-SET DEBUG_SYNC= 'now WAIT_FOR thread1_ready';
-
---connection conn2
-SET DEBUG_SYNC= 'execute_command_after_close_tables SIGNAL thread2_ready WAIT_FOR threads_dumped';
-send SELECT a FROM t2 WHERE a > 15;
---connection default
-SET DEBUG_SYNC= 'now WAIT_FOR thread2_ready';
-
---source include/percona_processlist_row_stats_show.inc
-
---connection conn1
-reap;
---connection conn2
-reap;
-
---connection conn1
-SET DEBUG_SYNC= 'sent_row SIGNAL thread1_ready WAIT_FOR threads_dumped';
-send SELECT a FROM t2 WHERE a < 15;
---connection default
-SET DEBUG_SYNC= 'now WAIT_FOR thread1_ready';
-
---connection conn2
-SET DEBUG_SYNC= 'sent_row SIGNAL thread2_ready WAIT_FOR threads_dumped';
-send SELECT a FROM t2 WHERE a > 15;
---connection default
-SET DEBUG_SYNC= 'now WAIT_FOR thread2_ready';
-
---source include/percona_processlist_row_stats_show.inc
-
---connection conn1
-reap;
---connection conn2
-reap;
-
---connection conn1
-SET DEBUG_SYNC= 'execute_command_after_close_tables SIGNAL thread1_ready WAIT_FOR threads_dumped';
-send UPDATE t2 SET a = 15 WHERE a = 20;
---connection default
-SET DEBUG_SYNC= 'now WAIT_FOR thread1_ready';
-
---connection conn2
-SET DEBUG_SYNC= 'execute_command_after_close_tables SIGNAL thread2_ready WAIT_FOR threads_dumped';
-send UPDATE t2 SET a = 15 WHERE a = 10;
---connection default
-SET DEBUG_SYNC= 'now WAIT_FOR thread2_ready';
-
---source include/percona_processlist_row_stats_show.inc
-
---connection conn1
-reap;
---connection conn2
-reap;
-
---connection default
-disconnect conn1;
-disconnect conn2;
-DROP TABLES t1, t2;
diff --git a/mysql-test/suite/percona/percona_query_cache_with_comments.inc.backup b/mysql-test/suite/percona/percona_query_cache_with_comments.inc.backup
deleted file mode 100644
index 4b5b31e9239..00000000000
--- a/mysql-test/suite/percona/percona_query_cache_with_comments.inc.backup
+++ /dev/null
@@ -1,88 +0,0 @@
---source include/percona_query_cache_with_comments_clear.inc
-let $query=/* with comment first */select * from t1;
-eval $query;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=# with comment first
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=-- with comment first
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=/* with comment first and "quote" */select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=# with comment first and "quote"
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=-- with comment first and "quote"
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=
- /* with comment and whitespaces first */select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=
- # with comment and whitespaces first
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=
- -- with comment and whitespaces first
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $internal=* internal comment *;
-
-let $query=select * /$internal/ from t1;
---source include/percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/ from t1;
---source include/percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $internal=* internal comment with "quote" *;
-
-let $query=select * /$internal/ from t1;
---source include/percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/ from t1;
---source include/percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1
-;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 ;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 ;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1
-/* comment in the end */;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1
-/* comment in the end */
-;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 #comment in the end;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 #comment in the end
-;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 -- comment in the end;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 -- comment in the end
-;
---source include/percona_query_cache_with_comments_eval.inc
diff --git a/mysql-test/suite/percona/percona_query_response_time-replication.result b/mysql-test/suite/percona/percona_query_response_time-replication.result
deleted file mode 100644
index a6e88be6103..00000000000
--- a/mysql-test/suite/percona/percona_query_response_time-replication.result
+++ /dev/null
@@ -1,727 +0,0 @@
-SET GLOBAL query_exec_time=0.1;
-include/master-slave.inc
-[connection master]
-CREATE TABLE t(id INT);
-SET GLOBAL query_exec_time = 0.1;
-include/restart_slave.inc
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=1;
-Warnings:
-Warning 1292 Truncated incorrect query_response_time_range_base value: '1'
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time = 0.31;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.32;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.33;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.34;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.35;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.36;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.37;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.38;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.39;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.2;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 3.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 4.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 5.1;
-INSERT INTO t VALUES(1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 1 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 1 0.100000
- 0.250000 0 0.000000
- 0.500000 30 10.650000
- 1.000000 3 1.500000
- 2.000000 15 19.500000
- 4.000000 12 30.000000
- 8.000000 6 27.599997
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 1 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 1 0.100000
- 0.250000 0 0.000000
- 0.500000 30 10.650000
- 1.000000 3 1.500000
- 2.000000 15 19.500000
- 4.000000 12 30.000000
- 8.000000 6 27.599997
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
-DROP TABLE t;
-CREATE TABLE t(id INT);
-SET GLOBAL query_exec_time = 0.1;
-include/restart_slave.inc
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=2;
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time = 0.31;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.32;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.33;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.34;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.35;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.36;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.37;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.38;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.39;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.2;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 3.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 4.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 5.1;
-INSERT INTO t VALUES(1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 1 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 1 0.100000
- 0.250000 0 0.000000
- 0.500000 30 10.650000
- 1.000000 3 1.500000
- 2.000000 15 19.500000
- 4.000000 12 30.000000
- 8.000000 6 27.599997
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 1 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 1 0.100000
- 0.250000 0 0.000000
- 0.500000 30 10.650000
- 1.000000 3 1.500000
- 2.000000 15 19.500000
- 4.000000 12 30.000000
- 8.000000 6 27.599997
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
-DROP TABLE t;
-CREATE TABLE t(id INT);
-SET GLOBAL query_exec_time = 0.1;
-include/restart_slave.inc
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=10;
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time = 0.31;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.32;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.33;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.34;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.35;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.36;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.37;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.38;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.39;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.2;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 3.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 4.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 5.1;
-INSERT INTO t VALUES(1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 10
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 1 0.000000
- 0.000010 0 0.000000
- 0.000100 0 0.000000
- 0.001000 0 0.000000
- 0.010000 0 0.000000
- 0.100000 0 0.000000
- 1.000000 34 12.250000
- 10.000000 33 77.099997
- 100.000000 0 0.000000
- 1000.000000 0 0.000000
- 10000.000000 0 0.000000
- 100000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 1 0.000000
- 0.000010 0 0.000000
- 0.000100 0 0.000000
- 0.001000 0 0.000000
- 0.010000 0 0.000000
- 0.100000 0 0.000000
- 1.000000 34 12.250000
- 10.000000 33 77.099997
- 100.000000 0 0.000000
- 1000.000000 0 0.000000
- 10000.000000 0 0.000000
- 100000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
-DROP TABLE t;
-CREATE TABLE t(id INT);
-SET GLOBAL query_exec_time = 0.1;
-include/restart_slave.inc
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=7;
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time = 0.31;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.32;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.33;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.34;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.35;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.36;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.37;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.38;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.39;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.2;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 3.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 4.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 5.1;
-INSERT INTO t VALUES(1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 7
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 1 0.000000
- 0.000008 0 0.000000
- 0.000059 0 0.000000
- 0.000416 0 0.000000
- 0.002915 0 0.000000
- 0.020408 0 0.000000
- 0.142857 1 0.100000
- 1.000000 33 12.150000
- 7.000000 33 77.099997
- 49.000000 0 0.000000
- 343.000000 0 0.000000
- 2401.000000 0 0.000000
- 16807.000000 0 0.000000
- 117649.000000 0 0.000000
- 823543.000000 0 0.000000
-5764801.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 1 0.000000
- 0.000008 0 0.000000
- 0.000059 0 0.000000
- 0.000416 0 0.000000
- 0.002915 0 0.000000
- 0.020408 0 0.000000
- 0.142857 1 0.100000
- 1.000000 33 12.150000
- 7.000000 33 77.099997
- 49.000000 0 0.000000
- 343.000000 0 0.000000
- 2401.000000 0 0.000000
- 16807.000000 0 0.000000
- 117649.000000 0 0.000000
- 823543.000000 0 0.000000
-5764801.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
-DROP TABLE t;
-CREATE TABLE t(id INT);
-SET GLOBAL query_exec_time = 0.1;
-include/restart_slave.inc
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=156;
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time = 0.31;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.32;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.33;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.34;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.35;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.36;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.37;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.38;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.39;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.2;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 3.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 4.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 5.1;
-INSERT INTO t VALUES(1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 156
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000041 1 0.000000
- 0.006410 0 0.000000
- 1.000000 34 12.250000
- 156.000000 33 77.099997
- 24336.000000 0 0.000000
-3796416.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000041 1 0.000000
- 0.006410 0 0.000000
- 1.000000 34 12.250000
- 156.000000 33 77.099997
- 24336.000000 0 0.000000
-3796416.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
-DROP TABLE t;
-CREATE TABLE t(id INT);
-SET GLOBAL query_exec_time = 0.1;
-include/restart_slave.inc
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=1000;
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time = 0.31;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.32;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.33;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.34;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.35;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.36;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.37;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.38;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.39;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.2;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 3.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 4.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 5.1;
-INSERT INTO t VALUES(1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 1 0.000000
- 0.001000 0 0.000000
- 1.000000 34 12.250000
- 1000.000000 33 77.099997
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 1 0.000000
- 0.001000 0 0.000000
- 1.000000 34 12.250000
- 1000.000000 33 77.099997
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
-DROP TABLE t;
-CREATE TABLE t(id INT);
-SET GLOBAL query_exec_time = 0.1;
-include/restart_slave.inc
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=1001;
-Warnings:
-Warning 1292 Truncated incorrect query_response_time_range_base value: '1001'
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time = 0.31;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.32;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.33;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.34;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.35;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.36;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.37;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.38;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.39;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.2;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.4;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.3;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.5;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 3.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 4.1;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 5.1;
-INSERT INTO t VALUES(1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 1 0.000000
- 0.001000 0 0.000000
- 1.000000 34 12.250000
- 1000.000000 33 77.099997
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 1 0.000000
- 0.001000 0 0.000000
- 1.000000 34 12.250000
- 1000.000000 33 77.099997
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
-DROP TABLE t;
-include/rpl_end.inc
-SET GLOBAL query_exec_time=default;
-SET GLOBAL query_exec_time=default;
diff --git a/mysql-test/suite/percona/percona_query_response_time-replication.test b/mysql-test/suite/percona/percona_query_response_time-replication.test
deleted file mode 100644
index 1207e5d1c3d..00000000000
--- a/mysql-test/suite/percona/percona_query_response_time-replication.test
+++ /dev/null
@@ -1,28 +0,0 @@
-SET GLOBAL query_exec_time=0.1;
-
---source include/have_response_time_distribution.inc
---source include/have_debug.inc
---source include/have_binlog_format_statement.inc
---source include/master-slave.inc
-
---let base=1
---source include/query_response_time-replication.inc
---let base=2
---source include/query_response_time-replication.inc
---let base=10
---source include/query_response_time-replication.inc
---let base=7
---source include/query_response_time-replication.inc
---let base=156
---source include/query_response_time-replication.inc
---let base=1000
---source include/query_response_time-replication.inc
---let base=1001
---source include/query_response_time-replication.inc
-
---source include/rpl_end.inc
-
-SET GLOBAL query_exec_time=default;
-
-connection slave;
-SET GLOBAL query_exec_time=default;
diff --git a/mysql-test/suite/percona/percona_query_response_time-stored.result b/mysql-test/suite/percona/percona_query_response_time-stored.result
deleted file mode 100644
index fb458d6e7ab..00000000000
--- a/mysql-test/suite/percona/percona_query_response_time-stored.result
+++ /dev/null
@@ -1,544 +0,0 @@
-CREATE TABLE t(a INT);
-CREATE PROCEDURE test_f(t DECIMAL(3,2))
-BEGIN
-SET SESSION query_exec_time=t;
-INSERT INTO t VALUES(1);
-SET SESSION query_exec_time=0.1;
-DELETE FROM t;
-END^
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=1;
-Warnings:
-Warning 1292 Truncated incorrect query_response_time_range_base value: '1'
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-CALL test_f(0.31);
-CALL test_f(0.32);
-CALL test_f(0.33);
-CALL test_f(0.34);
-CALL test_f(0.35);
-CALL test_f(0.36);
-CALL test_f(0.37);
-CALL test_f(0.38);
-CALL test_f(0.39);
-CALL test_f(0.4);
-CALL test_f(1.1);
-CALL test_f(1.2);
-CALL test_f(1.3);
-CALL test_f(1.5);
-CALL test_f(1.4);
-CALL test_f(0.5);
-CALL test_f(2.1);
-CALL test_f(2.3);
-CALL test_f(2.5);
-CALL test_f(3.1);
-CALL test_f(4.1);
-CALL test_f(5.1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 45 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 44 4.400000
- 0.250000 0 0.000000
- 0.500000 10 3.550000
- 1.000000 1 0.500000
- 2.000000 5 6.500000
- 4.000000 4 10.000000
- 8.000000 2 9.199999
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 45 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 44 4.400000
- 0.250000 0 0.000000
- 0.500000 10 3.550000
- 1.000000 1 0.500000
- 2.000000 5 6.500000
- 4.000000 4 10.000000
- 8.000000 2 9.199999
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=2;
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-CALL test_f(0.31);
-CALL test_f(0.32);
-CALL test_f(0.33);
-CALL test_f(0.34);
-CALL test_f(0.35);
-CALL test_f(0.36);
-CALL test_f(0.37);
-CALL test_f(0.38);
-CALL test_f(0.39);
-CALL test_f(0.4);
-CALL test_f(1.1);
-CALL test_f(1.2);
-CALL test_f(1.3);
-CALL test_f(1.5);
-CALL test_f(1.4);
-CALL test_f(0.5);
-CALL test_f(2.1);
-CALL test_f(2.3);
-CALL test_f(2.5);
-CALL test_f(3.1);
-CALL test_f(4.1);
-CALL test_f(5.1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 45 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 44 4.400000
- 0.250000 0 0.000000
- 0.500000 10 3.550000
- 1.000000 1 0.500000
- 2.000000 5 6.500000
- 4.000000 4 10.000000
- 8.000000 2 9.199999
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 45 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 44 4.400000
- 0.250000 0 0.000000
- 0.500000 10 3.550000
- 1.000000 1 0.500000
- 2.000000 5 6.500000
- 4.000000 4 10.000000
- 8.000000 2 9.199999
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=10;
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-CALL test_f(0.31);
-CALL test_f(0.32);
-CALL test_f(0.33);
-CALL test_f(0.34);
-CALL test_f(0.35);
-CALL test_f(0.36);
-CALL test_f(0.37);
-CALL test_f(0.38);
-CALL test_f(0.39);
-CALL test_f(0.4);
-CALL test_f(1.1);
-CALL test_f(1.2);
-CALL test_f(1.3);
-CALL test_f(1.5);
-CALL test_f(1.4);
-CALL test_f(0.5);
-CALL test_f(2.1);
-CALL test_f(2.3);
-CALL test_f(2.5);
-CALL test_f(3.1);
-CALL test_f(4.1);
-CALL test_f(5.1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 10
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 45 0.000000
- 0.000010 0 0.000000
- 0.000100 0 0.000000
- 0.001000 0 0.000000
- 0.010000 0 0.000000
- 0.100000 0 0.000000
- 1.000000 55 8.450000
- 10.000000 11 25.699999
- 100.000000 0 0.000000
- 1000.000000 0 0.000000
- 10000.000000 0 0.000000
- 100000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 45 0.000000
- 0.000010 0 0.000000
- 0.000100 0 0.000000
- 0.001000 0 0.000000
- 0.010000 0 0.000000
- 0.100000 0 0.000000
- 1.000000 55 8.450000
- 10.000000 11 25.699999
- 100.000000 0 0.000000
- 1000.000000 0 0.000000
- 10000.000000 0 0.000000
- 100000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=7;
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-CALL test_f(0.31);
-CALL test_f(0.32);
-CALL test_f(0.33);
-CALL test_f(0.34);
-CALL test_f(0.35);
-CALL test_f(0.36);
-CALL test_f(0.37);
-CALL test_f(0.38);
-CALL test_f(0.39);
-CALL test_f(0.4);
-CALL test_f(1.1);
-CALL test_f(1.2);
-CALL test_f(1.3);
-CALL test_f(1.5);
-CALL test_f(1.4);
-CALL test_f(0.5);
-CALL test_f(2.1);
-CALL test_f(2.3);
-CALL test_f(2.5);
-CALL test_f(3.1);
-CALL test_f(4.1);
-CALL test_f(5.1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 7
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 45 0.000000
- 0.000008 0 0.000000
- 0.000059 0 0.000000
- 0.000416 0 0.000000
- 0.002915 0 0.000000
- 0.020408 0 0.000000
- 0.142857 44 4.400000
- 1.000000 11 4.050000
- 7.000000 11 25.699999
- 49.000000 0 0.000000
- 343.000000 0 0.000000
- 2401.000000 0 0.000000
- 16807.000000 0 0.000000
- 117649.000000 0 0.000000
- 823543.000000 0 0.000000
-5764801.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 45 0.000000
- 0.000008 0 0.000000
- 0.000059 0 0.000000
- 0.000416 0 0.000000
- 0.002915 0 0.000000
- 0.020408 0 0.000000
- 0.142857 44 4.400000
- 1.000000 11 4.050000
- 7.000000 11 25.699999
- 49.000000 0 0.000000
- 343.000000 0 0.000000
- 2401.000000 0 0.000000
- 16807.000000 0 0.000000
- 117649.000000 0 0.000000
- 823543.000000 0 0.000000
-5764801.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=156;
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-CALL test_f(0.31);
-CALL test_f(0.32);
-CALL test_f(0.33);
-CALL test_f(0.34);
-CALL test_f(0.35);
-CALL test_f(0.36);
-CALL test_f(0.37);
-CALL test_f(0.38);
-CALL test_f(0.39);
-CALL test_f(0.4);
-CALL test_f(1.1);
-CALL test_f(1.2);
-CALL test_f(1.3);
-CALL test_f(1.5);
-CALL test_f(1.4);
-CALL test_f(0.5);
-CALL test_f(2.1);
-CALL test_f(2.3);
-CALL test_f(2.5);
-CALL test_f(3.1);
-CALL test_f(4.1);
-CALL test_f(5.1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 156
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000041 45 0.000000
- 0.006410 0 0.000000
- 1.000000 55 8.450000
- 156.000000 11 25.699999
- 24336.000000 0 0.000000
-3796416.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000041 45 0.000000
- 0.006410 0 0.000000
- 1.000000 55 8.450000
- 156.000000 11 25.699999
- 24336.000000 0 0.000000
-3796416.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=1000;
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-CALL test_f(0.31);
-CALL test_f(0.32);
-CALL test_f(0.33);
-CALL test_f(0.34);
-CALL test_f(0.35);
-CALL test_f(0.36);
-CALL test_f(0.37);
-CALL test_f(0.38);
-CALL test_f(0.39);
-CALL test_f(0.4);
-CALL test_f(1.1);
-CALL test_f(1.2);
-CALL test_f(1.3);
-CALL test_f(1.5);
-CALL test_f(1.4);
-CALL test_f(0.5);
-CALL test_f(2.1);
-CALL test_f(2.3);
-CALL test_f(2.5);
-CALL test_f(3.1);
-CALL test_f(4.1);
-CALL test_f(5.1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 45 0.000000
- 0.001000 0 0.000000
- 1.000000 55 8.450000
- 1000.000000 11 25.699999
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 45 0.000000
- 0.001000 0 0.000000
- 1.000000 55 8.450000
- 1000.000000 11 25.699999
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=1001;
-Warnings:
-Warning 1292 Truncated incorrect query_response_time_range_base value: '1001'
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-CALL test_f(0.31);
-CALL test_f(0.32);
-CALL test_f(0.33);
-CALL test_f(0.34);
-CALL test_f(0.35);
-CALL test_f(0.36);
-CALL test_f(0.37);
-CALL test_f(0.38);
-CALL test_f(0.39);
-CALL test_f(0.4);
-CALL test_f(1.1);
-CALL test_f(1.2);
-CALL test_f(1.3);
-CALL test_f(1.5);
-CALL test_f(1.4);
-CALL test_f(0.5);
-CALL test_f(2.1);
-CALL test_f(2.3);
-CALL test_f(2.5);
-CALL test_f(3.1);
-CALL test_f(4.1);
-CALL test_f(5.1);
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 45 0.000000
- 0.001000 0 0.000000
- 1.000000 55 8.450000
- 1000.000000 11 25.699999
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 45 0.000000
- 0.001000 0 0.000000
- 1.000000 55 8.450000
- 1000.000000 11 25.699999
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
-DROP PROCEDURE test_f;
-DROP TABLE t;
diff --git a/mysql-test/suite/percona/percona_query_response_time-stored.test b/mysql-test/suite/percona/percona_query_response_time-stored.test
deleted file mode 100644
index 847ff223b3f..00000000000
--- a/mysql-test/suite/percona/percona_query_response_time-stored.test
+++ /dev/null
@@ -1,36 +0,0 @@
---source include/have_response_time_distribution.inc
---source include/have_debug.inc
-
-CREATE TABLE t(a INT);
-
-delimiter ^;
-CREATE PROCEDURE test_f(t DECIMAL(3,2))
-BEGIN
- SET SESSION query_exec_time=t;
- INSERT INTO t VALUES(1);
- SET SESSION query_exec_time=0.1;
- DELETE FROM t;
-END^
-delimiter ;^
-
---let base=1
---source include/query_response_time-stored.inc
---let base=2
---source include/query_response_time-stored.inc
---let base=10
---source include/query_response_time-stored.inc
---let base=7
---source include/query_response_time-stored.inc
---let base=156
---source include/query_response_time-stored.inc
---let base=1000
---source include/query_response_time-stored.inc
---let base=1001
---source include/query_response_time-stored.inc
-
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
-
-DROP PROCEDURE test_f;
-
-DROP TABLE t;
diff --git a/mysql-test/suite/percona/percona_query_response_time.result b/mysql-test/suite/percona/percona_query_response_time.result
deleted file mode 100644
index 1eb90d3cdd4..00000000000
--- a/mysql-test/suite/percona/percona_query_response_time.result
+++ /dev/null
@@ -1,1307 +0,0 @@
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=1;
-Warnings:
-Warning 1292 Truncated incorrect query_response_time_range_base value: '1'
-FLUSH QUERY_RESPONSE_TIME;
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 0 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 0 0.000000
- 0.250000 0 0.000000
- 0.500000 0 0.000000
- 1.000000 0 0.000000
- 2.000000 0 0.000000
- 4.000000 0 0.000000
- 8.000000 0 0.000000
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 0 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 0 0.000000
- 0.250000 0 0.000000
- 0.500000 0 0.000000
- 1.000000 0 0.000000
- 2.000000 0 0.000000
- 4.000000 0 0.000000
- 8.000000 0 0.000000
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time=0.31;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.32;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.33;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.34;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.35;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.36;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.37;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.38;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.39;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.2;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=3.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=4.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=5.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 24 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 0 0.000000
- 0.250000 0 0.000000
- 0.500000 10 3.550000
- 1.000000 1 0.500000
- 2.000000 5 6.500000
- 4.000000 4 10.000000
- 8.000000 2 9.199999
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 24 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 0 0.000000
- 0.250000 0 0.000000
- 0.500000 10 3.550000
- 1.000000 1 0.500000
- 2.000000 5 6.500000
- 4.000000 4 10.000000
- 8.000000 2 9.199999
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=2;
-FLUSH QUERY_RESPONSE_TIME;
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 0 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 0 0.000000
- 0.250000 0 0.000000
- 0.500000 0 0.000000
- 1.000000 0 0.000000
- 2.000000 0 0.000000
- 4.000000 0 0.000000
- 8.000000 0 0.000000
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 0 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 0 0.000000
- 0.250000 0 0.000000
- 0.500000 0 0.000000
- 1.000000 0 0.000000
- 2.000000 0 0.000000
- 4.000000 0 0.000000
- 8.000000 0 0.000000
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time=0.31;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.32;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.33;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.34;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.35;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.36;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.37;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.38;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.39;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.2;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=3.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=4.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=5.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 24 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 0 0.000000
- 0.250000 0 0.000000
- 0.500000 10 3.550000
- 1.000000 1 0.500000
- 2.000000 5 6.500000
- 4.000000 4 10.000000
- 8.000000 2 9.199999
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 24 0.000000
- 0.000003 0 0.000000
- 0.000007 0 0.000000
- 0.000015 0 0.000000
- 0.000030 0 0.000000
- 0.000061 0 0.000000
- 0.000122 0 0.000000
- 0.000244 0 0.000000
- 0.000488 0 0.000000
- 0.000976 0 0.000000
- 0.001953 0 0.000000
- 0.003906 0 0.000000
- 0.007812 0 0.000000
- 0.015625 0 0.000000
- 0.031250 0 0.000000
- 0.062500 0 0.000000
- 0.125000 0 0.000000
- 0.250000 0 0.000000
- 0.500000 10 3.550000
- 1.000000 1 0.500000
- 2.000000 5 6.500000
- 4.000000 4 10.000000
- 8.000000 2 9.199999
- 16.000000 0 0.000000
- 32.000000 0 0.000000
- 64.000000 0 0.000000
- 128.000000 0 0.000000
- 256.000000 0 0.000000
- 512.000000 0 0.000000
- 1024.000000 0 0.000000
- 2048.000000 0 0.000000
- 4096.000000 0 0.000000
- 8192.000000 0 0.000000
- 16384.000000 0 0.000000
- 32768.000000 0 0.000000
- 65536.000000 0 0.000000
- 131072.000000 0 0.000000
- 262144.000000 0 0.000000
- 524288.000000 0 0.000000
-1048576.000000 0 0.000000
-2097152.000000 0 0.000000
-4194304.000000 0 0.000000
-8388608.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=10;
-FLUSH QUERY_RESPONSE_TIME;
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 0 0.000000
- 0.000010 0 0.000000
- 0.000100 0 0.000000
- 0.001000 0 0.000000
- 0.010000 0 0.000000
- 0.100000 0 0.000000
- 1.000000 0 0.000000
- 10.000000 0 0.000000
- 100.000000 0 0.000000
- 1000.000000 0 0.000000
- 10000.000000 0 0.000000
- 100000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 0 0.000000
- 0.000010 0 0.000000
- 0.000100 0 0.000000
- 0.001000 0 0.000000
- 0.010000 0 0.000000
- 0.100000 0 0.000000
- 1.000000 0 0.000000
- 10.000000 0 0.000000
- 100.000000 0 0.000000
- 1000.000000 0 0.000000
- 10000.000000 0 0.000000
- 100000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time=0.31;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.32;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.33;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.34;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.35;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.36;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.37;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.38;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.39;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.2;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=3.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=4.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=5.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 10
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 24 0.000000
- 0.000010 0 0.000000
- 0.000100 0 0.000000
- 0.001000 0 0.000000
- 0.010000 0 0.000000
- 0.100000 0 0.000000
- 1.000000 11 4.050000
- 10.000000 11 25.699999
- 100.000000 0 0.000000
- 1000.000000 0 0.000000
- 10000.000000 0 0.000000
- 100000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 24 0.000000
- 0.000010 0 0.000000
- 0.000100 0 0.000000
- 0.001000 0 0.000000
- 0.010000 0 0.000000
- 0.100000 0 0.000000
- 1.000000 11 4.050000
- 10.000000 11 25.699999
- 100.000000 0 0.000000
- 1000.000000 0 0.000000
- 10000.000000 0 0.000000
- 100000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=7;
-FLUSH QUERY_RESPONSE_TIME;
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 0 0.000000
- 0.000008 0 0.000000
- 0.000059 0 0.000000
- 0.000416 0 0.000000
- 0.002915 0 0.000000
- 0.020408 0 0.000000
- 0.142857 0 0.000000
- 1.000000 0 0.000000
- 7.000000 0 0.000000
- 49.000000 0 0.000000
- 343.000000 0 0.000000
- 2401.000000 0 0.000000
- 16807.000000 0 0.000000
- 117649.000000 0 0.000000
- 823543.000000 0 0.000000
-5764801.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 0 0.000000
- 0.000008 0 0.000000
- 0.000059 0 0.000000
- 0.000416 0 0.000000
- 0.002915 0 0.000000
- 0.020408 0 0.000000
- 0.142857 0 0.000000
- 1.000000 0 0.000000
- 7.000000 0 0.000000
- 49.000000 0 0.000000
- 343.000000 0 0.000000
- 2401.000000 0 0.000000
- 16807.000000 0 0.000000
- 117649.000000 0 0.000000
- 823543.000000 0 0.000000
-5764801.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time=0.31;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.32;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.33;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.34;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.35;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.36;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.37;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.38;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.39;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.2;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=3.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=4.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=5.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 7
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 24 0.000000
- 0.000008 0 0.000000
- 0.000059 0 0.000000
- 0.000416 0 0.000000
- 0.002915 0 0.000000
- 0.020408 0 0.000000
- 0.142857 0 0.000000
- 1.000000 11 4.050000
- 7.000000 11 25.699999
- 49.000000 0 0.000000
- 343.000000 0 0.000000
- 2401.000000 0 0.000000
- 16807.000000 0 0.000000
- 117649.000000 0 0.000000
- 823543.000000 0 0.000000
-5764801.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 24 0.000000
- 0.000008 0 0.000000
- 0.000059 0 0.000000
- 0.000416 0 0.000000
- 0.002915 0 0.000000
- 0.020408 0 0.000000
- 0.142857 0 0.000000
- 1.000000 11 4.050000
- 7.000000 11 25.699999
- 49.000000 0 0.000000
- 343.000000 0 0.000000
- 2401.000000 0 0.000000
- 16807.000000 0 0.000000
- 117649.000000 0 0.000000
- 823543.000000 0 0.000000
-5764801.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=156;
-FLUSH QUERY_RESPONSE_TIME;
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000041 0 0.000000
- 0.006410 0 0.000000
- 1.000000 0 0.000000
- 156.000000 0 0.000000
- 24336.000000 0 0.000000
-3796416.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000041 0 0.000000
- 0.006410 0 0.000000
- 1.000000 0 0.000000
- 156.000000 0 0.000000
- 24336.000000 0 0.000000
-3796416.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time=0.31;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.32;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.33;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.34;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.35;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.36;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.37;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.38;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.39;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.2;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=3.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=4.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=5.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 156
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000041 24 0.000000
- 0.006410 0 0.000000
- 1.000000 11 4.050000
- 156.000000 11 25.699999
- 24336.000000 0 0.000000
-3796416.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000041 24 0.000000
- 0.006410 0 0.000000
- 1.000000 11 4.050000
- 156.000000 11 25.699999
- 24336.000000 0 0.000000
-3796416.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=1000;
-FLUSH QUERY_RESPONSE_TIME;
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 0 0.000000
- 0.001000 0 0.000000
- 1.000000 0 0.000000
- 1000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 0 0.000000
- 0.001000 0 0.000000
- 1.000000 0 0.000000
- 1000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time=0.31;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.32;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.33;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.34;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.35;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.36;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.37;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.38;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.39;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.2;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=3.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=4.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=5.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 24 0.000000
- 0.001000 0 0.000000
- 1.000000 11 4.050000
- 1000.000000 11 25.699999
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 24 0.000000
- 0.001000 0 0.000000
- 1.000000 11 4.050000
- 1000.000000 11 25.699999
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=1001;
-Warnings:
-Warning 1292 Truncated incorrect query_response_time_range_base value: '1001'
-FLUSH QUERY_RESPONSE_TIME;
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 0 0.000000
- 0.001000 0 0.000000
- 1.000000 0 0.000000
- 1000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 0 0.000000
- 0.001000 0 0.000000
- 1.000000 0 0.000000
- 1000.000000 0 0.000000
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-SET SESSION query_exec_time=0.31;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.32;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.33;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.34;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.35;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.36;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.37;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.38;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.39;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.2;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=1.4;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.3;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=2.5;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=3.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=4.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=5.1;
-SELECT 1;
-1
-1
-SET SESSION query_exec_time=0.1;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-SHOW QUERY_RESPONSE_TIME;
-
- 0.000001 24 0.000000
- 0.001000 0 0.000000
- 1.000000 11 4.050000
- 1000.000000 11 25.699999
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time count total
- 0.000001 24 0.000000
- 0.001000 0 0.000000
- 1.000000 11 4.050000
- 1000.000000 11 25.699999
-1000000.000000 0 0.000000
-TOO LONG 0 TOO LONG
-SET SESSION query_exec_time=default;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
diff --git a/mysql-test/suite/percona/percona_query_response_time.test b/mysql-test/suite/percona/percona_query_response_time.test
deleted file mode 100644
index d4fb9c61388..00000000000
--- a/mysql-test/suite/percona/percona_query_response_time.test
+++ /dev/null
@@ -1,20 +0,0 @@
---source include/have_response_time_distribution.inc
---source include/have_debug.inc
-
---let base=1
---source include/query_response_time.inc
---let base=2
---source include/query_response_time.inc
---let base=10
---source include/query_response_time.inc
---let base=7
---source include/query_response_time.inc
---let base=156
---source include/query_response_time.inc
---let base=1000
---source include/query_response_time.inc
---let base=1001
---source include/query_response_time.inc
-
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
diff --git a/mysql-test/suite/percona/percona_query_response_time_flush.inc b/mysql-test/suite/percona/percona_query_response_time_flush.inc
deleted file mode 100644
index 44bb320fe13..00000000000
--- a/mysql-test/suite/percona/percona_query_response_time_flush.inc
+++ /dev/null
@@ -1 +0,0 @@
-FLUSH QUERY_RESPONSE_TIME;
diff --git a/mysql-test/suite/percona/percona_query_response_time_show.inc b/mysql-test/suite/percona/percona_query_response_time_show.inc
deleted file mode 100644
index 709abf9872e..00000000000
--- a/mysql-test/suite/percona/percona_query_response_time_show.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
diff --git a/mysql-test/suite/percona/percona_query_response_time_sleep.inc b/mysql-test/suite/percona/percona_query_response_time_sleep.inc
deleted file mode 100644
index d889fd9f98d..00000000000
--- a/mysql-test/suite/percona/percona_query_response_time_sleep.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-SET SESSION debug="+d,query_exec_time_0.31";
-SET SESSION debug="+d,query_exec_time_0.32";
-SET SESSION debug="+d,query_exec_time_0.33";
-SET SESSION debug="+d,query_exec_time_0.34";
-SET SESSION debug="+d,query_exec_time_0.35";
-SET SESSION debug="+d,query_exec_time_0.36";
-SET SESSION debug="+d,query_exec_time_0.37";
-SET SESSION debug="+d,query_exec_time_0.38";
-SET SESSION debug="+d,query_exec_time_0.39";
-SET SESSION debug="+d,query_exec_time_0.4";
-SET SESSION debug="+d,query_exec_time_1.1";
-SET SESSION debug="+d,query_exec_time_1.2";
-SET SESSION debug="+d,query_exec_time_1.3";
-SET SESSION debug="+d,query_exec_time_1.5";
-SET SESSION debug="+d,query_exec_time_1.4";
-SET SESSION debug="+d,query_exec_time_0.5";
-SET SESSION debug="+d,query_exec_time_2.1";
-SET SESSION debug="+d,query_exec_time_2.3";
-SET SESSION debug="+d,query_exec_time_2.5";
diff --git a/mysql-test/suite/percona/percona_server_variables.inc b/mysql-test/suite/percona/percona_server_variables.inc
deleted file mode 100644
index 60c8e0ba759..00000000000
--- a/mysql-test/suite/percona/percona_server_variables.inc
+++ /dev/null
@@ -1,3 +0,0 @@
---source have_response_time_distribution.inc
---source include/have_xtradb.inc
-SELECT Variable_name FROM INFORMATION_SCHEMA.SESSION_VARIABLES ORDER BY 1;
diff --git a/mysql-test/suite/percona/percona_server_variables_debug.result b/mysql-test/suite/percona/percona_server_variables_debug.result
deleted file mode 100644
index ae02a48c8fa..00000000000
--- a/mysql-test/suite/percona/percona_server_variables_debug.result
+++ /dev/null
@@ -1,382 +0,0 @@
-SELECT Variable_name FROM INFORMATION_SCHEMA.SESSION_VARIABLES ORDER BY 1;
-Variable_name
-AUTOCOMMIT
-AUTOMATIC_SP_PRIVILEGES
-AUTO_INCREMENT_INCREMENT
-AUTO_INCREMENT_OFFSET
-BACK_LOG
-BASEDIR
-BIG_TABLES
-BINLOG_CACHE_SIZE
-BINLOG_DIRECT_NON_TRANSACTIONAL_UPDATES
-BINLOG_FORMAT
-BINLOG_STMT_CACHE_SIZE
-BULK_INSERT_BUFFER_SIZE
-CHARACTER_SETS_DIR
-CHARACTER_SET_CLIENT
-CHARACTER_SET_CONNECTION
-CHARACTER_SET_DATABASE
-CHARACTER_SET_FILESYSTEM
-CHARACTER_SET_RESULTS
-CHARACTER_SET_SERVER
-CHARACTER_SET_SYSTEM
-COLLATION_CONNECTION
-COLLATION_DATABASE
-COLLATION_SERVER
-COMPLETION_TYPE
-CONCURRENT_INSERT
-CONNECT_TIMEOUT
-DATADIR
-DATETIME_FORMAT
-DATE_FORMAT
-DEBUG
-DEBUG_SYNC
-DEFAULT_STORAGE_ENGINE
-DEFAULT_WEEK_FORMAT
-DELAYED_INSERT_LIMIT
-DELAYED_INSERT_TIMEOUT
-DELAYED_QUEUE_SIZE
-DELAY_KEY_WRITE
-DIV_PRECISION_INCREMENT
-ENGINE_CONDITION_PUSHDOWN
-ERROR_COUNT
-EVENT_SCHEDULER
-EXPAND_FAST_INDEX_CREATION
-EXPIRE_LOGS_DAYS
-EXTERNAL_USER
-FAST_INDEX_CREATION
-FLUSH
-FLUSH_TIME
-FOREIGN_KEY_CHECKS
-FT_BOOLEAN_SYNTAX
-FT_MAX_WORD_LEN
-FT_MIN_WORD_LEN
-FT_QUERY_EXPANSION_LIMIT
-FT_STOPWORD_FILE
-GENERAL_LOG
-GENERAL_LOG_FILE
-GROUP_CONCAT_MAX_LEN
-HAVE_COMPRESS
-HAVE_CRYPT
-HAVE_CSV
-HAVE_DYNAMIC_LOADING
-HAVE_GEOMETRY
-HAVE_INNODB
-HAVE_NDBCLUSTER
-HAVE_OPENSSL
-HAVE_PARTITIONING
-HAVE_PROFILING
-HAVE_QUERY_CACHE
-HAVE_RESPONSE_TIME_DISTRIBUTION
-HAVE_RTREE_KEYS
-HAVE_SSL
-HAVE_SYMLINK
-HOSTNAME
-IDENTITY
-IGNORE_BUILTIN_INNODB
-INIT_CONNECT
-INIT_FILE
-INIT_SLAVE
-INNODB_ADAPTIVE_FLUSHING
-INNODB_ADAPTIVE_FLUSHING_METHOD
-INNODB_ADAPTIVE_HASH_INDEX
-INNODB_ADAPTIVE_HASH_INDEX_PARTITIONS
-INNODB_ADDITIONAL_MEM_POOL_SIZE
-INNODB_AUTOEXTEND_INCREMENT
-INNODB_AUTOINC_LOCK_MODE
-INNODB_BLOCKING_BUFFER_POOL_RESTORE
-INNODB_BUFFER_POOL_INSTANCES
-INNODB_BUFFER_POOL_RESTORE_AT_STARTUP
-INNODB_BUFFER_POOL_SHM_CHECKSUM
-INNODB_BUFFER_POOL_SHM_KEY
-INNODB_BUFFER_POOL_SIZE
-INNODB_CHANGE_BUFFERING
-INNODB_CHANGE_BUFFERING_DEBUG
-INNODB_CHECKPOINT_AGE_TARGET
-INNODB_CHECKSUMS
-INNODB_COMMIT_CONCURRENCY
-INNODB_CONCURRENCY_TICKETS
-INNODB_CORRUPT_TABLE_ACTION
-INNODB_DATA_FILE_PATH
-INNODB_DATA_HOME_DIR
-INNODB_DICT_SIZE_LIMIT
-INNODB_DOUBLEWRITE
-INNODB_DOUBLEWRITE_FILE
-INNODB_FAKE_CHANGES
-INNODB_FAST_CHECKSUM
-INNODB_FAST_SHUTDOWN
-INNODB_FILE_FORMAT
-INNODB_FILE_FORMAT_CHECK
-INNODB_FILE_FORMAT_MAX
-INNODB_FILE_PER_TABLE
-INNODB_FLUSH_CHECKPOINT_DEBUG
-INNODB_FLUSH_LOG_AT_TRX_COMMIT
-INNODB_FLUSH_METHOD
-INNODB_FLUSH_NEIGHBOR_PAGES
-INNODB_FORCE_LOAD_CORRUPTED
-INNODB_FORCE_RECOVERY
-INNODB_IBUF_ACCEL_RATE
-INNODB_IBUF_ACTIVE_CONTRACT
-INNODB_IBUF_MAX_SIZE
-INNODB_IMPORT_TABLE_FROM_XTRABACKUP
-INNODB_IO_CAPACITY
-INNODB_KILL_IDLE_TRANSACTION
-INNODB_LARGE_PREFIX
-INNODB_LAZY_DROP_TABLE
-INNODB_LOCKS_UNSAFE_FOR_BINLOG
-INNODB_LOCK_WAIT_TIMEOUT
-INNODB_LOG_BLOCK_SIZE
-INNODB_LOG_BUFFER_SIZE
-INNODB_LOG_FILES_IN_GROUP
-INNODB_LOG_FILE_SIZE
-INNODB_LOG_GROUP_HOME_DIR
-INNODB_MAX_DIRTY_PAGES_PCT
-INNODB_MAX_PURGE_LAG
-INNODB_MIRRORED_LOG_GROUPS
-INNODB_OLD_BLOCKS_PCT
-INNODB_OLD_BLOCKS_TIME
-INNODB_OPEN_FILES
-INNODB_PAGE_SIZE
-INNODB_PURGE_BATCH_SIZE
-INNODB_PURGE_THREADS
-INNODB_RANDOM_READ_AHEAD
-INNODB_READ_AHEAD
-INNODB_READ_AHEAD_THRESHOLD
-INNODB_READ_IO_THREADS
-INNODB_RECOVERY_STATS
-INNODB_RECOVERY_UPDATE_RELAY_LOG
-INNODB_REPLICATION_DELAY
-INNODB_ROLLBACK_ON_TIMEOUT
-INNODB_ROLLBACK_SEGMENTS
-INNODB_SHOW_LOCKS_HELD
-INNODB_SHOW_VERBOSE_LOCKS
-INNODB_SPIN_WAIT_DELAY
-INNODB_STATS_AUTO_UPDATE
-INNODB_STATS_METHOD
-INNODB_STATS_ON_METADATA
-INNODB_STATS_SAMPLE_PAGES
-INNODB_STATS_UPDATE_NEED_LOCK
-INNODB_STRICT_MODE
-INNODB_SUPPORT_XA
-INNODB_SYNC_SPIN_LOOPS
-INNODB_TABLE_LOCKS
-INNODB_THREAD_CONCURRENCY
-INNODB_THREAD_CONCURRENCY_TIMER_BASED
-INNODB_THREAD_SLEEP_DELAY
-INNODB_USE_GLOBAL_FLUSH_LOG_AT_TRX_COMMIT
-INNODB_USE_NATIVE_AIO
-INNODB_USE_SYS_MALLOC
-INNODB_USE_SYS_STATS_TABLE
-INNODB_VERSION
-INNODB_WRITE_IO_THREADS
-INSERT_ID
-INTERACTIVE_TIMEOUT
-JOIN_BUFFER_SIZE
-KEEP_FILES_ON_CREATE
-KEY_BUFFER_SIZE
-KEY_CACHE_AGE_THRESHOLD
-KEY_CACHE_BLOCK_SIZE
-KEY_CACHE_DIVISION_LIMIT
-LARGE_FILES_SUPPORT
-LARGE_PAGES
-LARGE_PAGE_SIZE
-LAST_INSERT_ID
-LC_MESSAGES
-LC_MESSAGES_DIR
-LC_TIME_NAMES
-LICENSE
-LOCAL_INFILE
-LOCKED_IN_MEMORY
-LOCK_WAIT_TIMEOUT
-LOG
-LOG_BIN
-LOG_BIN_TRUST_FUNCTION_CREATORS
-LOG_ERROR
-LOG_OUTPUT
-LOG_QUERIES_NOT_USING_INDEXES
-LOG_SLAVE_UPDATES
-LOG_SLOW_ADMIN_STATEMENTS
-LOG_SLOW_FILTER
-LOG_SLOW_QUERIES
-LOG_SLOW_RATE_LIMIT
-LOG_SLOW_SLAVE_STATEMENTS
-LOG_SLOW_SP_STATEMENTS
-LOG_SLOW_VERBOSITY
-LOG_WARNINGS
-LOG_WARNINGS_SUPPRESS
-LONG_QUERY_TIME
-LOWER_CASE_FILE_SYSTEM
-LOWER_CASE_TABLE_NAMES
-LOW_PRIORITY_UPDATES
-MAX_ALLOWED_PACKET
-MAX_BINLOG_CACHE_SIZE
-MAX_BINLOG_SIZE
-MAX_BINLOG_STMT_CACHE_SIZE
-MAX_CONNECTIONS
-MAX_CONNECT_ERRORS
-MAX_DELAYED_THREADS
-MAX_ERROR_COUNT
-MAX_HEAP_TABLE_SIZE
-MAX_INSERT_DELAYED_THREADS
-MAX_JOIN_SIZE
-MAX_LENGTH_FOR_SORT_DATA
-MAX_LONG_DATA_SIZE
-MAX_PREPARED_STMT_COUNT
-MAX_RELAY_LOG_SIZE
-MAX_SEEKS_FOR_KEY
-MAX_SORT_LENGTH
-MAX_SP_RECURSION_DEPTH
-MAX_TMP_TABLES
-MAX_USER_CONNECTIONS
-MAX_WRITE_LOCK_COUNT
-METADATA_LOCKS_CACHE_SIZE
-MIN_EXAMINED_ROW_LIMIT
-MULTI_RANGE_COUNT
-MYISAM_DATA_POINTER_SIZE
-MYISAM_MAX_SORT_FILE_SIZE
-MYISAM_MMAP_SIZE
-MYISAM_RECOVER_OPTIONS
-MYISAM_REPAIR_THREADS
-MYISAM_SORT_BUFFER_SIZE
-MYISAM_STATS_METHOD
-MYISAM_USE_MMAP
-NET_BUFFER_LENGTH
-NET_READ_TIMEOUT
-NET_RETRY_COUNT
-NET_WRITE_TIMEOUT
-NEW
-OLD
-OLD_ALTER_TABLE
-OLD_PASSWORDS
-OPEN_FILES_LIMIT
-OPTIMIZER_FIX
-OPTIMIZER_PRUNE_LEVEL
-OPTIMIZER_SEARCH_DEPTH
-OPTIMIZER_SWITCH
-PERFORMANCE_SCHEMA
-PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_LONG_SIZE
-PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_SIZE
-PERFORMANCE_SCHEMA_MAX_COND_CLASSES
-PERFORMANCE_SCHEMA_MAX_COND_INSTANCES
-PERFORMANCE_SCHEMA_MAX_FILE_CLASSES
-PERFORMANCE_SCHEMA_MAX_FILE_HANDLES
-PERFORMANCE_SCHEMA_MAX_FILE_INSTANCES
-PERFORMANCE_SCHEMA_MAX_MUTEX_CLASSES
-PERFORMANCE_SCHEMA_MAX_MUTEX_INSTANCES
-PERFORMANCE_SCHEMA_MAX_RWLOCK_CLASSES
-PERFORMANCE_SCHEMA_MAX_RWLOCK_INSTANCES
-PERFORMANCE_SCHEMA_MAX_TABLE_HANDLES
-PERFORMANCE_SCHEMA_MAX_TABLE_INSTANCES
-PERFORMANCE_SCHEMA_MAX_THREAD_CLASSES
-PERFORMANCE_SCHEMA_MAX_THREAD_INSTANCES
-PID_FILE
-PLUGIN_DIR
-PORT
-PRELOAD_BUFFER_SIZE
-PROFILING
-PROFILING_HISTORY_SIZE
-PROTOCOL_VERSION
-PROXY_USER
-PSEUDO_THREAD_ID
-QUERY_ALLOC_BLOCK_SIZE
-QUERY_CACHE_LIMIT
-QUERY_CACHE_MIN_RES_UNIT
-QUERY_CACHE_SIZE
-QUERY_CACHE_STRIP_COMMENTS
-QUERY_CACHE_TYPE
-QUERY_CACHE_WLOCK_INVALIDATE
-QUERY_EXEC_TIME
-QUERY_PREALLOC_SIZE
-QUERY_RESPONSE_TIME_RANGE_BASE
-QUERY_RESPONSE_TIME_STATS
-RAND_SEED1
-RAND_SEED2
-RANGE_ALLOC_BLOCK_SIZE
-READ_BUFFER_SIZE
-READ_ONLY
-READ_RND_BUFFER_SIZE
-RELAY_LOG
-RELAY_LOG_INDEX
-RELAY_LOG_INFO_FILE
-RELAY_LOG_PURGE
-RELAY_LOG_RECOVERY
-RELAY_LOG_SPACE_LIMIT
-REPORT_HOST
-REPORT_PASSWORD
-REPORT_PORT
-REPORT_USER
-RPL_RECOVERY_RANK
-SECURE_AUTH
-SECURE_FILE_PRIV
-SERVER_ID
-SKIP_EXTERNAL_LOCKING
-SKIP_NAME_RESOLVE
-SKIP_NETWORKING
-SKIP_SHOW_DATABASE
-SLAVE_COMPRESSED_PROTOCOL
-SLAVE_EXEC_MODE
-SLAVE_LOAD_TMPDIR
-SLAVE_NET_TIMEOUT
-SLAVE_SKIP_ERRORS
-SLAVE_TRANSACTION_RETRIES
-SLAVE_TYPE_CONVERSIONS
-SLOW_LAUNCH_TIME
-SLOW_QUERY_LOG
-SLOW_QUERY_LOG_FILE
-SLOW_QUERY_LOG_TIMESTAMP_ALWAYS
-SLOW_QUERY_LOG_TIMESTAMP_PRECISION
-SLOW_QUERY_LOG_USE_GLOBAL_CONTROL
-SOCKET
-SORT_BUFFER_SIZE
-SQL_AUTO_IS_NULL
-SQL_BIG_SELECTS
-SQL_BIG_TABLES
-SQL_BUFFER_RESULT
-SQL_LOG_BIN
-SQL_LOG_OFF
-SQL_LOW_PRIORITY_UPDATES
-SQL_MAX_JOIN_SIZE
-SQL_MODE
-SQL_NOTES
-SQL_QUOTE_SHOW_CREATE
-SQL_SAFE_UPDATES
-SQL_SELECT_LIMIT
-SQL_SLAVE_SKIP_COUNTER
-SQL_WARNINGS
-SSL_CA
-SSL_CAPATH
-SSL_CERT
-SSL_CIPHER
-SSL_KEY
-STORAGE_ENGINE
-SYNC_BINLOG
-SYNC_FRM
-SYNC_MASTER_INFO
-SYNC_RELAY_LOG
-SYNC_RELAY_LOG_INFO
-SYSTEM_TIME_ZONE
-TABLE_DEFINITION_CACHE
-TABLE_OPEN_CACHE
-THREAD_CACHE_SIZE
-THREAD_CONCURRENCY
-THREAD_HANDLING
-THREAD_STACK
-THREAD_STATISTICS
-TIMED_MUTEXES
-TIMESTAMP
-TIME_FORMAT
-TIME_ZONE
-TMPDIR
-TMP_TABLE_SIZE
-TRANSACTION_ALLOC_BLOCK_SIZE
-TRANSACTION_PREALLOC_SIZE
-TX_ISOLATION
-UNIQUE_CHECKS
-UPDATABLE_VIEWS_WITH_LIMIT
-USERSTAT
-VERSION
-VERSION_COMMENT
-VERSION_COMPILE_MACHINE
-VERSION_COMPILE_OS
-WAIT_TIMEOUT
-WARNING_COUNT
diff --git a/mysql-test/suite/percona/percona_server_variables_debug.test b/mysql-test/suite/percona/percona_server_variables_debug.test
deleted file mode 100644
index 971f6bae689..00000000000
--- a/mysql-test/suite/percona/percona_server_variables_debug.test
+++ /dev/null
@@ -1,2 +0,0 @@
---source include/have_debug.inc
---source percona_server_variables.inc
diff --git a/mysql-test/suite/percona/percona_server_variables_release.result b/mysql-test/suite/percona/percona_server_variables_release.result
deleted file mode 100644
index 29ac402c144..00000000000
--- a/mysql-test/suite/percona/percona_server_variables_release.result
+++ /dev/null
@@ -1,377 +0,0 @@
-SELECT Variable_name FROM INFORMATION_SCHEMA.SESSION_VARIABLES ORDER BY 1;
-Variable_name
-AUTOCOMMIT
-AUTOMATIC_SP_PRIVILEGES
-AUTO_INCREMENT_INCREMENT
-AUTO_INCREMENT_OFFSET
-BACK_LOG
-BASEDIR
-BIG_TABLES
-BINLOG_CACHE_SIZE
-BINLOG_DIRECT_NON_TRANSACTIONAL_UPDATES
-BINLOG_FORMAT
-BINLOG_STMT_CACHE_SIZE
-BULK_INSERT_BUFFER_SIZE
-CHARACTER_SETS_DIR
-CHARACTER_SET_CLIENT
-CHARACTER_SET_CONNECTION
-CHARACTER_SET_DATABASE
-CHARACTER_SET_FILESYSTEM
-CHARACTER_SET_RESULTS
-CHARACTER_SET_SERVER
-CHARACTER_SET_SYSTEM
-COLLATION_CONNECTION
-COLLATION_DATABASE
-COLLATION_SERVER
-COMPLETION_TYPE
-CONCURRENT_INSERT
-CONNECT_TIMEOUT
-DATADIR
-DATETIME_FORMAT
-DATE_FORMAT
-DEFAULT_STORAGE_ENGINE
-DEFAULT_WEEK_FORMAT
-DELAYED_INSERT_LIMIT
-DELAYED_INSERT_TIMEOUT
-DELAYED_QUEUE_SIZE
-DELAY_KEY_WRITE
-DIV_PRECISION_INCREMENT
-ENGINE_CONDITION_PUSHDOWN
-ERROR_COUNT
-EVENT_SCHEDULER
-EXPAND_FAST_INDEX_CREATION
-EXPIRE_LOGS_DAYS
-EXTERNAL_USER
-FAST_INDEX_CREATION
-FLUSH
-FLUSH_TIME
-FOREIGN_KEY_CHECKS
-FT_BOOLEAN_SYNTAX
-FT_MAX_WORD_LEN
-FT_MIN_WORD_LEN
-FT_QUERY_EXPANSION_LIMIT
-FT_STOPWORD_FILE
-GENERAL_LOG
-GENERAL_LOG_FILE
-GROUP_CONCAT_MAX_LEN
-HAVE_COMPRESS
-HAVE_CRYPT
-HAVE_CSV
-HAVE_DYNAMIC_LOADING
-HAVE_GEOMETRY
-HAVE_INNODB
-HAVE_NDBCLUSTER
-HAVE_OPENSSL
-HAVE_PARTITIONING
-HAVE_PROFILING
-HAVE_QUERY_CACHE
-HAVE_RESPONSE_TIME_DISTRIBUTION
-HAVE_RTREE_KEYS
-HAVE_SSL
-HAVE_SYMLINK
-HOSTNAME
-IDENTITY
-IGNORE_BUILTIN_INNODB
-INIT_CONNECT
-INIT_FILE
-INIT_SLAVE
-INNODB_ADAPTIVE_FLUSHING
-INNODB_ADAPTIVE_FLUSHING_METHOD
-INNODB_ADAPTIVE_HASH_INDEX
-INNODB_ADAPTIVE_HASH_INDEX_PARTITIONS
-INNODB_ADDITIONAL_MEM_POOL_SIZE
-INNODB_AUTOEXTEND_INCREMENT
-INNODB_AUTOINC_LOCK_MODE
-INNODB_BLOCKING_BUFFER_POOL_RESTORE
-INNODB_BUFFER_POOL_INSTANCES
-INNODB_BUFFER_POOL_RESTORE_AT_STARTUP
-INNODB_BUFFER_POOL_SHM_CHECKSUM
-INNODB_BUFFER_POOL_SHM_KEY
-INNODB_BUFFER_POOL_SIZE
-INNODB_CHANGE_BUFFERING
-INNODB_CHECKPOINT_AGE_TARGET
-INNODB_CHECKSUMS
-INNODB_COMMIT_CONCURRENCY
-INNODB_CONCURRENCY_TICKETS
-INNODB_CORRUPT_TABLE_ACTION
-INNODB_DATA_FILE_PATH
-INNODB_DATA_HOME_DIR
-INNODB_DICT_SIZE_LIMIT
-INNODB_DOUBLEWRITE
-INNODB_DOUBLEWRITE_FILE
-INNODB_FAKE_CHANGES
-INNODB_FAST_CHECKSUM
-INNODB_FAST_SHUTDOWN
-INNODB_FILE_FORMAT
-INNODB_FILE_FORMAT_CHECK
-INNODB_FILE_FORMAT_MAX
-INNODB_FILE_PER_TABLE
-INNODB_FLUSH_LOG_AT_TRX_COMMIT
-INNODB_FLUSH_METHOD
-INNODB_FLUSH_NEIGHBOR_PAGES
-INNODB_FORCE_LOAD_CORRUPTED
-INNODB_FORCE_RECOVERY
-INNODB_IBUF_ACCEL_RATE
-INNODB_IBUF_ACTIVE_CONTRACT
-INNODB_IBUF_MAX_SIZE
-INNODB_IMPORT_TABLE_FROM_XTRABACKUP
-INNODB_IO_CAPACITY
-INNODB_KILL_IDLE_TRANSACTION
-INNODB_LARGE_PREFIX
-INNODB_LAZY_DROP_TABLE
-INNODB_LOCKS_UNSAFE_FOR_BINLOG
-INNODB_LOCK_WAIT_TIMEOUT
-INNODB_LOG_BLOCK_SIZE
-INNODB_LOG_BUFFER_SIZE
-INNODB_LOG_FILES_IN_GROUP
-INNODB_LOG_FILE_SIZE
-INNODB_LOG_GROUP_HOME_DIR
-INNODB_MAX_DIRTY_PAGES_PCT
-INNODB_MAX_PURGE_LAG
-INNODB_MIRRORED_LOG_GROUPS
-INNODB_OLD_BLOCKS_PCT
-INNODB_OLD_BLOCKS_TIME
-INNODB_OPEN_FILES
-INNODB_PAGE_SIZE
-INNODB_PURGE_BATCH_SIZE
-INNODB_PURGE_THREADS
-INNODB_RANDOM_READ_AHEAD
-INNODB_READ_AHEAD
-INNODB_READ_AHEAD_THRESHOLD
-INNODB_READ_IO_THREADS
-INNODB_RECOVERY_STATS
-INNODB_RECOVERY_UPDATE_RELAY_LOG
-INNODB_REPLICATION_DELAY
-INNODB_ROLLBACK_ON_TIMEOUT
-INNODB_ROLLBACK_SEGMENTS
-INNODB_SHOW_LOCKS_HELD
-INNODB_SHOW_VERBOSE_LOCKS
-INNODB_SPIN_WAIT_DELAY
-INNODB_STATS_AUTO_UPDATE
-INNODB_STATS_METHOD
-INNODB_STATS_ON_METADATA
-INNODB_STATS_SAMPLE_PAGES
-INNODB_STATS_UPDATE_NEED_LOCK
-INNODB_STRICT_MODE
-INNODB_SUPPORT_XA
-INNODB_SYNC_SPIN_LOOPS
-INNODB_TABLE_LOCKS
-INNODB_THREAD_CONCURRENCY
-INNODB_THREAD_CONCURRENCY_TIMER_BASED
-INNODB_THREAD_SLEEP_DELAY
-INNODB_USE_GLOBAL_FLUSH_LOG_AT_TRX_COMMIT
-INNODB_USE_NATIVE_AIO
-INNODB_USE_SYS_MALLOC
-INNODB_USE_SYS_STATS_TABLE
-INNODB_VERSION
-INNODB_WRITE_IO_THREADS
-INSERT_ID
-INTERACTIVE_TIMEOUT
-JOIN_BUFFER_SIZE
-KEEP_FILES_ON_CREATE
-KEY_BUFFER_SIZE
-KEY_CACHE_AGE_THRESHOLD
-KEY_CACHE_BLOCK_SIZE
-KEY_CACHE_DIVISION_LIMIT
-LARGE_FILES_SUPPORT
-LARGE_PAGES
-LARGE_PAGE_SIZE
-LAST_INSERT_ID
-LC_MESSAGES
-LC_MESSAGES_DIR
-LC_TIME_NAMES
-LICENSE
-LOCAL_INFILE
-LOCKED_IN_MEMORY
-LOCK_WAIT_TIMEOUT
-LOG
-LOG_BIN
-LOG_BIN_TRUST_FUNCTION_CREATORS
-LOG_ERROR
-LOG_OUTPUT
-LOG_QUERIES_NOT_USING_INDEXES
-LOG_SLAVE_UPDATES
-LOG_SLOW_ADMIN_STATEMENTS
-LOG_SLOW_FILTER
-LOG_SLOW_QUERIES
-LOG_SLOW_RATE_LIMIT
-LOG_SLOW_SLAVE_STATEMENTS
-LOG_SLOW_SP_STATEMENTS
-LOG_SLOW_VERBOSITY
-LOG_WARNINGS
-LOG_WARNINGS_SUPPRESS
-LONG_QUERY_TIME
-LOWER_CASE_FILE_SYSTEM
-LOWER_CASE_TABLE_NAMES
-LOW_PRIORITY_UPDATES
-MAX_ALLOWED_PACKET
-MAX_BINLOG_CACHE_SIZE
-MAX_BINLOG_SIZE
-MAX_BINLOG_STMT_CACHE_SIZE
-MAX_CONNECTIONS
-MAX_CONNECT_ERRORS
-MAX_DELAYED_THREADS
-MAX_ERROR_COUNT
-MAX_HEAP_TABLE_SIZE
-MAX_INSERT_DELAYED_THREADS
-MAX_JOIN_SIZE
-MAX_LENGTH_FOR_SORT_DATA
-MAX_LONG_DATA_SIZE
-MAX_PREPARED_STMT_COUNT
-MAX_RELAY_LOG_SIZE
-MAX_SEEKS_FOR_KEY
-MAX_SORT_LENGTH
-MAX_SP_RECURSION_DEPTH
-MAX_TMP_TABLES
-MAX_USER_CONNECTIONS
-MAX_WRITE_LOCK_COUNT
-METADATA_LOCKS_CACHE_SIZE
-MIN_EXAMINED_ROW_LIMIT
-MULTI_RANGE_COUNT
-MYISAM_DATA_POINTER_SIZE
-MYISAM_MAX_SORT_FILE_SIZE
-MYISAM_MMAP_SIZE
-MYISAM_RECOVER_OPTIONS
-MYISAM_REPAIR_THREADS
-MYISAM_SORT_BUFFER_SIZE
-MYISAM_STATS_METHOD
-MYISAM_USE_MMAP
-NET_BUFFER_LENGTH
-NET_READ_TIMEOUT
-NET_RETRY_COUNT
-NET_WRITE_TIMEOUT
-NEW
-OLD
-OLD_ALTER_TABLE
-OLD_PASSWORDS
-OPEN_FILES_LIMIT
-OPTIMIZER_FIX
-OPTIMIZER_PRUNE_LEVEL
-OPTIMIZER_SEARCH_DEPTH
-OPTIMIZER_SWITCH
-PERFORMANCE_SCHEMA
-PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_LONG_SIZE
-PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_SIZE
-PERFORMANCE_SCHEMA_MAX_COND_CLASSES
-PERFORMANCE_SCHEMA_MAX_COND_INSTANCES
-PERFORMANCE_SCHEMA_MAX_FILE_CLASSES
-PERFORMANCE_SCHEMA_MAX_FILE_HANDLES
-PERFORMANCE_SCHEMA_MAX_FILE_INSTANCES
-PERFORMANCE_SCHEMA_MAX_MUTEX_CLASSES
-PERFORMANCE_SCHEMA_MAX_MUTEX_INSTANCES
-PERFORMANCE_SCHEMA_MAX_RWLOCK_CLASSES
-PERFORMANCE_SCHEMA_MAX_RWLOCK_INSTANCES
-PERFORMANCE_SCHEMA_MAX_TABLE_HANDLES
-PERFORMANCE_SCHEMA_MAX_TABLE_INSTANCES
-PERFORMANCE_SCHEMA_MAX_THREAD_CLASSES
-PERFORMANCE_SCHEMA_MAX_THREAD_INSTANCES
-PID_FILE
-PLUGIN_DIR
-PORT
-PRELOAD_BUFFER_SIZE
-PROFILING
-PROFILING_HISTORY_SIZE
-PROTOCOL_VERSION
-PROXY_USER
-PSEUDO_THREAD_ID
-QUERY_ALLOC_BLOCK_SIZE
-QUERY_CACHE_LIMIT
-QUERY_CACHE_MIN_RES_UNIT
-QUERY_CACHE_SIZE
-QUERY_CACHE_STRIP_COMMENTS
-QUERY_CACHE_TYPE
-QUERY_CACHE_WLOCK_INVALIDATE
-QUERY_PREALLOC_SIZE
-QUERY_RESPONSE_TIME_RANGE_BASE
-QUERY_RESPONSE_TIME_STATS
-RAND_SEED1
-RAND_SEED2
-RANGE_ALLOC_BLOCK_SIZE
-READ_BUFFER_SIZE
-READ_ONLY
-READ_RND_BUFFER_SIZE
-RELAY_LOG
-RELAY_LOG_INDEX
-RELAY_LOG_INFO_FILE
-RELAY_LOG_PURGE
-RELAY_LOG_RECOVERY
-RELAY_LOG_SPACE_LIMIT
-REPORT_HOST
-REPORT_PASSWORD
-REPORT_PORT
-REPORT_USER
-RPL_RECOVERY_RANK
-SECURE_AUTH
-SECURE_FILE_PRIV
-SERVER_ID
-SKIP_EXTERNAL_LOCKING
-SKIP_NAME_RESOLVE
-SKIP_NETWORKING
-SKIP_SHOW_DATABASE
-SLAVE_COMPRESSED_PROTOCOL
-SLAVE_EXEC_MODE
-SLAVE_LOAD_TMPDIR
-SLAVE_NET_TIMEOUT
-SLAVE_SKIP_ERRORS
-SLAVE_TRANSACTION_RETRIES
-SLAVE_TYPE_CONVERSIONS
-SLOW_LAUNCH_TIME
-SLOW_QUERY_LOG
-SLOW_QUERY_LOG_FILE
-SLOW_QUERY_LOG_TIMESTAMP_ALWAYS
-SLOW_QUERY_LOG_TIMESTAMP_PRECISION
-SLOW_QUERY_LOG_USE_GLOBAL_CONTROL
-SOCKET
-SORT_BUFFER_SIZE
-SQL_AUTO_IS_NULL
-SQL_BIG_SELECTS
-SQL_BIG_TABLES
-SQL_BUFFER_RESULT
-SQL_LOG_BIN
-SQL_LOG_OFF
-SQL_LOW_PRIORITY_UPDATES
-SQL_MAX_JOIN_SIZE
-SQL_MODE
-SQL_NOTES
-SQL_QUOTE_SHOW_CREATE
-SQL_SAFE_UPDATES
-SQL_SELECT_LIMIT
-SQL_SLAVE_SKIP_COUNTER
-SQL_WARNINGS
-SSL_CA
-SSL_CAPATH
-SSL_CERT
-SSL_CIPHER
-SSL_KEY
-STORAGE_ENGINE
-SYNC_BINLOG
-SYNC_FRM
-SYNC_MASTER_INFO
-SYNC_RELAY_LOG
-SYNC_RELAY_LOG_INFO
-SYSTEM_TIME_ZONE
-TABLE_DEFINITION_CACHE
-TABLE_OPEN_CACHE
-THREAD_CACHE_SIZE
-THREAD_CONCURRENCY
-THREAD_HANDLING
-THREAD_STACK
-THREAD_STATISTICS
-TIMED_MUTEXES
-TIMESTAMP
-TIME_FORMAT
-TIME_ZONE
-TMPDIR
-TMP_TABLE_SIZE
-TRANSACTION_ALLOC_BLOCK_SIZE
-TRANSACTION_PREALLOC_SIZE
-TX_ISOLATION
-UNIQUE_CHECKS
-UPDATABLE_VIEWS_WITH_LIMIT
-USERSTAT
-VERSION
-VERSION_COMMENT
-VERSION_COMPILE_MACHINE
-VERSION_COMPILE_OS
-WAIT_TIMEOUT
-WARNING_COUNT
diff --git a/mysql-test/suite/percona/percona_server_variables_release.test b/mysql-test/suite/percona/percona_server_variables_release.test
deleted file mode 100644
index 6427045864c..00000000000
--- a/mysql-test/suite/percona/percona_server_variables_release.test
+++ /dev/null
@@ -1,2 +0,0 @@
---source include/not_debug.inc
---source percona_server_variables.inc
diff --git a/mysql-test/suite/percona/percona_show_temp_tables.result b/mysql-test/suite/percona/percona_show_temp_tables.result
deleted file mode 100644
index cbcb0331896..00000000000
--- a/mysql-test/suite/percona/percona_show_temp_tables.result
+++ /dev/null
@@ -1,58 +0,0 @@
-drop table if exists t1,t2,t3;
-drop database if exists showtemp;
-create database if not exists showtemp;
-use test;
-create temporary table t1(id int);
-create temporary table t2(id int);
-create temporary table showtemp.t3(id int);
-insert into t1 values(10),(20),(30),(40);
-insert into showtemp.t3 values(999);
-show temporary tables;
-Temp_tables_in_test
-t2
-t1
-show temporary tables from test;
-Temp_tables_in_test
-t2
-t1
-show temporary tables in showtemp;
-Temp_tables_in_showtemp
-t3
-select table_schema, table_name, engine, table_rows from Information_schema.temporary_tables;
-table_schema table_name engine table_rows
-showtemp t3 MyISAM 1
-test t2 MyISAM 0
-test t1 MyISAM 4
-select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
-table_schema table_name engine table_rows
-showtemp t3 MyISAM 1
-test t2 MyISAM 0
-test t1 MyISAM 4
-select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='showtemp';
-table_schema table_name engine table_rows
-showtemp t3 MyISAM 1
-select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='temp';
-table_schema table_name engine table_rows
-drop table if exists showtemp.t2;
-create temporary table t1(id int);
-create temporary table showtemp.t2(id int);
-show temporary tables;
-Temp_tables_in_test
-t1
-select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
-table_schema table_name engine table_rows
-showtemp t2 MyISAM 0
-test t1 MyISAM 0
-showtemp t3 MyISAM 1
-test t2 MyISAM 0
-test t1 MyISAM 4
-drop table showtemp.t2;
-drop table t1;
-select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
-table_schema table_name engine table_rows
-showtemp t3 MyISAM 1
-test t2 MyISAM 0
-test t1 MyISAM 4
-drop table t1, t2;
-drop table showtemp.t3;
-drop database showtemp;
diff --git a/mysql-test/suite/percona/percona_show_temp_tables.test b/mysql-test/suite/percona/percona_show_temp_tables.test
deleted file mode 100644
index 8837df199c5..00000000000
--- a/mysql-test/suite/percona/percona_show_temp_tables.test
+++ /dev/null
@@ -1,65 +0,0 @@
-# Uses GRANT commands that usually disabled in embedded server
--- source include/not_embedded.inc
-
-# Save the initial number of concurrent sessions
---source include/count_sessions.inc
-
-#
-# Test of SHOW [GLOBAL] TEMPORARY TABLES [FROM/IN] DB and
-# Information_schema.temporary_tables and global_temporary_tables
-#
-
-connect(stcon1,localhost,root,,test);
-connect(stcon2,localhost,root,,test);
-
-connection stcon1;
-
---disable_warnings
-drop table if exists t1,t2,t3;
-drop database if exists showtemp;
-create database if not exists showtemp;
---enable_warnings
-
-use test;
-create temporary table t1(id int);
-create temporary table t2(id int);
-create temporary table showtemp.t3(id int);
-insert into t1 values(10),(20),(30),(40);
-insert into showtemp.t3 values(999);
-
-show temporary tables;
-# "Session" is not same value always. mysql-test cannot test it always.
-#show global temporary tables;
-show temporary tables from test;
-show temporary tables in showtemp;
-select table_schema, table_name, engine, table_rows from Information_schema.temporary_tables;
-select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
-select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='showtemp';
-select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='temp';
-
-connection stcon2;
-
---disable_warnings
-drop table if exists showtemp.t2;
---enable_warnings
-create temporary table t1(id int);
-create temporary table showtemp.t2(id int);
-show temporary tables;
-select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
-drop table showtemp.t2;
-drop table t1;
-
-disconnect stcon2;
-
-connection stcon1;
-select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
-
-drop table t1, t2;
-drop table showtemp.t3;
-drop database showtemp;
-
-connection default;
-disconnect stcon1;
-
-# Wait till all disconnects are completed
---source include/wait_until_count_sessions.inc
diff --git a/mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl-master.opt b/mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl-master.opt
deleted file mode 100644
index 233b50a1f89..00000000000
--- a/mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow_query_log_timestamp_always
diff --git a/mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl.result b/mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl.result
deleted file mode 100644
index 13684fad10c..00000000000
--- a/mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl.result
+++ /dev/null
@@ -1,3 +0,0 @@
-show global variables like 'slow_query_log_timestamp_always';
-Variable_name Value
-slow_query_log_timestamp_always ON
diff --git a/mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl.test b/mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl.test
deleted file mode 100644
index e73c4202869..00000000000
--- a/mysql-test/suite/percona/percona_slow_extended-slow_query_log_timestamp_always-cl.test
+++ /dev/null
@@ -1 +0,0 @@
-show global variables like 'slow_query_log_timestamp_always';
diff --git a/mysql-test/suite/percona/percona_slow_extended-use_global_control-master.opt b/mysql-test/suite/percona/percona_slow_extended-use_global_control-master.opt
deleted file mode 100644
index bd62c08c475..00000000000
--- a/mysql-test/suite/percona/percona_slow_extended-use_global_control-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_slow_query_log-control_global_slow.log --long-query-time=1
diff --git a/mysql-test/suite/percona/percona_slow_extended-use_global_control.result b/mysql-test/suite/percona/percona_slow_extended-use_global_control.result
deleted file mode 100644
index 699c95e9671..00000000000
--- a/mysql-test/suite/percona/percona_slow_extended-use_global_control.result
+++ /dev/null
@@ -1,12 +0,0 @@
-SELECT sleep(2);
-sleep(2)
-0
-set global log_slow_verbosity=innodb;
-set global slow_query_log_use_global_control="log_slow_verbosity,long_query_time";
-SELECT sleep(2);
-sleep(2)
-0
-set global slow_query_log_use_global_control='';
-set global log_slow_verbosity='';
-FLUSH LOGS;
-1
diff --git a/mysql-test/suite/percona/percona_slow_extended-use_global_control.test b/mysql-test/suite/percona/percona_slow_extended-use_global_control.test
deleted file mode 100644
index 199b652561c..00000000000
--- a/mysql-test/suite/percona/percona_slow_extended-use_global_control.test
+++ /dev/null
@@ -1,12 +0,0 @@
-source include/have_xtradb.inc;
-SELECT sleep(2);
-set global log_slow_verbosity=innodb;
-set global slow_query_log_use_global_control="log_slow_verbosity,long_query_time";
-SELECT sleep(2);
-set global slow_query_log_use_global_control='';
-set global log_slow_verbosity='';
-
-FLUSH LOGS;
---let grep_file = $MYSQLTEST_VARDIR/mysqld.1/data/percona_slow_query_log-control_global_slow.log
---let grep_pattern = No InnoDB statistics available for this query
---source grep.inc
diff --git a/mysql-test/suite/percona/percona_sync_flush.result b/mysql-test/suite/percona/percona_sync_flush.result
deleted file mode 100644
index 12335257b32..00000000000
--- a/mysql-test/suite/percona/percona_sync_flush.result
+++ /dev/null
@@ -1,35 +0,0 @@
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (id INT AUTO_INCREMENT, foo CHAR(255), PRIMARY KEY (id)) ENGINE=InnoDB;
-SET @@global.innodb_flush_checkpoint_debug=1;
-INSERT INTO t1(foo) VALUES ('a'), ('b');
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-INSERT INTO t1(foo) SELECT foo FROM t1;
-UPDATE t1 SET foo='c';
-SET @@global.innodb_flush_checkpoint_debug=0;
-UPDATE t1 SET foo='d' WHERE foo='c';
-DROP TABLE t1;
diff --git a/mysql-test/suite/percona/percona_sync_flush.test b/mysql-test/suite/percona/percona_sync_flush.test
deleted file mode 100644
index 4252bf03e7f..00000000000
--- a/mysql-test/suite/percona/percona_sync_flush.test
+++ /dev/null
@@ -1,33 +0,0 @@
-# Test for InnoDB sync state flushing.
-
---source include/have_xtradb.inc
---source include/have_debug.inc
-
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-
-CREATE TABLE t1 (id INT AUTO_INCREMENT, foo CHAR(255), PRIMARY KEY (id)) ENGINE=InnoDB;
-
-# It is hard to get to InnoDB sync state flushing in MTR with regular workload. Perhaps
-# it is possible with many parallel connections, but that would be brittle anyway.
-# So, just disable preflushing and checkpointing and issue simple workload.
-SET @@global.innodb_flush_checkpoint_debug=1;
-
-INSERT INTO t1(foo) VALUES ('a'), ('b');
-
-let $rep=0;
-while ($rep < 14)
-{
- INSERT INTO t1(foo) SELECT foo FROM t1;
- UPDATE t1 SET foo='c';
- inc $rep;
-}
-
-# By now checkpoint age should be well past sync flush point. Allow
-# preflushing/checkpointing again and do some work in order to do the sync flush.
-SET @@global.innodb_flush_checkpoint_debug=0;
-
-UPDATE t1 SET foo='d' WHERE foo='c';
-
-DROP TABLE t1;
diff --git a/mysql-test/suite/percona/percona_xtradb_bug317074.result b/mysql-test/suite/percona/percona_xtradb_bug317074.result
deleted file mode 100644
index 7c1876fb7bf..00000000000
--- a/mysql-test/suite/percona/percona_xtradb_bug317074.result
+++ /dev/null
@@ -1,5 +0,0 @@
-SET @old_innodb_file_format=@@innodb_file_format;
-SET @old_innodb_file_format_max=@@innodb_file_format_max;
-SET @old_innodb_file_per_table=@@innodb_file_per_table;
-SET GLOBAL innodb_file_format='Barracuda';
-SET GLOBAL innodb_file_per_table=ON;
diff --git a/mysql-test/suite/percona/percona_xtradb_bug317074.test b/mysql-test/suite/percona/percona_xtradb_bug317074.test
deleted file mode 100644
index 5f9db073060..00000000000
--- a/mysql-test/suite/percona/percona_xtradb_bug317074.test
+++ /dev/null
@@ -1,48 +0,0 @@
--- source include/have_xtradb.inc
-
-SET @old_innodb_file_format=@@innodb_file_format;
-SET @old_innodb_file_format_max=@@innodb_file_format_max;
-SET @old_innodb_file_per_table=@@innodb_file_per_table;
-SET GLOBAL innodb_file_format='Barracuda';
-SET GLOBAL innodb_file_per_table=ON;
-
--- disable_query_log
--- disable_result_log
-
-DROP TABLE IF EXISTS `test1`;
-CREATE TABLE IF NOT EXISTS `test1` (
- `a` int primary key auto_increment,
- `b` int default 0,
- `c` char(100) default 'testtest'
-) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
-
-set autocommit=0;
-delimiter |;
-CREATE PROCEDURE insert_many(p1 int)
-BEGIN
-SET @x = 0;
-SET @y = 0;
-start transaction;
-REPEAT
- insert into test1 set b=1;
- SET @x = @x + 1;
- SET @y = @y + 1;
- IF @y >= 1000 THEN
- commit;
- start transaction;
- SET @y = 0;
- END IF;
-UNTIL @x >= p1 END REPEAT;
-commit;
-END|
-delimiter ;|
-call insert_many(100000);
-DROP PROCEDURE insert_many;
-
-# The bug is hangup at the following statement
-ALTER TABLE test1 ENGINE=MyISAM;
-
-DROP TABLE test1;
-SET GLOBAL innodb_file_format=@old_innodb_file_format;
-SET GLOBAL innodb_file_format_max=@old_innodb_file_format_max;
-SET GLOBAL innodb_file_per_table=@old_innodb_file_per_table;
diff --git a/mysql-test/suite/percona/profiling_slow.patch/percona_bug643149.result b/mysql-test/suite/percona/profiling_slow.patch/percona_bug643149.result
deleted file mode 100644
index 1a447a194e7..00000000000
--- a/mysql-test/suite/percona/profiling_slow.patch/percona_bug643149.result
+++ /dev/null
@@ -1,21 +0,0 @@
-SET @old_slow_query_log_file=@@global.slow_query_log_file;
-SET GLOBAL slow_query_log=on;
-SET LOCAL log_slow_verbosity='profiling';
-SET LOCAL long_query_time=0;
-SET GLOBAL slow_query_log_file='MYSQLTEST_VARDIR/percona_bug643149_slow.log';;
-SELECT 1;
-1
-1
-# User@Host: root[root] @ localhost []
-# Thread_id: X Schema: test Last_errno: X Killed: X
-# Query_time: X.X Lock_time: X.X Rows_sent: X Rows_examined: X Rows_affected: X Rows_read: X
-# Bytes_sent: X Tmp_tables: X Tmp_disk_tables: X Tmp_table_sizes: X
-# Profile_starting: X.X Profile_starting_cpu: X.X Profile_Opening_tables: X.X Profile_Opening_tables_cpu: X.X Profile_query_end: X.X Profile_query_end_cpu: X.X Profile_closing_tables: X.X Profile_closing_tables_cpu: X.X Profile_freeing_items: X.X Profile_freeing_items_cpu: X.X Profile_logging_slow_query: X.X Profile_logging_slow_query_cpu: X.X
-# Profile_total: X.X Profile_total_cpu: X.X
-# User@Host: root[root] @ localhost []
-# Thread_id: X Schema: test Last_errno: X Killed: X
-# Query_time: X.X Lock_time: X.X Rows_sent: X Rows_examined: X Rows_affected: X Rows_read: X
-# Bytes_sent: X Tmp_tables: X Tmp_disk_tables: X Tmp_table_sizes: X
-# Profile_starting: X.X Profile_starting_cpu: X.X Profile_checking_permissions: X.X Profile_checking_permissions_cpu: X.X Profile_Opening_tables: X.X Profile_Opening_tables_cpu: X.X Profile_init: X.X Profile_init_cpu: X.X Profile_optimizing: X.X Profile_optimizing_cpu: X.X Profile_executing: X.X Profile_executing_cpu: X.X Profile_end: X.X Profile_end_cpu: X.X Profile_query_end: X.X Profile_query_end_cpu: X.X Profile_closing_tables: X.X Profile_closing_tables_cpu: X.X Profile_freeing_items: X.X Profile_freeing_items_cpu: X.X Profile_logging_slow_query: X.X Profile_logging_slow_query_cpu: X.X
-# Profile_total: X.X Profile_total_cpu: X.X
-SET GLOBAL slow_query_log_file=@old_slow_query_log_file;
diff --git a/mysql-test/suite/percona/profiling_slow.patch/percona_bug643149.test b/mysql-test/suite/percona/profiling_slow.patch/percona_bug643149.test
deleted file mode 100644
index fa31b169a19..00000000000
--- a/mysql-test/suite/percona/profiling_slow.patch/percona_bug643149.test
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# This test suffers from server
-# Bug#38124 "general_log_file" variable silently unset when using expression
-# In short:
-# SET GLOBAL general_log_file = @<whatever>
-# SET GLOBAL slow_query_log = @<whatever>
-# cause that the value of these server system variables is set to default
-# instead of the assigned values. There comes no error message or warning.
-# If this bug is fixed please
-# 1. try this test with "let $fixed_bug38124 = 0;"
-# 2. remove all workarounds if 1. was successful.
---source include/have_profiling.inc
-let $fixed_bug38124 = 0;
-
-SET @old_slow_query_log_file=@@global.slow_query_log_file;
-SET GLOBAL slow_query_log=on;
-SET LOCAL log_slow_verbosity='profiling';
-SET LOCAL long_query_time=0;
-
-let slogfile=$MYSQLTEST_VARDIR/percona_bug643149_slow.log;
---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
---eval SET GLOBAL slow_query_log_file='$slogfile';
-
-SELECT 1;
-
-perl;
- $slogfile= $ENV{'slogfile'};
-
- open(FILE, "$slogfile") or
- die("Unable to read slow query log file $slogfile: $!\n");
- while(<FILE>) {
- next if (!/^#/);
- next if (/^# Time:/);
- s/[0-9]+/X/g;
- print;
- }
-
- close(FILE);
-EOF
-
-SET GLOBAL slow_query_log_file=@old_slow_query_log_file;
-
-if(!$fixed_bug38124)
-{
- --disable_query_log
- let $my_var = `SELECT @old_slow_query_log_file`;
- eval SET @@global.slow_query_log_file = '$my_var';
- --enable_query_log
-}
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.inc b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.inc
deleted file mode 100644
index d9804722147..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.inc
+++ /dev/null
@@ -1,117 +0,0 @@
---source percona_query_cache_with_comments_clear.inc
-let $query=/* with comment first */select * from t1;
-eval $query;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=# with comment first
-select * from t1;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=-- with comment first
-select * from t1;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=/* with comment first and "quote" */select * from t1;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=# with comment first and "quote"
-select * from t1;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=-- with comment first and "quote"
-select * from t1;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=
- /* with comment and whitespaces first */select * from t1;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=
- # with comment and whitespaces first
-select * from t1;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=
- -- with comment and whitespaces first
-select * from t1;
---source percona_query_cache_with_comments_eval.inc
-
-let $internal=* internal comment *;
-
-let $query=select * /$internal/ from t1;
---source percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/ from t1;
---source percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/from t1;
---source percona_query_cache_with_comments_eval.inc
-
-let $internal=* internal comment with "quote" *;
-
-let $query=select * /$internal/ from t1;
---source percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/ from t1;
---source percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/from t1;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1
-;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 ;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 ;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1
-/* comment in the end */;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1
-/* *\/ */;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1
-/* comment in the end */
-;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 #comment in the end;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 #comment in the end
-;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 -- comment in the end;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 -- comment in the end
-;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select */* a comment \*/from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select *# a comment \\
-from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select *-- a comment \\
-from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select "\\\\"" /* not a comment */" from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select "\\\\"" /*! not a comment */" from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-# following two queries related to bug #856404.
-# There are different queries, but opt_query_cache_strip_comments thinks that they are equal.
-let $query=select ' \' ' from t1;
---source percona_query_cache_with_comments_eval.inc
-
-let $query=select ' \' /* comment inside quotes with internal backslash quote */' from t1;
---source percona_query_cache_with_comments_eval.inc
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.inc.backup b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.inc.backup
deleted file mode 100644
index 4b5b31e9239..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.inc.backup
+++ /dev/null
@@ -1,88 +0,0 @@
---source include/percona_query_cache_with_comments_clear.inc
-let $query=/* with comment first */select * from t1;
-eval $query;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=# with comment first
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=-- with comment first
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=/* with comment first and "quote" */select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=# with comment first and "quote"
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=-- with comment first and "quote"
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=
- /* with comment and whitespaces first */select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=
- # with comment and whitespaces first
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=
- -- with comment and whitespaces first
-select * from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $internal=* internal comment *;
-
-let $query=select * /$internal/ from t1;
---source include/percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/ from t1;
---source include/percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $internal=* internal comment with "quote" *;
-
-let $query=select * /$internal/ from t1;
---source include/percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/ from t1;
---source include/percona_query_cache_with_comments_eval.inc
-let $query=select */$internal/from t1;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1
-;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 ;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 ;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1
-/* comment in the end */;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1
-/* comment in the end */
-;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 #comment in the end;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 #comment in the end
-;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 -- comment in the end;
---source include/percona_query_cache_with_comments_eval.inc
-
-let $query=select * from t1 -- comment in the end
-;
---source include/percona_query_cache_with_comments_eval.inc
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.result b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.result
deleted file mode 100644
index d1a6ded08d7..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.result
+++ /dev/null
@@ -1,1058 +0,0 @@
-set global query_cache_strip_comments=ON;
-set GLOBAL query_cache_size=1355776;
-drop table if exists t1;
-create table t1 (a int not null);
-insert into t1 values (1),(2),(3);
-flush query cache;
-flush query cache;
-reset query cache;
-flush status;
-flush query cache;
-flush query cache;
-reset query cache;
-flush status;
-/* with comment first */select * from t1;
-a
-1
-2
-3
------------------------------------------------------
-/* with comment first */select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 0
-/* with comment first */select * from t1;
-a
-1
-2
-3
-/* with comment first */select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 2
------------------------------------------------------
-# with comment first
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 2
-# with comment first
-select * from t1;
-a
-1
-2
-3
-# with comment first
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 4
------------------------------------------------------
--- with comment first
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 4
--- with comment first
-select * from t1;
-a
-1
-2
-3
--- with comment first
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 6
------------------------------------------------------
-/* with comment first and "quote" */select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 6
-/* with comment first and "quote" */select * from t1;
-a
-1
-2
-3
-/* with comment first and "quote" */select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 8
------------------------------------------------------
-# with comment first and "quote"
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 8
-# with comment first and "quote"
-select * from t1;
-a
-1
-2
-3
-# with comment first and "quote"
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 10
------------------------------------------------------
--- with comment first and "quote"
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 10
--- with comment first and "quote"
-select * from t1;
-a
-1
-2
-3
--- with comment first and "quote"
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 12
------------------------------------------------------
-/* with comment and whitespaces first */select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 12
-/* with comment and whitespaces first */select * from t1;
-a
-1
-2
-3
-/* with comment and whitespaces first */select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 14
------------------------------------------------------
-# with comment and whitespaces first
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 14
-# with comment and whitespaces first
-select * from t1;
-a
-1
-2
-3
-# with comment and whitespaces first
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 16
------------------------------------------------------
--- with comment and whitespaces first
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 16
--- with comment and whitespaces first
-select * from t1;
-a
-1
-2
-3
--- with comment and whitespaces first
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 18
------------------------------------------------------
-select * /* internal comment */ from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 18
-select * /* internal comment */ from t1;
-a
-1
-2
-3
-select * /* internal comment */ from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 20
------------------------------------------------------
-select */* internal comment */ from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 20
-select */* internal comment */ from t1;
-a
-1
-2
-3
-select */* internal comment */ from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 22
------------------------------------------------------
-select */* internal comment */from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 22
-select */* internal comment */from t1;
-a
-1
-2
-3
-select */* internal comment */from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 24
------------------------------------------------------
-select * /* internal comment with "quote" */ from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 24
-select * /* internal comment with "quote" */ from t1;
-a
-1
-2
-3
-select * /* internal comment with "quote" */ from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 26
------------------------------------------------------
-select */* internal comment with "quote" */ from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 26
-select */* internal comment with "quote" */ from t1;
-a
-1
-2
-3
-select */* internal comment with "quote" */ from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 28
------------------------------------------------------
-select */* internal comment with "quote" */from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 28
-select */* internal comment with "quote" */from t1;
-a
-1
-2
-3
-select */* internal comment with "quote" */from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 30
------------------------------------------------------
-select * from t1
-
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 30
-select * from t1
-;
-a
-1
-2
-3
-select * from t1
-;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 32
------------------------------------------------------
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 32
-select * from t1 ;
-a
-1
-2
-3
-select * from t1 ;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 34
------------------------------------------------------
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 34
-select * from t1 ;
-a
-1
-2
-3
-select * from t1 ;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 36
------------------------------------------------------
-select * from t1
-/* comment in the end */
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 36
-select * from t1
-/* comment in the end */;
-a
-1
-2
-3
-select * from t1
-/* comment in the end */;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 38
------------------------------------------------------
-select * from t1
-/* *\/ */
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 38
-select * from t1
-/* *\/ */;
-a
-1
-2
-3
-select * from t1
-/* *\/ */;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 40
------------------------------------------------------
-select * from t1
-/* comment in the end */
-
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 40
-select * from t1
-/* comment in the end */
-;
-a
-1
-2
-3
-select * from t1
-/* comment in the end */
-;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 42
------------------------------------------------------
-select * from t1 #comment in the end
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 42
-select * from t1 #comment in the end;
-a
-1
-2
-3
-select * from t1 #comment in the end;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 44
------------------------------------------------------
-select * from t1 #comment in the end
-
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 44
-select * from t1 #comment in the end
-;
-a
-1
-2
-3
-select * from t1 #comment in the end
-;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 46
------------------------------------------------------
-select * from t1 -- comment in the end
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 46
-select * from t1 -- comment in the end;
-a
-1
-2
-3
-select * from t1 -- comment in the end;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 48
------------------------------------------------------
-select * from t1 -- comment in the end
-
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 48
-select * from t1 -- comment in the end
-;
-a
-1
-2
-3
-select * from t1 -- comment in the end
-;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 50
------------------------------------------------------
-select */* a comment \*/from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 50
-select */* a comment \*/from t1;
-a
-1
-2
-3
-select */* a comment \*/from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 52
------------------------------------------------------
-select *# a comment \
-from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 52
-select *# a comment \
-from t1;
-a
-1
-2
-3
-select *# a comment \
-from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 54
------------------------------------------------------
-select *-- a comment \
-from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 54
-select *-- a comment \
-from t1;
-a
-1
-2
-3
-select *-- a comment \
-from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 56
------------------------------------------------------
-select "\\"" /* not a comment */" from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 56
-select "\\"" /* not a comment */" from t1;
-\" /* not a comment */
-\" /* not a comment */
-\" /* not a comment */
-\" /* not a comment */
-select "\\"" /* not a comment */" from t1;
-\" /* not a comment */
-\" /* not a comment */
-\" /* not a comment */
-\" /* not a comment */
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 2
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 2
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 57
------------------------------------------------------
-select "\\"" /*! not a comment */" from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 2
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 2
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 57
-select "\\"" /*! not a comment */" from t1;
-\" /*! not a comment */
-\" /*! not a comment */
-\" /*! not a comment */
-\" /*! not a comment */
-select "\\"" /*! not a comment */" from t1;
-\" /*! not a comment */
-\" /*! not a comment */
-\" /*! not a comment */
-\" /*! not a comment */
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 3
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 3
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 58
------------------------------------------------------
-select ' \' ' from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 3
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 3
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 58
-select ' \' ' from t1;
-'
- '
- '
- '
-select ' \' ' from t1;
-'
- '
- '
- '
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 4
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 4
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 59
------------------------------------------------------
-select ' \' /* comment inside quotes with internal backslash quote */' from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 4
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 4
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 59
-select ' \' /* comment inside quotes with internal backslash quote */' from t1;
-' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
-select ' \' /* comment inside quotes with internal backslash quote */' from t1;
-' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 5
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 5
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 60
-DROP TABLE t1;
-SET GLOBAL query_cache_size=default;
-set global query_cache_strip_comments=OFF;
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.test b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.test
deleted file mode 100644
index 0b93441f364..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments.test
+++ /dev/null
@@ -1,5 +0,0 @@
---disable_ps_protocol
-set global query_cache_strip_comments=ON;
--- source include/percona_query_cache_with_comments_begin.inc
--- source include/percona_query_cache_with_comments.inc
--- source include/percona_query_cache_with_comments_end.inc
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_begin.inc b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_begin.inc
deleted file mode 100644
index 6bfd2bfbc83..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_begin.inc
+++ /dev/null
@@ -1,12 +0,0 @@
--- source include/have_query_cache.inc
-
-set GLOBAL query_cache_size=1355776;
-
---disable_warnings
-drop table if exists t1;
---enable_warnings
-
-create table t1 (a int not null);
-insert into t1 values (1),(2),(3);
-
---source percona_query_cache_with_comments_clear.inc
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_clear.inc b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_clear.inc
deleted file mode 100644
index 728a19a3c97..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_clear.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-# Reset query cache variables.
-flush query cache; # This crashed in some versions
-flush query cache; # This crashed in some versions
-reset query cache;
-flush status;
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_crash.result b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_crash.result
deleted file mode 100644
index 32bd3645ec4..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_crash.result
+++ /dev/null
@@ -1,21 +0,0 @@
-set GLOBAL query_cache_size=1355776;
-drop table if exists t1;
-create table t1 (a int not null);
-insert into t1 values (1),(2),(3);
-flush query cache;
-flush query cache;
-reset query cache;
-flush status;
-( select * from t1 );
-a
-1
-2
-3
-/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */;
-/* only comment */;
-# only comment
-;
--- only comment
-;
-DROP TABLE t1;
-SET GLOBAL query_cache_size= default;
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_crash.test b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_crash.test
deleted file mode 100644
index e125c75c3de..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_crash.test
+++ /dev/null
@@ -1,22 +0,0 @@
--- source include/have_query_cache.inc
-set GLOBAL query_cache_size=1355776;
---disable_warnings
-drop table if exists t1;
---enable_warnings
-create table t1 (a int not null);
-insert into t1 values (1),(2),(3);
-flush query cache; # This crashed in some versions
-flush query cache; # This crashed in some versions
-reset query cache;
-flush status;
-( select * from t1 );
-/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */;
-/* only comment */;
-let query=# only comment
-;
-eval $query;
-let query=-- only comment
-;
-eval $query;
-DROP TABLE t1;
-SET GLOBAL query_cache_size= default;
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_disable.result b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_disable.result
deleted file mode 100644
index 7e793a942c5..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_disable.result
+++ /dev/null
@@ -1,1057 +0,0 @@
-set GLOBAL query_cache_size=1355776;
-drop table if exists t1;
-create table t1 (a int not null);
-insert into t1 values (1),(2),(3);
-flush query cache;
-flush query cache;
-reset query cache;
-flush status;
-flush query cache;
-flush query cache;
-reset query cache;
-flush status;
-/* with comment first */select * from t1;
-a
-1
-2
-3
------------------------------------------------------
-/* with comment first */select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 0
-/* with comment first */select * from t1;
-a
-1
-2
-3
-/* with comment first */select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 2
------------------------------------------------------
-# with comment first
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 2
-# with comment first
-select * from t1;
-a
-1
-2
-3
-# with comment first
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 2
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 2
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 2
------------------------------------------------------
--- with comment first
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 2
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 2
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 2
--- with comment first
-select * from t1;
-a
-1
-2
-3
--- with comment first
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 3
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 3
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 2
------------------------------------------------------
-/* with comment first and "quote" */select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 3
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 3
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 2
-/* with comment first and "quote" */select * from t1;
-a
-1
-2
-3
-/* with comment first and "quote" */select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 4
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 4
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 3
------------------------------------------------------
-# with comment first and "quote"
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 4
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 4
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 3
-# with comment first and "quote"
-select * from t1;
-a
-1
-2
-3
-# with comment first and "quote"
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 5
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 5
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 3
------------------------------------------------------
--- with comment first and "quote"
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 5
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 5
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 3
--- with comment first and "quote"
-select * from t1;
-a
-1
-2
-3
--- with comment first and "quote"
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 6
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 6
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 3
------------------------------------------------------
-/* with comment and whitespaces first */select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 6
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 6
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 3
-/* with comment and whitespaces first */select * from t1;
-a
-1
-2
-3
-/* with comment and whitespaces first */select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 7
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 7
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 4
------------------------------------------------------
-# with comment and whitespaces first
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 7
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 7
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 4
-# with comment and whitespaces first
-select * from t1;
-a
-1
-2
-3
-# with comment and whitespaces first
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 8
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 8
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 4
------------------------------------------------------
--- with comment and whitespaces first
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 8
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 8
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 4
--- with comment and whitespaces first
-select * from t1;
-a
-1
-2
-3
--- with comment and whitespaces first
-select * from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 9
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 9
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 4
------------------------------------------------------
-select * /* internal comment */ from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 9
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 9
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 4
-select * /* internal comment */ from t1;
-a
-1
-2
-3
-select * /* internal comment */ from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 10
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 10
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 5
------------------------------------------------------
-select */* internal comment */ from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 10
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 10
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 5
-select */* internal comment */ from t1;
-a
-1
-2
-3
-select */* internal comment */ from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 11
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 11
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 6
------------------------------------------------------
-select */* internal comment */from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 11
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 11
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 6
-select */* internal comment */from t1;
-a
-1
-2
-3
-select */* internal comment */from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 12
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 12
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 7
------------------------------------------------------
-select * /* internal comment with "quote" */ from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 12
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 12
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 7
-select * /* internal comment with "quote" */ from t1;
-a
-1
-2
-3
-select * /* internal comment with "quote" */ from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 13
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 13
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 8
------------------------------------------------------
-select */* internal comment with "quote" */ from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 13
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 13
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 8
-select */* internal comment with "quote" */ from t1;
-a
-1
-2
-3
-select */* internal comment with "quote" */ from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 14
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 14
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 9
------------------------------------------------------
-select */* internal comment with "quote" */from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 14
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 14
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 9
-select */* internal comment with "quote" */from t1;
-a
-1
-2
-3
-select */* internal comment with "quote" */from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 15
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 15
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 10
------------------------------------------------------
-select * from t1
-
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 15
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 15
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 10
-select * from t1
-;
-a
-1
-2
-3
-select * from t1
-;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 16
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 16
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 11
------------------------------------------------------
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 16
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 16
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 11
-select * from t1 ;
-a
-1
-2
-3
-select * from t1 ;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 16
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 16
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 13
------------------------------------------------------
-select * from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 16
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 16
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 13
-select * from t1 ;
-a
-1
-2
-3
-select * from t1 ;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 16
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 16
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 15
------------------------------------------------------
-select * from t1
-/* comment in the end */
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 16
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 16
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 15
-select * from t1
-/* comment in the end */;
-a
-1
-2
-3
-select * from t1
-/* comment in the end */;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 17
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 17
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 16
------------------------------------------------------
-select * from t1
-/* *\/ */
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 17
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 17
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 16
-select * from t1
-/* *\/ */;
-a
-1
-2
-3
-select * from t1
-/* *\/ */;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 18
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 18
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 17
------------------------------------------------------
-select * from t1
-/* comment in the end */
-
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 18
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 18
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 17
-select * from t1
-/* comment in the end */
-;
-a
-1
-2
-3
-select * from t1
-/* comment in the end */
-;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 18
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 18
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 19
------------------------------------------------------
-select * from t1 #comment in the end
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 18
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 18
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 19
-select * from t1 #comment in the end;
-a
-1
-2
-3
-select * from t1 #comment in the end;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 19
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 19
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 20
------------------------------------------------------
-select * from t1 #comment in the end
-
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 19
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 19
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 20
-select * from t1 #comment in the end
-;
-a
-1
-2
-3
-select * from t1 #comment in the end
-;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 19
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 19
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 22
------------------------------------------------------
-select * from t1 -- comment in the end
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 19
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 19
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 22
-select * from t1 -- comment in the end;
-a
-1
-2
-3
-select * from t1 -- comment in the end;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 20
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 20
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 23
------------------------------------------------------
-select * from t1 -- comment in the end
-
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 20
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 20
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 23
-select * from t1 -- comment in the end
-;
-a
-1
-2
-3
-select * from t1 -- comment in the end
-;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 20
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 20
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 25
------------------------------------------------------
-select */* a comment \*/from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 20
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 20
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 25
-select */* a comment \*/from t1;
-a
-1
-2
-3
-select */* a comment \*/from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 21
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 21
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 26
------------------------------------------------------
-select *# a comment \
-from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 21
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 21
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 26
-select *# a comment \
-from t1;
-a
-1
-2
-3
-select *# a comment \
-from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 22
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 22
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 27
------------------------------------------------------
-select *-- a comment \
-from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 22
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 22
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 27
-select *-- a comment \
-from t1;
-a
-1
-2
-3
-select *-- a comment \
-from t1;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 23
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 23
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 28
------------------------------------------------------
-select "\\"" /* not a comment */" from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 23
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 23
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 28
-select "\\"" /* not a comment */" from t1;
-\" /* not a comment */
-\" /* not a comment */
-\" /* not a comment */
-\" /* not a comment */
-select "\\"" /* not a comment */" from t1;
-\" /* not a comment */
-\" /* not a comment */
-\" /* not a comment */
-\" /* not a comment */
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 24
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 24
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 29
------------------------------------------------------
-select "\\"" /*! not a comment */" from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 24
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 24
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 29
-select "\\"" /*! not a comment */" from t1;
-\" /*! not a comment */
-\" /*! not a comment */
-\" /*! not a comment */
-\" /*! not a comment */
-select "\\"" /*! not a comment */" from t1;
-\" /*! not a comment */
-\" /*! not a comment */
-\" /*! not a comment */
-\" /*! not a comment */
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 25
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 25
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 30
------------------------------------------------------
-select ' \' ' from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 25
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 25
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 30
-select ' \' ' from t1;
-'
- '
- '
- '
-select ' \' ' from t1;
-'
- '
- '
- '
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 26
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 26
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 31
------------------------------------------------------
-select ' \' /* comment inside quotes with internal backslash quote */' from t1
------------------------------------------------------
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 26
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 26
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 31
-select ' \' /* comment inside quotes with internal backslash quote */' from t1;
-' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
-select ' \' /* comment inside quotes with internal backslash quote */' from t1;
-' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
- ' /* comment inside quotes with internal backslash quote */
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 27
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 27
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 32
-DROP TABLE t1;
-SET GLOBAL query_cache_size=default;
-set global query_cache_strip_comments=OFF;
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_disable.test b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_disable.test
deleted file mode 100644
index ad59ac3566c..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_disable.test
+++ /dev/null
@@ -1,3 +0,0 @@
--- source include/percona_query_cache_with_comments_begin.inc
--- source include/percona_query_cache_with_comments.inc
--- source include/percona_query_cache_with_comments_end.inc
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_end.inc b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_end.inc
deleted file mode 100644
index d5356359d7e..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_end.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-DROP TABLE t1;
-SET GLOBAL query_cache_size=default;
-set global query_cache_strip_comments=OFF;
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_eval.inc b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_eval.inc
deleted file mode 100644
index f0c200245e0..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_eval.inc
+++ /dev/null
@@ -1,7 +0,0 @@
-echo -----------------------------------------------------;
-echo $query;
-echo -----------------------------------------------------;
---source percona_query_cache_with_comments_show.inc
-eval $query;
-eval $query;
---source percona_query_cache_with_comments_show.inc
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_prepared_statements.result b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_prepared_statements.result
deleted file mode 100644
index 9b28b7f0b62..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_prepared_statements.result
+++ /dev/null
@@ -1,396 +0,0 @@
-set GLOBAL query_cache_size=1355776;
-flush query cache;
-flush query cache;
-reset query cache;
-flush status;
-drop table if exists t1;
-create table t1 (a int not null);
-insert into t1 values (1),(2),(3);
-set global query_cache_strip_comments=ON;
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 0
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 0
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 0
-prepare stmt from '/* with comment */ select * from t1';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 0
-execute stmt;
-a
-1
-2
-3
-execute stmt;
-a
-1
-2
-3
-execute stmt;
-a
-1
-2
-3
-execute stmt;
-a
-1
-2
-3
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 5
-prepare stmt from 'select * from t1';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 6
-prepare stmt from 'select * /*internal comment*/from t1';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 7
-prepare stmt from 'select * /*internal comment*/ from t1';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 8
-prepare stmt from 'select * from t1 /* at the end */';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 9
-prepare stmt from 'select * from t1 /* with "quote" */';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 10
-prepare stmt from 'select * from t1 /* with \'quote\' */';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 11
-prepare stmt from 'select * from t1 # 123
-';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 12
-prepare stmt from 'select * from t1 # 123 with "quote"
-';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 13
-prepare stmt from 'select * from t1 # 123 with \'quote\'
-';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 14
-prepare stmt from 'select * from t1
-# 123
-';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 15
-prepare stmt from '#456
-select * from t1
-# 123
-';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 16
-prepare stmt from 'select * from t1 -- 123
-';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 17
-prepare stmt from 'select * from t1
--- 123
-';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 18
-prepare stmt from '-- comment in first
-select * from t1
-# 123
-';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 1
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 1
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 19
-prepare stmt from '(#456(
-select * from t1
-# 123(
-)';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 2
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 2
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 19
-prepare stmt from '/*test*/(-- comment in first(
-select * from t1
--- 123 asdasd
-/* test */)';
-execute stmt;
-a
-1
-2
-3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 2
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 2
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 20
-prepare stmt from 'select "test",a from t1';
-execute stmt;
-test a
-test 1
-test 2
-test 3
-execute stmt;
-test a
-test 1
-test 2
-test 3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 3
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 3
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 21
-prepare stmt from 'select "test /* internal \'comment\' */",a from t1';
-execute stmt;
-test /* internal 'comment' */ a
-test /* internal 'comment' */ 1
-test /* internal 'comment' */ 2
-test /* internal 'comment' */ 3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 4
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 4
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 21
-prepare stmt from 'select "test #internal comment" ,a from t1';
-execute stmt;
-test #internal comment a
-test #internal comment 1
-test #internal comment 2
-test #internal comment 3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 5
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 5
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 21
-prepare stmt from 'select "test #internal comment" #external comment
-,a from t1';
-execute stmt;
-test #internal comment a
-test #internal comment 1
-test #internal comment 2
-test #internal comment 3
-show status like "Qcache_queries_in_cache";
-Variable_name Value
-Qcache_queries_in_cache 5
-show status like "Qcache_inserts";
-Variable_name Value
-Qcache_inserts 5
-show status like "Qcache_hits";
-Variable_name Value
-Qcache_hits 22
-DROP TABLE t1;
-SET GLOBAL query_cache_size= default;
-set global query_cache_strip_comments=OFF;
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_prepared_statements.test b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_prepared_statements.test
deleted file mode 100644
index 78cb7220aff..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_prepared_statements.test
+++ /dev/null
@@ -1,208 +0,0 @@
--- source include/have_query_cache.inc
-
-set GLOBAL query_cache_size=1355776;
-
-# Reset query cache variables.
-flush query cache; # This crashed in some versions
-flush query cache; # This crashed in some versions
-reset query cache;
-flush status;
---disable_warnings
-drop table if exists t1;
---enable_warnings
-
-#
-# First simple test
-#
-
-create table t1 (a int not null);
-insert into t1 values (1),(2),(3);
-
-set global query_cache_strip_comments=ON;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from '/* with comment */ select * from t1';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-execute stmt;
-execute stmt;
-execute stmt;
-execute stmt;
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * from t1';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * /*internal comment*/from t1';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * /*internal comment*/ from t1';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * from t1 /* at the end */';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * from t1 /* with "quote" */';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * from t1 /* with \'quote\' */';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * from t1 # 123
-';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * from t1 # 123 with "quote"
-';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * from t1 # 123 with \'quote\'
-';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * from t1
-# 123
-';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from '#456
-select * from t1
-# 123
-';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * from t1 -- 123
-';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select * from t1
--- 123
-';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from '-- comment in first
-select * from t1
-# 123
-';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from '(#456(
-select * from t1
-# 123(
-)';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from '/*test*/(-- comment in first(
-select * from t1
--- 123 asdasd
-/* test */)';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select "test",a from t1';
-execute stmt;
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select "test /* internal \'comment\' */",a from t1';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select "test #internal comment" ,a from t1';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-prepare stmt from 'select "test #internal comment" #external comment
-,a from t1';
-execute stmt;
-
-show status like "Qcache_queries_in_cache";
-show status like "Qcache_inserts";
-show status like "Qcache_hits";
-
-DROP TABLE t1;
-SET GLOBAL query_cache_size= default;
-set global query_cache_strip_comments=OFF;
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_show.inc b/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_show.inc
deleted file mode 100644
index 71aa5211cfd..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_query_cache_with_comments_show.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-let $show=show status like "Qcache_queries_in_cache";
-eval $show;
-let $show=show status like "Qcache_inserts";
-eval $show;
-let $show=show status like "Qcache_hits";
-eval $show;
-
-
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_status_wait_query_cache_mutex.result b/mysql-test/suite/percona/query_cache_enhance.patch/percona_status_wait_query_cache_mutex.result
deleted file mode 100644
index c243b8ad02f..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_status_wait_query_cache_mutex.result
+++ /dev/null
@@ -1,20 +0,0 @@
-SET GLOBAL query_cache_size=1355776;
-flush query cache;
-flush query cache;
-reset query cache;
-flush status;
-SET DEBUG_SYNC='after_query_cache_mutex SIGNAL mutex_locked WAIT_FOR unlock_mutex';
-SELECT "mutex_locked_query" as action;
-SET DEBUG_SYNC='now WAIT_FOR mutex_locked';
-SET DEBUG_SYNC='before_query_cache_mutex SIGNAL try_lock_mutex';
-SELECT "try_lock_mutex_query" as action;
-SET DEBUG_SYNC='now WAIT_FOR try_lock_mutex';
-SELECT SQL_NO_CACHE state FROM INFORMATION_SCHEMA.PROCESSLIST WHERE info='SELECT "try_lock_mutex_query" as action';
-state
-Waiting on query cache mutex
-SET DEBUG_SYNC='now SIGNAL unlock_mutex';
-action
-mutex_locked_query
-action
-try_lock_mutex_query
-SET GLOBAL query_cache_size=0;
diff --git a/mysql-test/suite/percona/query_cache_enhance.patch/percona_status_wait_query_cache_mutex.test b/mysql-test/suite/percona/query_cache_enhance.patch/percona_status_wait_query_cache_mutex.test
deleted file mode 100644
index b20f088d6ae..00000000000
--- a/mysql-test/suite/percona/query_cache_enhance.patch/percona_status_wait_query_cache_mutex.test
+++ /dev/null
@@ -1,35 +0,0 @@
---source include/have_query_cache.inc
---source include/have_debug.inc
---source include/have_debug_sync.inc
-SET GLOBAL query_cache_size=1355776;
---source include/percona_query_cache_with_comments_clear.inc
---let try_lock_mutex_query=SELECT "try_lock_mutex_query" as action
-
---connect (mutex_locked_conn, localhost, root,,)
---connect (try_mutex_lock_conn, localhost, root,,)
-
---connection mutex_locked_conn
-SET DEBUG_SYNC='after_query_cache_mutex SIGNAL mutex_locked WAIT_FOR unlock_mutex';
-send SELECT "mutex_locked_query" as action;
-
---connection default
-SET DEBUG_SYNC='now WAIT_FOR mutex_locked';
-
---connection try_mutex_lock_conn
-SET DEBUG_SYNC='before_query_cache_mutex SIGNAL try_lock_mutex';
-send_eval $try_lock_mutex_query;
-
---connection default
-SET DEBUG_SYNC='now WAIT_FOR try_lock_mutex';
-eval SELECT SQL_NO_CACHE state FROM INFORMATION_SCHEMA.PROCESSLIST WHERE info='$try_lock_mutex_query';
-SET DEBUG_SYNC='now SIGNAL unlock_mutex';
-
---connection mutex_locked_conn
-reap;
---connection try_mutex_lock_conn
-reap;
-
---connection default
---disconnect mutex_locked_conn
---disconnect try_mutex_lock_conn
-SET GLOBAL query_cache_size=0;
diff --git a/mysql-test/suite/percona/query_response_time-replication.inc b/mysql-test/suite/percona/query_response_time-replication.inc
deleted file mode 100644
index 9bd811a9a1b..00000000000
--- a/mysql-test/suite/percona/query_response_time-replication.inc
+++ /dev/null
@@ -1,57 +0,0 @@
-connection master;
-
-CREATE TABLE t(id INT);
-
-connection slave;
-SET GLOBAL query_exec_time = 0.1;
---source include/restart_slave_sql.inc
-
-connection slave;
-
-SET SESSION query_exec_time=0.1;
-
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
---eval SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=$base
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-
-connection master;
-
-SET SESSION query_exec_time = 0.31; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.32; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.33; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.34; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.35; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.36; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.37; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.38; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.39; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.4; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.1; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.2; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.3; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.5; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 1.4; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 0.5; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.1; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.3; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 2.5; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 3.1; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 4.1; INSERT INTO t VALUES(1);
-SET SESSION query_exec_time = 5.1; INSERT INTO t VALUES(1);
-
-sync_slave_with_master;
-
-connection slave;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SHOW QUERY_RESPONSE_TIME;
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
-
-connection master;
-DROP TABLE t;
-
-sync_slave_with_master;
diff --git a/mysql-test/suite/percona/query_response_time-stored.inc b/mysql-test/suite/percona/query_response_time-stored.inc
deleted file mode 100644
index a1fc8912aab..00000000000
--- a/mysql-test/suite/percona/query_response_time-stored.inc
+++ /dev/null
@@ -1,37 +0,0 @@
-SET SESSION query_exec_time=0.1;
-
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-EVAL SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=$base;
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-
-CALL test_f(0.31);
-CALL test_f(0.32);
-CALL test_f(0.33);
-CALL test_f(0.34);
-CALL test_f(0.35);
-CALL test_f(0.36);
-CALL test_f(0.37);
-CALL test_f(0.38);
-CALL test_f(0.39);
-CALL test_f(0.4);
-CALL test_f(1.1);
-CALL test_f(1.2);
-CALL test_f(1.3);
-CALL test_f(1.5);
-CALL test_f(1.4);
-CALL test_f(0.5);
-CALL test_f(2.1);
-CALL test_f(2.3);
-CALL test_f(2.5);
-CALL test_f(3.1);
-CALL test_f(4.1);
-CALL test_f(5.1);
-
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SHOW QUERY_RESPONSE_TIME;
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-
-SET SESSION query_exec_time=default;
diff --git a/mysql-test/suite/percona/query_response_time.inc b/mysql-test/suite/percona/query_response_time.inc
deleted file mode 100644
index 734d3f5a262..00000000000
--- a/mysql-test/suite/percona/query_response_time.inc
+++ /dev/null
@@ -1,43 +0,0 @@
-SET SESSION query_exec_time=0.1;
-
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-EVAL SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=$base;
-FLUSH QUERY_RESPONSE_TIME;
-# Following two queries check works of FLUSH and
-# respecting of "QUERY_RESPONSE_TIME_STATS" variable (see launchpad bug #855312)
-SHOW QUERY_RESPONSE_TIME;
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
-
-SET SESSION query_exec_time=0.31; SELECT 1;
-SET SESSION query_exec_time=0.32; SELECT 1;
-SET SESSION query_exec_time=0.33; SELECT 1;
-SET SESSION query_exec_time=0.34; SELECT 1;
-SET SESSION query_exec_time=0.35; SELECT 1;
-SET SESSION query_exec_time=0.36; SELECT 1;
-SET SESSION query_exec_time=0.37; SELECT 1;
-SET SESSION query_exec_time=0.38; SELECT 1;
-SET SESSION query_exec_time=0.39; SELECT 1;
-SET SESSION query_exec_time=0.4; SELECT 1;
-SET SESSION query_exec_time=1.1; SELECT 1;
-SET SESSION query_exec_time=1.2; SELECT 1;
-SET SESSION query_exec_time=1.3; SELECT 1;
-SET SESSION query_exec_time=1.5; SELECT 1;
-SET SESSION query_exec_time=1.4; SELECT 1;
-SET SESSION query_exec_time=0.5; SELECT 1;
-SET SESSION query_exec_time=2.1; SELECT 1;
-SET SESSION query_exec_time=2.3; SELECT 1;
-SET SESSION query_exec_time=2.5; SELECT 1;
-SET SESSION query_exec_time=3.1; SELECT 1;
-SET SESSION query_exec_time=4.1; SELECT 1;
-SET SESSION query_exec_time=5.1; SELECT 1;
-
-SET SESSION query_exec_time=0.1;
-
-SET GLOBAL QUERY_RESPONSE_TIME_STATS=0;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SHOW QUERY_RESPONSE_TIME;
-SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-
-SET SESSION query_exec_time=default;
diff --git a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-replication.result b/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-replication.result
deleted file mode 100644
index 950cdbf7532..00000000000
--- a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-replication.result
+++ /dev/null
@@ -1,70 +0,0 @@
-stop slave;
-drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
-reset master;
-reset slave;
-drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
-start slave;
-SET SESSION debug="+d,response_time_distribution_log_only_more_300_milliseconds";
-DROP TABLE IF EXISTS t;
-CREATE TABLE t(id INT);
-SELECT * from t;
-id
-SELECT * from t;
-id
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
-Warnings:
-Warning 1292 Truncated incorrect query_response_time_range_base value: '1'
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 10
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=ON;
-INSERT INTO t SELECT SLEEP(0.4);
-Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
-0
-INSERT INTO t SELECT SLEEP(0.4);
-Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
-0
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
-2
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
-3
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-FLUSH QUERY_RESPONSE_TIME;
-INSERT INTO t SELECT SLEEP(0.4);
-Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
-0
-INSERT INTO t SELECT SLEEP(0.4);
-Warnings:
-Note 1592 Statement may not be safe to log in statement format.
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
-0
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
-2
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
-3
-DROP TABLE IF EXISTS t;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=OFF;
-SET SESSION debug="-d,response_time_distribution_log_only_more_300_milliseconds";
diff --git a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-replication.test b/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-replication.test
deleted file mode 100644
index b215d3b45b2..00000000000
--- a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-replication.test
+++ /dev/null
@@ -1,57 +0,0 @@
---source include/have_response_time_distribution.inc
---source include/master-slave.inc
---source include/have_binlog_format_statement.inc
---source include/have_debug.inc
-SET SESSION debug="+d,response_time_distribution_log_only_more_300_milliseconds";
-
-connection master;
--- disable_warnings
-DROP TABLE IF EXISTS t;
--- enable_warnings
-CREATE TABLE t(id INT);
-SELECT * from t;
-
-sync_slave_with_master;
-
-connection slave;
-SELECT * from t;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-source include/percona_query_response_time_flush.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=ON;
-
-connection master;
-INSERT INTO t SELECT SLEEP(0.4);
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-INSERT INTO t SELECT SLEEP(0.4);
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-sync_slave_with_master;
-
-connection slave;
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-source include/percona_query_response_time_flush.inc;
-
-connection master;
-INSERT INTO t SELECT SLEEP(0.4);
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-INSERT INTO t SELECT SLEEP(0.4);
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-sync_slave_with_master;
-
-connection slave;
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-
-connection master;
-DROP TABLE IF EXISTS t;
-sync_slave_with_master;
-connection slave;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=OFF;
-SET SESSION debug="-d,response_time_distribution_log_only_more_300_milliseconds";
diff --git a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-stored.result b/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-stored.result
deleted file mode 100644
index 6ca471867ab..00000000000
--- a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-stored.result
+++ /dev/null
@@ -1,313 +0,0 @@
-SET SESSION debug="+d,response_time_distribution_log_only_more_300_milliseconds";
-CREATE FUNCTION test_f()
-RETURNS CHAR(30) DETERMINISTIC
-BEGIN
-DECLARE first VARCHAR(5);
-DECLARE second VARCHAR(5);
-DECLARE result VARCHAR(20);
-SELECT SLEEP(1.11) INTO first;
-SET first= 'Hello';
-SET second=', ';
-SET result= CONCAT(first,second);
-SET result= CONCAT(result,'world!');
-RETURN result;
-END/
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
-Warnings:
-Warning 1292 Truncated incorrect query_response_time_range_base value: '1'
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-FLUSH QUERY_RESPONSE_TIME;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-44
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000001
- 0.000003
- 0.000007
- 0.000015
- 0.000030
- 0.000061
- 0.000122
- 0.000244
- 0.000488
- 0.000976
- 0.001953
- 0.003906
- 0.007812
- 0.015625
- 0.031250
- 0.062500
- 0.125000
- 0.250000
- 0.500000
- 1.000000
- 2.000000
- 4.000000
- 8.000000
- 16.000000
- 32.000000
- 64.000000
- 128.000000
- 256.000000
- 512.000000
- 1024.000000
- 2048.000000
- 4096.000000
- 8192.000000
- 16384.000000
- 32768.000000
- 65536.000000
- 131072.000000
- 262144.000000
- 524288.000000
- 1048576.00000
- 2097152.00000
- 4194304.00000
- 8388608.00000
-TOO LONG
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT test_f();
-test_f()
-Hello, world!
-SELECT test_f();
-test_f()
-Hello, world!
-SELECT test_f();
-test_f()
-Hello, world!
-SELECT test_f();
-test_f()
-Hello, world!
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-4 4 4 1 44
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-44
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000001
- 0.000003
- 0.000007
- 0.000015
- 0.000030
- 0.000061
- 0.000122
- 0.000244
- 0.000488
- 0.000976
- 0.001953
- 0.003906
- 0.007812
- 0.015625
- 0.031250
- 0.062500
- 0.125000
- 0.250000
- 0.500000
- 1.000000
- 2.000000
- 4.000000
- 8.000000
- 16.000000
- 32.000000
- 64.000000
- 128.000000
- 256.000000
- 512.000000
- 1024.000000
- 2048.000000
- 4096.000000
- 8192.000000
- 16384.000000
- 32768.000000
- 65536.000000
- 131072.000000
- 262144.000000
- 524288.000000
- 1048576.00000
- 2097152.00000
- 4194304.00000
- 8388608.00000
-TOO LONG
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 10
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT test_f();
-test_f()
-Hello, world!
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-1 1 1 1 14
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-14
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000001
- 0.000010
- 0.000100
- 0.001000
- 0.010000
- 0.100000
- 1.000000
- 10.000000
- 100.000000
- 1000.000000
- 10000.000000
- 100000.000000
- 1000000.00000
-TOO LONG
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 10
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 7;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 7
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT test_f();
-test_f()
-Hello, world!
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-1 1 1 1 17
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-17
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000001
- 0.000008
- 0.000059
- 0.000416
- 0.002915
- 0.020408
- 0.142857
- 1.000000
- 7.000000
- 49.000000
- 343.000000
- 2401.000000
- 16807.000000
- 117649.000000
- 823543.000000
- 5764801.00000
-TOO LONG
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 7
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 156;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 156
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT test_f();
-test_f()
-Hello, world!
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-1 1 1 1 7
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-7
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000041
- 0.006410
- 1.000000
- 156.000000
- 24336.000000
- 3796416.00000
-TOO LONG
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 156
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1000;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT test_f();
-test_f()
-Hello, world!
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-1 1 1 1 6
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-6
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000001
- 0.001000
- 1.000000
- 1000.000000
- 1000000.00000
-TOO LONG
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1001;
-Warnings:
-Warning 1292 Truncated incorrect query_response_time_range_base value: '1001'
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE =10;
-DROP FUNCTION test_f;
-SET SESSION debug="-d,response_time_distribution_log_only_more_300_milliseconds";
diff --git a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-stored.test b/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-stored.test
deleted file mode 100644
index 01651aae928..00000000000
--- a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time-stored.test
+++ /dev/null
@@ -1,90 +0,0 @@
---source include/have_response_time_distribution.inc
---source include/have_debug.inc
-SET SESSION debug="+d,response_time_distribution_log_only_more_300_milliseconds";
-
-delimiter /;
-CREATE FUNCTION test_f()
-RETURNS CHAR(30) DETERMINISTIC
-BEGIN
- DECLARE first VARCHAR(5);
- DECLARE second VARCHAR(5);
- DECLARE result VARCHAR(20);
- SELECT SLEEP(1.11) INTO first;
- SET first= 'Hello';
- SET second=', ';
- SET result= CONCAT(first,second);
- SET result= CONCAT(result,'world!');
- RETURN result;
-END/
-delimiter ;/
-
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-source include/percona_query_response_time_flush.inc;
-source include/percona_query_response_time_show.inc;
-
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT test_f();
-SELECT test_f();
-SELECT test_f();
-SELECT test_f();
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-
-source include/percona_query_response_time_show.inc;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-source include/percona_query_response_time_flush.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT test_f();
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-
-source include/percona_query_response_time_show.inc;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 7;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-source include/percona_query_response_time_flush.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT test_f();
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-
-source include/percona_query_response_time_show.inc;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 156;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-source include/percona_query_response_time_flush.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT test_f();
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-
-source include/percona_query_response_time_show.inc;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1000;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-source include/percona_query_response_time_flush.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT test_f();
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-
-source include/percona_query_response_time_show.inc;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1001;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE =10;
-
-DROP FUNCTION test_f;
-SET SESSION debug="-d,response_time_distribution_log_only_more_300_milliseconds";
diff --git a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time.result b/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time.result
deleted file mode 100644
index 7599c9f0263..00000000000
--- a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time.result
+++ /dev/null
@@ -1,567 +0,0 @@
-SET SESSION debug="+d,response_time_distribution_log_only_more_300_milliseconds";
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
-Warnings:
-Warning 1292 Truncated incorrect query_response_time_range_base value: '1'
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-FLUSH QUERY_RESPONSE_TIME;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-44
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000001
- 0.000003
- 0.000007
- 0.000015
- 0.000030
- 0.000061
- 0.000122
- 0.000244
- 0.000488
- 0.000976
- 0.001953
- 0.003906
- 0.007812
- 0.015625
- 0.031250
- 0.062500
- 0.125000
- 0.250000
- 0.500000
- 1.000000
- 2.000000
- 4.000000
- 8.000000
- 16.000000
- 32.000000
- 64.000000
- 128.000000
- 256.000000
- 512.000000
- 1024.000000
- 2048.000000
- 4096.000000
- 8192.000000
- 16384.000000
- 32768.000000
- 65536.000000
- 131072.000000
- 262144.000000
- 524288.000000
- 1048576.00000
- 2097152.00000
- 4194304.00000
- 8388608.00000
-TOO LONG
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT SLEEP(0.31);
-SLEEP(0.31)
-0
-SELECT SLEEP(0.32);
-SLEEP(0.32)
-0
-SELECT SLEEP(0.33);
-SLEEP(0.33)
-0
-SELECT SLEEP(0.34);
-SLEEP(0.34)
-0
-SELECT SLEEP(0.35);
-SLEEP(0.35)
-0
-SELECT SLEEP(0.36);
-SLEEP(0.36)
-0
-SELECT SLEEP(0.37);
-SLEEP(0.37)
-0
-SELECT SLEEP(0.38);
-SLEEP(0.38)
-0
-SELECT SLEEP(0.39);
-SLEEP(0.39)
-0
-SELECT SLEEP(0.40);
-SLEEP(0.40)
-0
-SELECT SLEEP(1.1);
-SLEEP(1.1)
-0
-SELECT SLEEP(1.2);
-SLEEP(1.2)
-0
-SELECT SLEEP(1.3);
-SLEEP(1.3)
-0
-SELECT SLEEP(1.5);
-SLEEP(1.5)
-0
-SELECT SLEEP(1.4);
-SLEEP(1.4)
-0
-SELECT SLEEP(0.5);
-SLEEP(0.5)
-0
-SELECT SLEEP(2.1);
-SLEEP(2.1)
-0
-SELECT SLEEP(2.3);
-SLEEP(2.3)
-0
-SELECT SLEEP(2.5);
-SLEEP(2.5)
-0
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-10 19 15 4 44
-1 19 15 4 44
-5 19 15 4 44
-3 19 15 4 44
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-44
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000001
- 0.000003
- 0.000007
- 0.000015
- 0.000030
- 0.000061
- 0.000122
- 0.000244
- 0.000488
- 0.000976
- 0.001953
- 0.003906
- 0.007812
- 0.015625
- 0.031250
- 0.062500
- 0.125000
- 0.250000
- 0.500000
- 1.000000
- 2.000000
- 4.000000
- 8.000000
- 16.000000
- 32.000000
- 64.000000
- 128.000000
- 256.000000
- 512.000000
- 1024.000000
- 2048.000000
- 4096.000000
- 8192.000000
- 16384.000000
- 32768.000000
- 65536.000000
- 131072.000000
- 262144.000000
- 524288.000000
- 1048576.00000
- 2097152.00000
- 4194304.00000
- 8388608.00000
-TOO LONG
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 2
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 10
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT SLEEP(0.31);
-SLEEP(0.31)
-0
-SELECT SLEEP(0.32);
-SLEEP(0.32)
-0
-SELECT SLEEP(0.33);
-SLEEP(0.33)
-0
-SELECT SLEEP(0.34);
-SLEEP(0.34)
-0
-SELECT SLEEP(0.35);
-SLEEP(0.35)
-0
-SELECT SLEEP(0.36);
-SLEEP(0.36)
-0
-SELECT SLEEP(0.37);
-SLEEP(0.37)
-0
-SELECT SLEEP(0.38);
-SLEEP(0.38)
-0
-SELECT SLEEP(0.39);
-SLEEP(0.39)
-0
-SELECT SLEEP(0.40);
-SLEEP(0.40)
-0
-SELECT SLEEP(1.1);
-SLEEP(1.1)
-0
-SELECT SLEEP(1.2);
-SLEEP(1.2)
-0
-SELECT SLEEP(1.3);
-SLEEP(1.3)
-0
-SELECT SLEEP(1.5);
-SLEEP(1.5)
-0
-SELECT SLEEP(1.4);
-SLEEP(1.4)
-0
-SELECT SLEEP(0.5);
-SLEEP(0.5)
-0
-SELECT SLEEP(2.1);
-SLEEP(2.1)
-0
-SELECT SLEEP(2.3);
-SLEEP(2.3)
-0
-SELECT SLEEP(2.5);
-SLEEP(2.5)
-0
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-11 19 17 2 14
-8 19 17 2 14
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-14
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000001
- 0.000010
- 0.000100
- 0.001000
- 0.010000
- 0.100000
- 1.000000
- 10.000000
- 100.000000
- 1000.000000
- 10000.000000
- 100000.000000
- 1000000.00000
-TOO LONG
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 10
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 7;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 7
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT SLEEP(0.31);
-SLEEP(0.31)
-0
-SELECT SLEEP(0.32);
-SLEEP(0.32)
-0
-SELECT SLEEP(0.33);
-SLEEP(0.33)
-0
-SELECT SLEEP(0.34);
-SLEEP(0.34)
-0
-SELECT SLEEP(0.35);
-SLEEP(0.35)
-0
-SELECT SLEEP(0.36);
-SLEEP(0.36)
-0
-SELECT SLEEP(0.37);
-SLEEP(0.37)
-0
-SELECT SLEEP(0.38);
-SLEEP(0.38)
-0
-SELECT SLEEP(0.39);
-SLEEP(0.39)
-0
-SELECT SLEEP(0.40);
-SLEEP(0.40)
-0
-SELECT SLEEP(1.1);
-SLEEP(1.1)
-0
-SELECT SLEEP(1.2);
-SLEEP(1.2)
-0
-SELECT SLEEP(1.3);
-SLEEP(1.3)
-0
-SELECT SLEEP(1.5);
-SLEEP(1.5)
-0
-SELECT SLEEP(1.4);
-SLEEP(1.4)
-0
-SELECT SLEEP(0.5);
-SLEEP(0.5)
-0
-SELECT SLEEP(2.1);
-SLEEP(2.1)
-0
-SELECT SLEEP(2.3);
-SLEEP(2.3)
-0
-SELECT SLEEP(2.5);
-SLEEP(2.5)
-0
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-11 19 17 2 17
-8 19 17 2 17
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-17
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000001
- 0.000008
- 0.000059
- 0.000416
- 0.002915
- 0.020408
- 0.142857
- 1.000000
- 7.000000
- 49.000000
- 343.000000
- 2401.000000
- 16807.000000
- 117649.000000
- 823543.000000
- 5764801.00000
-TOO LONG
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 7
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 156;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 156
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT SLEEP(0.31);
-SLEEP(0.31)
-0
-SELECT SLEEP(0.32);
-SLEEP(0.32)
-0
-SELECT SLEEP(0.33);
-SLEEP(0.33)
-0
-SELECT SLEEP(0.34);
-SLEEP(0.34)
-0
-SELECT SLEEP(0.35);
-SLEEP(0.35)
-0
-SELECT SLEEP(0.36);
-SLEEP(0.36)
-0
-SELECT SLEEP(0.37);
-SLEEP(0.37)
-0
-SELECT SLEEP(0.38);
-SLEEP(0.38)
-0
-SELECT SLEEP(0.39);
-SLEEP(0.39)
-0
-SELECT SLEEP(0.40);
-SLEEP(0.40)
-0
-SELECT SLEEP(1.1);
-SLEEP(1.1)
-0
-SELECT SLEEP(1.2);
-SLEEP(1.2)
-0
-SELECT SLEEP(1.3);
-SLEEP(1.3)
-0
-SELECT SLEEP(1.5);
-SLEEP(1.5)
-0
-SELECT SLEEP(1.4);
-SLEEP(1.4)
-0
-SELECT SLEEP(0.5);
-SLEEP(0.5)
-0
-SELECT SLEEP(2.1);
-SLEEP(2.1)
-0
-SELECT SLEEP(2.3);
-SLEEP(2.3)
-0
-SELECT SLEEP(2.5);
-SLEEP(2.5)
-0
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-11 19 17 2 7
-8 19 17 2 7
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-7
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000041
- 0.006410
- 1.000000
- 156.000000
- 24336.000000
- 3796416.00000
-TOO LONG
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 156
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1000;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-FLUSH QUERY_RESPONSE_TIME;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-SELECT SLEEP(0.31);
-SLEEP(0.31)
-0
-SELECT SLEEP(0.32);
-SLEEP(0.32)
-0
-SELECT SLEEP(0.33);
-SLEEP(0.33)
-0
-SELECT SLEEP(0.34);
-SLEEP(0.34)
-0
-SELECT SLEEP(0.35);
-SLEEP(0.35)
-0
-SELECT SLEEP(0.36);
-SLEEP(0.36)
-0
-SELECT SLEEP(0.37);
-SLEEP(0.37)
-0
-SELECT SLEEP(0.38);
-SLEEP(0.38)
-0
-SELECT SLEEP(0.39);
-SLEEP(0.39)
-0
-SELECT SLEEP(0.40);
-SLEEP(0.40)
-0
-SELECT SLEEP(1.1);
-SLEEP(1.1)
-0
-SELECT SLEEP(1.2);
-SLEEP(1.2)
-0
-SELECT SLEEP(1.3);
-SLEEP(1.3)
-0
-SELECT SLEEP(1.5);
-SLEEP(1.5)
-0
-SELECT SLEEP(1.4);
-SLEEP(1.4)
-0
-SELECT SLEEP(0.5);
-SLEEP(0.5)
-0
-SELECT SLEEP(2.1);
-SLEEP(2.1)
-0
-SELECT SLEEP(2.3);
-SLEEP(2.3)
-0
-SELECT SLEEP(2.5);
-SLEEP(2.5)
-0
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-count query_count query_total not_zero_region_count region_count
-11 19 17 2 6
-8 19 17 2 6
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-region_count
-6
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-time
- 0.000001
- 0.001000
- 1.000000
- 1000.000000
- 1000000.00000
-TOO LONG
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1001;
-Warnings:
-Warning 1292 Truncated incorrect query_response_time_range_base value: '1001'
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-Variable_name Value
-query_response_time_range_base 1000
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE =10;
-SET SESSION debug="-d,response_time_distribution_log_only_more_300_milliseconds";
diff --git a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time.test b/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time.test
deleted file mode 100644
index 6dd0f54abf5..00000000000
--- a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time.test
+++ /dev/null
@@ -1,68 +0,0 @@
---source include/have_response_time_distribution.inc
---source include/have_debug.inc
-SET SESSION debug="+d,response_time_distribution_log_only_more_300_milliseconds";
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-source include/percona_query_response_time_flush.inc;
-source include/percona_query_response_time_show.inc;
-
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-source include/percona_query_response_time_sleep.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-
-source include/percona_query_response_time_show.inc;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-source include/percona_query_response_time_flush.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-source include/percona_query_response_time_sleep.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-
-source include/percona_query_response_time_show.inc;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 7;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-source include/percona_query_response_time_flush.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-source include/percona_query_response_time_sleep.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-
-source include/percona_query_response_time_show.inc;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 156;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-source include/percona_query_response_time_flush.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-source include/percona_query_response_time_sleep.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-
-source include/percona_query_response_time_show.inc;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1000;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-source include/percona_query_response_time_flush.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
-source include/percona_query_response_time_sleep.inc;
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-
-source include/percona_query_response_time_show.inc;
-
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1001;
-SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
-
-SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
-SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE =10;
-SET SESSION debug="-d,response_time_distribution_log_only_more_300_milliseconds";
diff --git a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_flush.inc b/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_flush.inc
deleted file mode 100644
index 44bb320fe13..00000000000
--- a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_flush.inc
+++ /dev/null
@@ -1 +0,0 @@
-FLUSH QUERY_RESPONSE_TIME;
diff --git a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_show.inc b/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_show.inc
deleted file mode 100644
index 709abf9872e..00000000000
--- a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_show.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-SELECT d.count,
-(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
-(SELECT SUM((b.total * 1000000) DIV 1000000) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as query_total,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count != 0) as not_zero_region_count,
-(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
-FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as d WHERE d.count > 0;
-SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
-SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
diff --git a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_sleep.inc b/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_sleep.inc
deleted file mode 100644
index 40688b173b0..00000000000
--- a/mysql-test/suite/percona/response-time-distribution.patch/percona_query_response_time_sleep.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-SELECT SLEEP(0.31);
-SELECT SLEEP(0.32);
-SELECT SLEEP(0.33);
-SELECT SLEEP(0.34);
-SELECT SLEEP(0.35);
-SELECT SLEEP(0.36);
-SELECT SLEEP(0.37);
-SELECT SLEEP(0.38);
-SELECT SLEEP(0.39);
-SELECT SLEEP(0.40);
-SELECT SLEEP(1.1);
-SELECT SLEEP(1.2);
-SELECT SLEEP(1.3);
-SELECT SLEEP(1.5);
-SELECT SLEEP(1.4);
-SELECT SLEEP(0.5);
-SELECT SLEEP(2.1);
-SELECT SLEEP(2.3);
-SELECT SLEEP(2.5);
diff --git a/mysql-test/suite/percona/show_slave_status_nolock.patch/percona_show_slave_status_nolock.result b/mysql-test/suite/percona/show_slave_status_nolock.patch/percona_show_slave_status_nolock.result
deleted file mode 100644
index b98e4a93953..00000000000
--- a/mysql-test/suite/percona/show_slave_status_nolock.patch/percona_show_slave_status_nolock.result
+++ /dev/null
@@ -1,69 +0,0 @@
-include/master-slave.inc
-[connection master]
-call mtr.add_suppression("Slave SQL: Request to stop slave SQL Thread received while applying a group that has non-transactional changes");
-include/rpl_connect.inc [creating slave_lock]
-include/rpl_connect.inc [creating slave_nolock]
-[master]
-DROP TABLE IF EXISTS t;
-CREATE TABLE t(id INT);
-[slave]
-SET DEBUG_SYNC='RESET';
-SET GLOBAL DEBUG="+d,after_mysql_insert,after_show_slave_status";
-[master]
-INSERT INTO t VALUES(0);
-[slave]
-check 'SHOW SLAVE STATUS' and 'SHOW SLAVE STATUS NOLOCK' - both should work fine
-
-[slave_lock]
-SHOW SLAVE STATUS;
-SET DEBUG_SYNC='now WAIT_FOR signal.after_show_slave_status TIMEOUT 1';
-SIGNAL after SHOW SLAVE STATUS is 'signal.after_show_slave_status'
-[slave]
-SET DEBUG_SYNC='now SIGNAL signal.empty';
-[slave_nolock]
-SHOW SLAVE STATUS NOLOCK;
-SET DEBUG_SYNC='now WAIT_FOR signal.after_show_slave_status TIMEOUT 1';
-# should be 'signal.after_show_slave_status'
-SIGNAL after SHOW SLAVE STATUS NOLOCK is 'signal.after_show_slave_status'
-[slave]
-SET DEBUG_SYNC='now SIGNAL signal.continue';
-[slave]
-SET DEBUG_SYNC='now SIGNAL signal.empty';
-
-[master]
-INSERT INTO t VALUES(1);
-[slave]
-include/rpl_connect.inc [creating slave_stop]
-[slave_stop]
-STOP SLAVE;
-[slave]
-check 'SHOW SLAVE STATUS' and 'SHOW SLAVE STATUS NOLOCK' - just NOLOCK version should works fine
-
-[slave_lock]
-SHOW SLAVE STATUS;
-SET DEBUG_SYNC='now WAIT_FOR signal.after_show_slave_status TIMEOUT 1';
-SIGNAL after SHOW SLAVE STATUS is 'signal.empty'
-[slave]
-SET DEBUG_SYNC='now SIGNAL signal.empty';
-[slave_nolock]
-SHOW SLAVE STATUS NOLOCK;
-SET DEBUG_SYNC='now WAIT_FOR signal.after_show_slave_status TIMEOUT 1';
-# should be 'signal.after_show_slave_status'
-SIGNAL after SHOW SLAVE STATUS NOLOCK is 'signal.after_show_slave_status'
-[slave]
-SET DEBUG_SYNC='now SIGNAL signal.continue';
-[slave]
-SET DEBUG_SYNC='now SIGNAL signal.empty';
-
-[slave_stop]
-include/wait_for_slave_to_stop.inc
-START SLAVE;
-include/wait_for_slave_to_start.inc
-[master]
-SET DEBUG_SYNC='RESET';
-[slave]
-SET GLOBAL DEBUG='';
-SET DEBUG_SYNC='RESET';
-[master]
-DROP TABLE t;
-include/rpl_end.inc
diff --git a/mysql-test/suite/percona/show_slave_status_nolock.patch/percona_show_slave_status_nolock.test b/mysql-test/suite/percona/show_slave_status_nolock.patch/percona_show_slave_status_nolock.test
deleted file mode 100644
index df595214ff7..00000000000
--- a/mysql-test/suite/percona/show_slave_status_nolock.patch/percona_show_slave_status_nolock.test
+++ /dev/null
@@ -1,90 +0,0 @@
---source include/master-slave.inc
---source include/have_debug_sync.inc
---source include/have_binlog_format_statement.inc
-
-call mtr.add_suppression("Slave SQL: Request to stop slave SQL Thread received while applying a group that has non-transactional changes");
-
---let $rpl_connection_name=slave_lock
---let $rpl_server_number=2
---source include/rpl_connect.inc
-
---let $rpl_connection_name=slave_nolock
---let $rpl_server_number=2
---source include/rpl_connect.inc
-
---let $show_statement= SHOW PROCESSLIST
---let $field= Info
-
-connection master;
---echo [master]
---disable_warnings
-DROP TABLE IF EXISTS t;
---enable_warnings
-CREATE TABLE t(id INT);
-sync_slave_with_master;
-
-connection slave;
---echo [slave]
-SET DEBUG_SYNC='RESET';
-SET GLOBAL DEBUG="+d,after_mysql_insert,after_show_slave_status";
-
-connection master;
---echo [master]
-INSERT INTO t VALUES(0);
-
-connection slave;
---echo [slave]
---let $condition= 'INSERT INTO t VALUES(0)'
---source include/wait_show_condition.inc
-
---echo check 'SHOW SLAVE STATUS' and 'SHOW SLAVE STATUS NOLOCK' - both should work fine
---source include/percona_show_slave_status_nolock.inc
-
-connection master;
---echo [master]
-INSERT INTO t VALUES(1);
-
-connection slave;
---echo [slave]
---let $condition= 'INSERT INTO t VALUES(1)'
---source include/wait_show_condition.inc
-
---let $rpl_connection_name=slave_stop
---let $rpl_server_number=2
---source include/rpl_connect.inc
-
-connection slave_stop;
---echo [slave_stop]
-send STOP SLAVE;
-
-connection slave;
---echo [slave]
---let $condition= 'STOP SLAVE'
---source include/wait_show_condition.inc
-
---echo check 'SHOW SLAVE STATUS' and 'SHOW SLAVE STATUS NOLOCK' - just NOLOCK version should works fine
---source include/percona_show_slave_status_nolock.inc
-
-
-connection slave_stop;
---echo [slave_stop]
-reap;
---source include/wait_for_slave_to_stop.inc
-START SLAVE;
---source include/wait_for_slave_to_start.inc
-
-connection master;
---echo [master]
-SET DEBUG_SYNC='RESET';
-
-connection slave;
---echo [slave]
-SET GLOBAL DEBUG='';
-SET DEBUG_SYNC='RESET';
-
-connection master;
---echo [master]
-DROP TABLE t;
-sync_slave_with_master;
-
---source include/rpl_end.inc
diff --git a/mysql-test/suite/percona/slow_extended.patch/grep.inc b/mysql-test/suite/percona/slow_extended.patch/grep.inc
deleted file mode 100644
index c9c823fa695..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/grep.inc
+++ /dev/null
@@ -1,16 +0,0 @@
-perl;
-
- $file = $ENV{'grep_file'};
- $pattern = $ENV{'grep_pattern'};
-
- open(FILE, "$file")
- or die("Cannot open file $file: $!\n");
-
- $lines = 0;
- while(<FILE>) {
- $lines++ if (/$pattern/);
- }
- print "$lines\n";
-
- close(FILE);
-EOF
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined-master.opt
deleted file mode 100644
index b6f54503c34..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---use_global_long_query_time --log_slow_verbosity="full"
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined.result
deleted file mode 100644
index d51e0722fa2..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined.result
+++ /dev/null
@@ -1,18 +0,0 @@
-show variables like 'use_global_long_query_time';
-Variable_name Value
-use_global_long_query_time ON
-show variables like 'use_global_log_slow_control';
-Variable_name Value
-use_global_log_slow_control long_query_time
-show variables like 'log_slow_verbosity';
-Variable_name Value
-log_slow_verbosity microtime,query_plan,innodb
-show global variables like 'use_global_long_query_time';
-Variable_name Value
-use_global_long_query_time ON
-show global variables like 'log_slow_verbosity';
-Variable_name Value
-log_slow_verbosity microtime,query_plan,innodb
-show global variables like 'use_global_log_slow_control';
-Variable_name Value
-use_global_log_slow_control long_query_time
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined.test
deleted file mode 100644
index 9a4d57a3efc..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined.test
+++ /dev/null
@@ -1,6 +0,0 @@
-show variables like 'use_global_long_query_time';
-show variables like 'use_global_log_slow_control';
-show variables like 'log_slow_verbosity';
-show global variables like 'use_global_long_query_time';
-show global variables like 'log_slow_verbosity';
-show global variables like 'use_global_log_slow_control';
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2-master.opt
deleted file mode 100644
index 267fe17fabe..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---use_global_log_slow_control="long_query_time"
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2.result
deleted file mode 100644
index e66a7dc1968..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2.result
+++ /dev/null
@@ -1,12 +0,0 @@
-show variables like 'use_global_long_query_time';
-Variable_name Value
-use_global_long_query_time ON
-show variables like 'use_global_log_slow_control';
-Variable_name Value
-use_global_log_slow_control long_query_time
-show global variables like 'use_global_long_query_time';
-Variable_name Value
-use_global_long_query_time ON
-show global variables like 'use_global_log_slow_control';
-Variable_name Value
-use_global_log_slow_control long_query_time
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2.test
deleted file mode 100644
index 2c79c137844..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-combined2.test
+++ /dev/null
@@ -1,4 +0,0 @@
-show variables like 'use_global_long_query_time';
-show variables like 'use_global_log_slow_control';
-show global variables like 'use_global_long_query_time';
-show global variables like 'use_global_log_slow_control';
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow-master.opt
deleted file mode 100644
index bd62c08c475..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_slow_query_log-control_global_slow.log --long-query-time=1
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow.result
deleted file mode 100644
index f91d1af2fb3..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow.result
+++ /dev/null
@@ -1,12 +0,0 @@
-SELECT sleep(2);
-sleep(2)
-0
-set global log_slow_verbosity=innodb;
-set global use_global_log_slow_control="log_slow_verbosity,long_query_time";
-SELECT sleep(2);
-sleep(2)
-0
-set global use_global_log_slow_control=none;
-set global log_slow_verbosity=microtime;
-FLUSH LOGS;
-1
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow.test
deleted file mode 100644
index bbf90f8ec9b..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-control_global_slow.test
+++ /dev/null
@@ -1,12 +0,0 @@
-source include/have_innodb.inc;
-SELECT sleep(2);
-set global log_slow_verbosity=innodb;
-set global use_global_log_slow_control="log_slow_verbosity,long_query_time";
-SELECT sleep(2);
-set global use_global_log_slow_control=none;
-set global log_slow_verbosity=microtime;
-
-FLUSH LOGS;
---let grep_file = $MYSQLTEST_VARDIR/mysqld.1/data/percona_slow_query_log-control_global_slow.log
---let grep_pattern = No InnoDB statistics available for this query
---source include/grep.inc
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter-master.opt
deleted file mode 100644
index 865dc70ba38..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_slow_query_log-log_slow_filter.log --long-query-time=1 --slow_query_log=OFF
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter.result
deleted file mode 100644
index 2f22ef5457b..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter.result
+++ /dev/null
@@ -1,25 +0,0 @@
-drop table if exists t;
-# Create test table
-create table t(id INT PRIMARY KEY) engine=InnoDB;
-# Insert two rows to test table
-insert into t values(1);
-insert into t values(2);
-insert into t values(3);
-SET GLOBAL SLOW_QUERY_LOG=ON;
-SELECT sleep(2);
-sleep(2)
-0
-set log_slow_filter=full_join;
-SELECT sleep(2) union select t2.id from t as t1,t as t2;
-sleep(2)
-0
-1
-2
-3
-SELECT sleep(2);
-sleep(2)
-0
-SET GLOBAL SLOW_QUERY_LOG=OFF;
-drop table if exists t;
-FLUSH LOGS;
-2
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter.test
deleted file mode 100644
index 292c1651e34..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_filter.test
+++ /dev/null
@@ -1,32 +0,0 @@
-source include/have_xtradb.inc;
-
---disable_warnings
-drop table if exists t;
---enable_warnings
-
---echo # Create test table
-create table t(id INT PRIMARY KEY) engine=InnoDB;
---echo # Insert two rows to test table
-insert into t values(1);
-insert into t values(2);
-insert into t values(3);
-
-SET GLOBAL SLOW_QUERY_LOG=ON;
-
-SELECT sleep(2);
-
-set log_slow_filter=full_join;
-
-SELECT sleep(2) union select t2.id from t as t1,t as t2;
-SELECT sleep(2);
-
-SET GLOBAL SLOW_QUERY_LOG=OFF;
-
---disable_warnings
-drop table if exists t;
---enable_warnings
-
-FLUSH LOGS;
---let grep_file = $MYSQLTEST_VARDIR/mysqld.1/data/percona_slow_query_log-log_slow_filter.log
---let grep_pattern = Query_time
---source grep.inc
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl-master.opt
deleted file mode 100644
index 4368453928a..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---log_slow_sp_statements
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl.result
deleted file mode 100644
index c5653429327..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl.result
+++ /dev/null
@@ -1,3 +0,0 @@
-show global variables like 'log_slow_sp_statements';
-Variable_name Value
-log_slow_sp_statements ON
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl.test
deleted file mode 100644
index 47bd960feb5..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_sp_statements-cl.test
+++ /dev/null
@@ -1 +0,0 @@
-show global variables like 'log_slow_sp_statements';
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl-master.opt
deleted file mode 100644
index 8595eaf73d2..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---log_slow_timestamp_every
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl.result
deleted file mode 100644
index 119bc26a743..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl.result
+++ /dev/null
@@ -1,3 +0,0 @@
-show global variables like 'log_slow_timestamp_every';
-Variable_name Value
-log_slow_timestamp_every ON
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl.test
deleted file mode 100644
index f1d058b9ba4..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_timestamp_every-cl.test
+++ /dev/null
@@ -1 +0,0 @@
-show global variables like 'log_slow_timestamp_every';
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl-master.opt
deleted file mode 100644
index d8809c36981..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---log_slow_verbosity="full"
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl.result
deleted file mode 100644
index eb8228efb08..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl.result
+++ /dev/null
@@ -1,9 +0,0 @@
-show global variables like 'log_slow_verbosity';
-Variable_name Value
-log_slow_verbosity microtime,query_plan,innodb
-show variables like 'log_slow_verbosity';
-Variable_name Value
-log_slow_verbosity microtime,query_plan,innodb
-select @@log_slow_verbosity;
-@@log_slow_verbosity
-microtime,query_plan,innodb
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl.test
deleted file mode 100644
index 740c4deaebd..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-cl.test
+++ /dev/null
@@ -1,3 +0,0 @@
-show global variables like 'log_slow_verbosity';
-show variables like 'log_slow_verbosity';
-select @@log_slow_verbosity;
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-master.opt
deleted file mode 100644
index 19ae9c117f0..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_slow_query_log-log_slow_verbosity.log --long-query-time=1
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity.result
deleted file mode 100644
index 1e7db10c8bd..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity.result
+++ /dev/null
@@ -1,9 +0,0 @@
-SELECT sleep(2);
-sleep(2)
-0
-set log_slow_verbosity=innodb;
-SELECT sleep(2);
-sleep(2)
-0
-FLUSH LOGS;
-1
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity.test
deleted file mode 100644
index e95ab54af61..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-log_slow_verbosity.test
+++ /dev/null
@@ -1,12 +0,0 @@
-source include/have_xtradb.inc;
-
-SELECT sleep(2);
-
-set log_slow_verbosity=innodb;
-
-SELECT sleep(2);
-
-FLUSH LOGS;
---let grep_file = $MYSQLTEST_VARDIR/mysqld.1/data/percona_slow_query_log-log_slow_verbosity.log
---let grep_pattern = No InnoDB statistics available for this query
---source grep.inc
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time-master.opt
deleted file mode 100644
index 62e1e981558..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_slow_query_log-long_query_time.log --long-query-time=2 --slow-query-log=OFF
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time.result
deleted file mode 100644
index f2da4e4d9d6..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time.result
+++ /dev/null
@@ -1,24 +0,0 @@
-SET GLOBAL SLOW_QUERY_LOG=ON;
-SELECT sleep(1);
-sleep(1)
-0
-SELECT sleep(3);
-sleep(3)
-0
-SELECT sleep(5);
-sleep(5)
-0
-set long_query_time=4;
-SELECT sleep(1);
-sleep(1)
-0
-SELECT sleep(3);
-sleep(3)
-0
-SELECT sleep(5);
-sleep(5)
-0
-set long_query_time=2;
-SET GLOBAL SLOW_QUERY_LOG=OFF;
-FLUSH LOGS;
-3
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time.test
deleted file mode 100644
index 716cc7cb0c3..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-long_query_time.test
+++ /dev/null
@@ -1,23 +0,0 @@
-source include/have_xtradb.inc;
-
-SET GLOBAL SLOW_QUERY_LOG=ON;
-
-SELECT sleep(1);
-SELECT sleep(3);
-SELECT sleep(5);
-
-set long_query_time=4;
-
-SELECT sleep(1);
-SELECT sleep(3);
-SELECT sleep(5);
-
-set long_query_time=2;
-
-SET GLOBAL SLOW_QUERY_LOG=OFF;
-
-FLUSH LOGS;
---let grep_file = $MYSQLTEST_VARDIR/mysqld.1/data/percona_slow_query_log-long_query_time.log
---let grep_pattern = Query_time
---source grep.inc
-
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended-master.opt
deleted file mode 100644
index ca486d356f5..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_slow_query_log-microseconds_in_slow_query_log.log --long-query-time=1 --slow_query_log=OFF
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended.result
deleted file mode 100644
index ce27c518efe..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended.result
+++ /dev/null
@@ -1,13 +0,0 @@
-SET GLOBAL SLOW_QUERY_LOG=ON;
-SELECT sleep(2);
-sleep(2)
-0
-set global slow_query_log_timestamp_precision='microsecond';
-SELECT sleep(2);
-sleep(2)
-0
-set global slow_query_log_timestamp_precision='second';
-SET GLOBAL SLOW_QUERY_LOG=OFF;
-FLUSH LOGS;
-1
-2
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended.test
deleted file mode 100644
index 4b437b21e4c..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-microseconds_in_slow_extended.test
+++ /dev/null
@@ -1,23 +0,0 @@
-source include/have_xtradb.inc;
-
-SET GLOBAL SLOW_QUERY_LOG=ON;
-
-SELECT sleep(2);
-
-set global slow_query_log_timestamp_precision='microsecond';
-
-SELECT sleep(2);
-
-set global slow_query_log_timestamp_precision='second';
-
-SET GLOBAL SLOW_QUERY_LOG=OFF;
-
-FLUSH LOGS;
---let grep_file = $MYSQLTEST_VARDIR/mysqld.1/data/percona_slow_query_log-microseconds_in_slow_query_log.log
---let grep_pattern = # Time: [0-9]+[ ]+[0-9]+:[0-9]+:[0-9]+.[0-9]+
---source grep.inc
-
---let grep_file = $MYSQLTEST_VARDIR/mysqld.1/data/percona_slow_query_log-microseconds_in_slow_query_log.log
---let grep_pattern = # Time: [0-9]+[ ]+[0-9]+:[0-9]+:[0-9]+
---source grep.inc
-
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit-master.opt
deleted file mode 100644
index c1cf3ebdb30..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_slow_query_log-min_examined_row_limit.log --long-query-time=1 --slow-query-log=OFF
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit.result
deleted file mode 100644
index 1e8bc0723ac..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit.result
+++ /dev/null
@@ -1,25 +0,0 @@
-drop table if exists t;
-# Create test table
-create table t(id INT PRIMARY KEY) engine=InnoDB;
-# Insert two rows to test table
-insert into t values(1);
-insert into t values(2);
-insert into t values(3);
-SET GLOBAL SLOW_QUERY_LOG=ON;
-SELECT sleep(2);
-sleep(2)
-0
-set min_examined_row_limit=5;
-SELECT sleep(2) union select t2.id from t as t1,t as t2;
-sleep(2)
-0
-1
-2
-3
-SELECT sleep(2);
-sleep(2)
-0
-SET GLOBAL SLOW_QUERY_LOG=OFF;
-drop table if exists t;
-FLUSH LOGS;
-2
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit.test
deleted file mode 100644
index ca68658a6c5..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-min_examined_row_limit.test
+++ /dev/null
@@ -1,32 +0,0 @@
-source include/have_xtradb.inc;
-
---disable_warnings
-drop table if exists t;
---enable_warnings
-
---echo # Create test table
-create table t(id INT PRIMARY KEY) engine=InnoDB;
---echo # Insert two rows to test table
-insert into t values(1);
-insert into t values(2);
-insert into t values(3);
-
-SET GLOBAL SLOW_QUERY_LOG=ON;
-
-SELECT sleep(2);
-
-set min_examined_row_limit=5;
-
-SELECT sleep(2) union select t2.id from t as t1,t as t2;
-SELECT sleep(2);
-
-SET GLOBAL SLOW_QUERY_LOG=OFF;
-
---disable_warnings
-drop table if exists t;
---enable_warnings
-
-FLUSH LOGS;
---let grep_file = $MYSQLTEST_VARDIR/mysqld.1/data/percona_slow_query_log-min_examined_row_limit.log
---let grep_pattern = Query_time
---source grep.inc
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats-master.opt
deleted file mode 100644
index 286a9c4484d..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---long_query_time=0 --log_slow_verbosity=innodb --log_slow_slave_statements
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats-slave.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats-slave.opt
deleted file mode 100644
index 286a9c4484d..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
---long_query_time=0 --log_slow_verbosity=innodb --log_slow_slave_statements
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats.result
deleted file mode 100644
index 51993e767c2..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats.result
+++ /dev/null
@@ -1,22 +0,0 @@
-include/master-slave.inc
-[connection master]
-DROP TABLE IF EXISTS t;
-CREATE TABLE t(id INT,data CHAR(30)) ENGINE=InnoDB;
-INSERT INTO t VALUES
-(1,"aaaaabbbbbcccccdddddeeeeefffff"),
-(2,"aaaaabbbbbcccccdddddeeeeefffff"),
-(3,"aaaaabbbbbcccccdddddeeeeefffff"),
-(4,"aaaaabbbbbcccccdddddeeeeefffff"),
-(5,"aaaaabbbbbcccccdddddeeeeefffff");
-INSERT INTO t SELECT t2.id,t2.data from t as t1, t as t2;
-INSERT INTO t SELECT t2.id,t2.data from t as t1, t as t2;
-STOP SLAVE;
-include/wait_for_slave_to_stop.inc
-START SLAVE;
-include/wait_for_slave_to_start.inc
-INSERT INTO t SELECT t.id,t.data from t;
-DROP TABLE IF EXISTS t;
-FLUSH LOGS;
-4
-STOP SLAVE;
-include/wait_for_slave_to_stop.inc
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats.test
deleted file mode 100644
index b0a6c98870c..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_innodb_stats.test
+++ /dev/null
@@ -1,51 +0,0 @@
--- source include/have_binlog_format_mixed_or_statement.inc
--- source include/have_xtradb.inc
--- source include/master-slave.inc
-
-connection master;
--- disable_warnings
-DROP TABLE IF EXISTS t;
--- enable_warnings
-CREATE TABLE t(id INT,data CHAR(30)) ENGINE=InnoDB;
-INSERT INTO t VALUES
-(1,"aaaaabbbbbcccccdddddeeeeefffff"),
-(2,"aaaaabbbbbcccccdddddeeeeefffff"),
-(3,"aaaaabbbbbcccccdddddeeeeefffff"),
-(4,"aaaaabbbbbcccccdddddeeeeefffff"),
-(5,"aaaaabbbbbcccccdddddeeeeefffff");
-INSERT INTO t SELECT t2.id,t2.data from t as t1, t as t2;
-INSERT INTO t SELECT t2.id,t2.data from t as t1, t as t2;
-sync_slave_with_master;
-
-connection slave;
-STOP SLAVE;
--- source include/wait_for_slave_to_stop.inc
---write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
-wait
-EOF
---shutdown_server 10
---source include/wait_until_disconnected.inc
---append_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
-restart
-EOF
---enable_reconnect
---source include/wait_until_connected_again.inc
-START SLAVE;
--- source include/wait_for_slave_to_start.inc
-
-connection master;
-INSERT INTO t SELECT t.id,t.data from t;
-sync_slave_with_master;
-
-connection master;
-DROP TABLE IF EXISTS t;
-sync_slave_with_master;
-
-connection slave;
-FLUSH LOGS;
---let grep_file = $MYSQLTEST_VARDIR/mysqld.2/mysqld-slow.log
---let grep_pattern = InnoDB_IO_r_ops
---source grep.inc
-
-STOP SLAVE;
--- source include/wait_for_slave_to_stop.inc
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time-master.opt
deleted file mode 100644
index 49038530c56..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_log_slow_slave_statements-master.log --long-query-time=1
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time-slave.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time-slave.opt
deleted file mode 100644
index 648f309f744..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_log_slow_slave_statements-slave.log --long-query-time=1
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time.result
deleted file mode 100644
index e5f4568dd58..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time.result
+++ /dev/null
@@ -1,89 +0,0 @@
-include/master-slave.inc
-[connection master]
-DROP TABLE IF EXISTS t;
-CREATE TABLE t(id INT);
-START SLAVE;
-include/wait_for_slave_to_start.inc
-INSERT INTO t VALUES (1);
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements OFF
-set global log_slow_slave_statements=ON;
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements ON
-INSERT INTO t VALUES (2);
-STOP SLAVE;
-include/wait_for_slave_to_stop.inc
-START SLAVE;
-include/wait_for_slave_to_start.inc
-INSERT INTO t VALUES (3);
-show variables like 'long_query_time';
-Variable_name Value
-long_query_time 1.000000
-show global variables like 'long_query_time';
-Variable_name Value
-long_query_time 1.000000
-show global variables like 'slow_query_log_use_global_control';
-Variable_name Value
-slow_query_log_use_global_control
-set global long_query_time=0;
-show variables like 'long_query_time';
-Variable_name Value
-long_query_time 1.000000
-show global variables like 'long_query_time';
-Variable_name Value
-long_query_time 0.000000
-show global variables like 'slow_query_log_use_global_control';
-Variable_name Value
-slow_query_log_use_global_control
-INSERT INTO t VALUES (4);
-show variables like 'long_query_time';
-Variable_name Value
-long_query_time 1.000000
-show global variables like 'long_query_time';
-Variable_name Value
-long_query_time 0.000000
-show global variables like 'slow_query_log_use_global_control';
-Variable_name Value
-slow_query_log_use_global_control
-set global slow_query_log_use_global_control='long_query_time';
-show variables like 'long_query_time';
-Variable_name Value
-long_query_time 0.000000
-show global variables like 'long_query_time';
-Variable_name Value
-long_query_time 0.000000
-show global variables like 'slow_query_log_use_global_control';
-Variable_name Value
-slow_query_log_use_global_control long_query_time
-INSERT INTO t VALUES (5);
-show variables like 'long_query_time';
-Variable_name Value
-long_query_time 0.000000
-show global variables like 'long_query_time';
-Variable_name Value
-long_query_time 0.000000
-show global variables like 'slow_query_log_use_global_control';
-Variable_name Value
-slow_query_log_use_global_control long_query_time
-set global long_query_time=1;
-set global slow_query_log_use_global_control='';
-FLUSH LOGS;
-# Analyse master slow_query_log
-0
-0
-0
-0
-0
-FLUSH LOGS;
-# Analyse slave slow_query_log
-0
-0
-0
-0
-1
-set global log_slow_slave_statements=OFF;
-DROP TABLE t;
-STOP SLAVE;
-include/wait_for_slave_to_stop.inc
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time.test
deleted file mode 100644
index c718b2c3d28..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-and-use_global_long_query_time.test
+++ /dev/null
@@ -1,107 +0,0 @@
--- source include/have_binlog_format_mixed_or_statement.inc
--- source include/master-slave.inc
-
-connection master;
--- disable_warnings
-DROP TABLE IF EXISTS t;
--- enable_warnings
-CREATE TABLE t(id INT);
-
--- disable_warnings
-connection slave;
-START SLAVE;
--- source include/wait_for_slave_to_start.inc
--- enable_warnings
-
-connection master;
-INSERT INTO t VALUES (1);
-sync_slave_with_master;
-
-connection slave;
-show variables like 'log_slow_slave_statements';
-set global log_slow_slave_statements=ON;
-show variables like 'log_slow_slave_statements';
-
-connection master;
-INSERT INTO t VALUES (2);
-sync_slave_with_master;
-connection slave;
-
-STOP SLAVE;
--- source include/wait_for_slave_to_stop.inc
-START SLAVE;
--- source include/wait_for_slave_to_start.inc
-
-connection master;
-INSERT INTO t VALUES (3);
-sync_slave_with_master;
-
-connection slave;
-show variables like 'long_query_time';
-show global variables like 'long_query_time';
-show global variables like 'slow_query_log_use_global_control';
-set global long_query_time=0;
-show variables like 'long_query_time';
-show global variables like 'long_query_time';
-show global variables like 'slow_query_log_use_global_control';
-
-connection master;
-INSERT INTO t VALUES (4);
-sync_slave_with_master;
-
-connection slave;
-show variables like 'long_query_time';
-show global variables like 'long_query_time';
-show global variables like 'slow_query_log_use_global_control';
-set global slow_query_log_use_global_control='long_query_time';
-show variables like 'long_query_time';
-show global variables like 'long_query_time';
-show global variables like 'slow_query_log_use_global_control';
-
-#-- echo # Make insert(5) on master
-connection master;
-INSERT INTO t VALUES (5);
-sync_slave_with_master;
-connection slave;
-show variables like 'long_query_time';
-show global variables like 'long_query_time';
-show global variables like 'slow_query_log_use_global_control';
-set global long_query_time=1;
-set global slow_query_log_use_global_control='';
-
-connection master;
-FLUSH LOGS;
-
--- echo # Analyse master slow_query_log
-let $i=5;
-let $k=1;
-while($i)
-{
- --let grep_file = $MYSQLTEST_VARDIR/mysqld.1/data/percona_log_slow_slave_statements-master.log
- --let grep_pattern = INSERT INTO t VALUES \($k\)
- --source grep.inc
- dec $i;
- inc $k;
-}
-
-connection slave;
-FLUSH LOGS;
-
--- echo # Analyse slave slow_query_log
-let $i=5;
-let $k=1;
-while($i)
-{
- --let grep_file = $MYSQLTEST_VARDIR/mysqld.2/data/percona_log_slow_slave_statements-slave.log
- --let grep_pattern = INSERT INTO t VALUES \($k\)
- --source grep.inc
- dec $i;
- inc $k;
-}
-set global log_slow_slave_statements=OFF;
-
-connection master;
-DROP TABLE t;
-sync_slave_with_master;
-STOP SLAVE;
--- source include/wait_for_slave_to_stop.inc
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-master.opt
deleted file mode 100644
index ebf25ddd37d..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_log_slow_slave_statements-master.log --long-query-time=0
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-slave.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-slave.opt
deleted file mode 100644
index 96cd9004493..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_log_slow_slave_statements-slave.log --long-query-time=0
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements.result
deleted file mode 100644
index 0548dc370b4..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements.result
+++ /dev/null
@@ -1,94 +0,0 @@
-include/master-slave.inc
-[connection master]
-DROP TABLE IF EXISTS t;
-CREATE TABLE t(id INT);
-START SLAVE;
-include/wait_for_slave_to_start.inc
-INSERT INTO t VALUES (1);
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements OFF
-set global log_slow_slave_statements=ON;
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements ON
-INSERT INTO t VALUES (2);
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements ON
-set global log_slow_slave_statements=ON;
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements ON
-STOP SLAVE;
-include/wait_for_slave_to_stop.inc
-START SLAVE;
-include/wait_for_slave_to_start.inc
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements ON
-set global log_slow_slave_statements=ON;
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements ON
-INSERT INTO t VALUES (3);
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements ON
-set global log_slow_slave_statements=OFF;
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements OFF
-INSERT INTO t VALUES (4);
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements OFF
-STOP SLAVE;
-include/wait_for_slave_to_stop.inc
-START SLAVE;
-include/wait_for_slave_to_start.inc
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements OFF
-INSERT INTO t VALUES (5);
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements OFF
-set global log_slow_slave_statements=ON;
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements ON
-INSERT INTO t VALUES (6);
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements ON
-STOP SLAVE;
-include/wait_for_slave_to_stop.inc
-START SLAVE;
-include/wait_for_slave_to_start.inc
-show variables like 'log_slow_slave_statements';
-Variable_name Value
-log_slow_slave_statements ON
-INSERT INTO t VALUES (7);
-FLUSH LOGS;
-# Analyse master slow_query_log
-1
-1
-1
-1
-1
-1
-1
-FLUSH LOGS;
-# Analyse slave slow_query_log
-0
-0
-1
-0
-0
-0
-1
-set global log_slow_slave_statements=OFF;
-DROP TABLE t;
-STOP SLAVE;
-include/wait_for_slave_to_stop.inc
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements.test
deleted file mode 100644
index 88c74bab69b..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slave_statements.test
+++ /dev/null
@@ -1,133 +0,0 @@
--- source include/have_binlog_format_statement.inc
--- source include/master-slave.inc
-
-connection master;
--- disable_warnings
-DROP TABLE IF EXISTS t;
--- enable_warnings
-
-CREATE TABLE t(id INT);
-
--- disable_warnings
-connection slave;
-START SLAVE;
--- source include/wait_for_slave_to_start.inc
--- enable_warnings
-
-connection master;
-INSERT INTO t VALUES (1);
-sync_slave_with_master;
-
-connection slave;
-show variables like 'log_slow_slave_statements';
-set global log_slow_slave_statements=ON;
-show variables like 'log_slow_slave_statements';
-
-connection master;
-INSERT INTO t VALUES (2);
-sync_slave_with_master;
-
-connection slave;
-show variables like 'log_slow_slave_statements';
-set global log_slow_slave_statements=ON;
-show variables like 'log_slow_slave_statements';
-
-STOP SLAVE;
--- source include/wait_for_slave_to_stop.inc
-START SLAVE;
--- source include/wait_for_slave_to_start.inc
-
-connection slave;
-show variables like 'log_slow_slave_statements';
-set global log_slow_slave_statements=ON;
-show variables like 'log_slow_slave_statements';
-
-connection master;
-INSERT INTO t VALUES (3);
-sync_slave_with_master;
-
-connection slave;
-show variables like 'log_slow_slave_statements';
-set global log_slow_slave_statements=OFF;
-show variables like 'log_slow_slave_statements';
-
-connection master;
-INSERT INTO t VALUES (4);
-sync_slave_with_master;
-
-connection slave;
-show variables like 'log_slow_slave_statements';
-
-STOP SLAVE;
--- source include/wait_for_slave_to_stop.inc
-START SLAVE;
--- source include/wait_for_slave_to_start.inc
-
-connection slave;
-show variables like 'log_slow_slave_statements';
-
-connection master;
-INSERT INTO t VALUES (5);
-sync_slave_with_master;
-
-connection slave;
-show variables like 'log_slow_slave_statements';
-set global log_slow_slave_statements=ON;
-show variables like 'log_slow_slave_statements';
-
-connection master;
-INSERT INTO t VALUES (6);
-sync_slave_with_master;
-
-connection slave;
-show variables like 'log_slow_slave_statements';
-
-STOP SLAVE;
--- source include/wait_for_slave_to_stop.inc
-START SLAVE;
--- source include/wait_for_slave_to_start.inc
-
-connection slave;
-show variables like 'log_slow_slave_statements';
-
-connection master;
-INSERT INTO t VALUES (7);
-sync_slave_with_master;
-
-connection master;
-FLUSH LOGS;
-
--- echo # Analyse master slow_query_log
-let $i=7;
-let $k=1;
-while($i)
-{
- --let grep_file = $MYSQLTEST_VARDIR/mysqld.1/data/percona_log_slow_slave_statements-master.log
- --let grep_pattern = INSERT INTO t VALUES \($k\)
- --source grep.inc
- dec $i;
- inc $k;
-}
-
-connection slave;
-FLUSH LOGS;
-
--- echo # Analyse slave slow_query_log
-let $i=7;
-let $k=1;
-while($i)
-{
- --let grep_file = $MYSQLTEST_VARDIR/mysqld.2/data/percona_log_slow_slave_statements-slave.log
- --let grep_pattern = INSERT INTO t VALUES \($k\)
- --source grep.inc
- dec $i;
- inc $k;
-}
-set global log_slow_slave_statements=OFF;
-
-connection master;
-DROP TABLE t;
-sync_slave_with_master;
-
-STOP SLAVE;
--- source include/wait_for_slave_to_stop.inc
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl-master.opt
deleted file mode 100644
index c3ebcd95326..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow_query_log_timestamp_precision='microsecond'
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl.result
deleted file mode 100644
index 5355922bb45..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl.result
+++ /dev/null
@@ -1,3 +0,0 @@
-show global variables like 'slow_query_log_timestamp_precision';
-Variable_name Value
-slow_query_log_timestamp_precision microsecond
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl.test
deleted file mode 100644
index 8f6291e9897..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-slow_query_log_microseconds_timestamp-cl.test
+++ /dev/null
@@ -1 +0,0 @@
-show global variables like 'slow_query_log_timestamp_precision';
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl-master.opt
deleted file mode 100644
index cf93591c365..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---use_global_long_query_time
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl.result
deleted file mode 100644
index d554a64bdb4..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl.result
+++ /dev/null
@@ -1,3 +0,0 @@
-show global variables like 'use_global_long_query_time';
-Variable_name Value
-use_global_long_query_time ON
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl.test
deleted file mode 100644
index 662aee24ebe..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-cl.test
+++ /dev/null
@@ -1 +0,0 @@
-show global variables like 'use_global_long_query_time';
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-master.opt b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-master.opt
deleted file mode 100644
index 16b6ca5b714..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slow-query-log-file=percona_slow_query_log-use_global_long_query_time.log --long-query-time=2 --slow_query_log_use_global_control=long_query_time --slow-query-log=OFF
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time.result b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time.result
deleted file mode 100644
index e89edf0430f..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time.result
+++ /dev/null
@@ -1,46 +0,0 @@
-SET GLOBAL SLOW_QUERY_LOG=ON;
-SELECT sleep(1);
-sleep(1)
-0
-SELECT sleep(3);
-sleep(3)
-0
-SELECT sleep(5);
-sleep(5)
-0
-set global long_query_time=4;
-set global slow_query_log_use_global_control='long_query_time';
-SELECT sleep(1);
-sleep(1)
-0
-SELECT sleep(3);
-sleep(3)
-0
-SELECT sleep(5);
-sleep(5)
-0
-set global long_query_time=2;
-set global slow_query_log_use_global_control='';
-SET GLOBAL SLOW_QUERY_LOG=OFF;
-FLUSH LOGS;
-3
-show global variables like 'slow_query_log_use_global_control';
-Variable_name Value
-slow_query_log_use_global_control
-set global slow_query_log_use_global_control='long_query_time';
-show global variables like 'slow_query_log_use_global_control';
-Variable_name Value
-slow_query_log_use_global_control long_query_time
-set global slow_query_log_use_global_control='log_slow_filter,long_query_time';
-show global variables like 'slow_query_log_use_global_control';
-Variable_name Value
-slow_query_log_use_global_control log_slow_filter,long_query_time
-set global slow_query_log_use_global_control='log_slow_filter';
-show global variables like 'slow_query_log_use_global_control';
-Variable_name Value
-slow_query_log_use_global_control log_slow_filter
-set global slow_query_log_use_global_control='';
-show global variables like 'slow_query_log_use_global_control';
-Variable_name Value
-slow_query_log_use_global_control
-set global slow_query_log_use_global_control='long_query_time';
diff --git a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time.test b/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time.test
deleted file mode 100644
index 61b2dabd23d..00000000000
--- a/mysql-test/suite/percona/slow_extended.patch/percona_slow_extended-use_global_long_query_time.test
+++ /dev/null
@@ -1,40 +0,0 @@
-source include/have_xtradb.inc;
-
-SET GLOBAL SLOW_QUERY_LOG=ON;
-
-SELECT sleep(1);
-SELECT sleep(3);
-SELECT sleep(5);
-
-set global long_query_time=4;
-set global slow_query_log_use_global_control='long_query_time';
-
-SELECT sleep(1);
-SELECT sleep(3);
-SELECT sleep(5);
-
-set global long_query_time=2;
-set global slow_query_log_use_global_control='';
-
-SET GLOBAL SLOW_QUERY_LOG=OFF;
-
-FLUSH LOGS;
---let grep_file = $MYSQLTEST_VARDIR/mysqld.1/data/percona_slow_query_log-use_global_long_query_time.log
---let grep_pattern = Query_time
---source grep.inc
-
-show global variables like 'slow_query_log_use_global_control';
-
-set global slow_query_log_use_global_control='long_query_time';
-show global variables like 'slow_query_log_use_global_control';
-
-set global slow_query_log_use_global_control='log_slow_filter,long_query_time';
-show global variables like 'slow_query_log_use_global_control';
-
-set global slow_query_log_use_global_control='log_slow_filter';
-show global variables like 'slow_query_log_use_global_control';
-
-set global slow_query_log_use_global_control='';
-show global variables like 'slow_query_log_use_global_control';
-
-set global slow_query_log_use_global_control='long_query_time';
diff --git a/mysql-test/suite/percona/sql_no_fcache.patch/percona_sql_no_fcache.result b/mysql-test/suite/percona/sql_no_fcache.patch/percona_sql_no_fcache.result
deleted file mode 100644
index bc1413fb96d..00000000000
--- a/mysql-test/suite/percona/sql_no_fcache.patch/percona_sql_no_fcache.result
+++ /dev/null
@@ -1,12 +0,0 @@
-drop table if exists t1;
-create table t (a int not null);
-insert into t values (1),(2),(3);
-SELECT SQL_NO_FCACHE SLEEP(0);
-SLEEP(0)
-0
-SELECT /*!40001 SQL_NO_CACHE */ /*!50084 SQL_NO_FCACHE */ * FROM t;
-a
-1
-2
-3
-DROP TABLE t;
diff --git a/mysql-test/suite/percona/sql_no_fcache.patch/percona_sql_no_fcache.test b/mysql-test/suite/percona/sql_no_fcache.patch/percona_sql_no_fcache.test
deleted file mode 100644
index 1ed8be2196b..00000000000
--- a/mysql-test/suite/percona/sql_no_fcache.patch/percona_sql_no_fcache.test
+++ /dev/null
@@ -1,11 +0,0 @@
---disable_warnings
-drop table if exists t1;
---enable_warnings
-
-create table t (a int not null);
-insert into t values (1),(2),(3);
-
-SELECT SQL_NO_FCACHE SLEEP(0);
-SELECT /*!40001 SQL_NO_CACHE */ /*!50084 SQL_NO_FCACHE */ * FROM t;
-
-DROP TABLE t;
diff --git a/mysql-test/suite/percona/userstat_bug602047.result b/mysql-test/suite/percona/userstat_bug602047.result
deleted file mode 100644
index 966439b817d..00000000000
--- a/mysql-test/suite/percona/userstat_bug602047.result
+++ /dev/null
@@ -1,15 +0,0 @@
-DROP TABLE IF EXISTS t1;
-SET GLOBAL userstat=ON;
-CREATE TABLE t1 ( id int(10), PRIMARY KEY (id)) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-10
-SELECT ROWS_READ FROM information_schema.table_statistics WHERE TABLE_NAME='t1';
-ROWS_READ
-10
-SELECT ROWS_READ FROM information_schema.index_statistics WHERE TABLE_NAME='t1';
-ROWS_READ
-10
-SET GLOBAL userstat=OFF;
-DROP TABLE t1;
diff --git a/mysql-test/suite/percona/userstat_bug602047.test b/mysql-test/suite/percona/userstat_bug602047.test
deleted file mode 100644
index 31fc36b80e2..00000000000
--- a/mysql-test/suite/percona/userstat_bug602047.test
+++ /dev/null
@@ -1,12 +0,0 @@
---source include/have_xtradb.inc
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-SET GLOBAL userstat=ON;
-CREATE TABLE t1 ( id int(10), PRIMARY KEY (id)) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
-SELECT COUNT(*) FROM t1;
-SELECT ROWS_READ FROM information_schema.table_statistics WHERE TABLE_NAME='t1';
-SELECT ROWS_READ FROM information_schema.index_statistics WHERE TABLE_NAME='t1';
-SET GLOBAL userstat=OFF;
-DROP TABLE t1;
diff --git a/mysql-test/suite/perfschema/r/dml_handler.result b/mysql-test/suite/perfschema/r/dml_handler.result
index 2a1cc7035af..ab850aee933 100644
--- a/mysql-test/suite/perfschema/r/dml_handler.result
+++ b/mysql-test/suite/perfschema/r/dml_handler.result
@@ -3,7 +3,8 @@
CREATE TEMPORARY TABLE table_list (id INT AUTO_INCREMENT, PRIMARY KEY (id)) AS
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA='performance_schema';
+WHERE TABLE_SCHEMA='performance_schema'
+ ORDER BY TABLE_NAME;
SELECT COUNT(*) FROM table_list INTO @table_count;
# For each table in the performance schema, attempt HANDLER...OPEN,
@@ -67,11 +68,11 @@ SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=34;
HANDLER performance_schema.mutex_instances OPEN;
ERROR HY000: Storage engine PERFORMANCE_SCHEMA of the table `performance_schema`.`mutex_instances` doesn't have this option
SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=33;
-HANDLER performance_schema.hosts OPEN;
-ERROR HY000: Storage engine PERFORMANCE_SCHEMA of the table `performance_schema`.`hosts` doesn't have this option
-SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=32;
HANDLER performance_schema.host_cache OPEN;
ERROR HY000: Storage engine PERFORMANCE_SCHEMA of the table `performance_schema`.`host_cache` doesn't have this option
+SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=32;
+HANDLER performance_schema.hosts OPEN;
+ERROR HY000: Storage engine PERFORMANCE_SCHEMA of the table `performance_schema`.`hosts` doesn't have this option
SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=31;
HANDLER performance_schema.file_summary_by_instance OPEN;
ERROR HY000: Storage engine PERFORMANCE_SCHEMA of the table `performance_schema`.`file_summary_by_instance` doesn't have this option
diff --git a/mysql-test/suite/perfschema/r/dml_setup_instruments.result b/mysql-test/suite/perfschema/r/dml_setup_instruments.result
index 83510e5827e..ff184806e2e 100644
--- a/mysql-test/suite/perfschema/r/dml_setup_instruments.result
+++ b/mysql-test/suite/perfschema/r/dml_setup_instruments.result
@@ -4,6 +4,7 @@ where name like 'Wait/Synch/Mutex/sql/%'
and name not in ('wait/synch/mutex/sql/DEBUG_SYNC::mutex')
order by name limit 10;
NAME ENABLED TIMED
+wait/synch/mutex/sql/Ack_receiver::mutex YES YES
wait/synch/mutex/sql/Cversion_lock YES YES
wait/synch/mutex/sql/Delayed_insert::mutex YES YES
wait/synch/mutex/sql/Event_scheduler::LOCK_scheduler_state YES YES
@@ -13,7 +14,6 @@ wait/synch/mutex/sql/HA_DATA_PARTITION::LOCK_auto_inc YES YES
wait/synch/mutex/sql/LOCK_active_mi YES YES
wait/synch/mutex/sql/LOCK_after_binlog_sync YES YES
wait/synch/mutex/sql/LOCK_audit_mask YES YES
-wait/synch/mutex/sql/LOCK_binlog_state YES YES
select * from performance_schema.setup_instruments
where name like 'Wait/Synch/Rwlock/sql/%'
and name not in ('wait/synch/rwlock/sql/CRYPTO_dynlock_value::lock')
@@ -36,6 +36,8 @@ where name like 'Wait/Synch/Cond/sql/%'
'wait/synch/cond/sql/DEBUG_SYNC::cond')
order by name limit 10;
NAME ENABLED TIMED
+wait/synch/cond/sql/Ack_receiver::cond YES YES
+wait/synch/cond/sql/COND_binlog_send YES YES
wait/synch/cond/sql/COND_flush_thread_cache YES YES
wait/synch/cond/sql/COND_group_commit_orderer YES YES
wait/synch/cond/sql/COND_gtid_ignore_duplicates YES YES
@@ -44,8 +46,6 @@ wait/synch/cond/sql/COND_parallel_entry YES YES
wait/synch/cond/sql/COND_prepare_ordered YES YES
wait/synch/cond/sql/COND_queue_state YES YES
wait/synch/cond/sql/COND_rpl_thread YES YES
-wait/synch/cond/sql/COND_rpl_thread_pool YES YES
-wait/synch/cond/sql/COND_rpl_thread_queue YES YES
select * from performance_schema.setup_instruments
where name='Wait';
select * from performance_schema.setup_instruments
diff --git a/mysql-test/suite/perfschema/r/information_schema.result b/mysql-test/suite/perfschema/r/information_schema.result
index 5e5ce57fb2e..a684fd7b84e 100644
--- a/mysql-test/suite/perfschema/r/information_schema.result
+++ b/mysql-test/suite/perfschema/r/information_schema.result
@@ -1,6 +1,7 @@
select TABLE_SCHEMA, lower(TABLE_NAME), TABLE_CATALOG
from information_schema.tables
-where TABLE_SCHEMA='performance_schema';
+where TABLE_SCHEMA='performance_schema'
+ order by table_name;
TABLE_SCHEMA lower(TABLE_NAME) TABLE_CATALOG
performance_schema accounts def
performance_schema cond_instances def
@@ -33,8 +34,8 @@ performance_schema events_waits_summary_global_by_event_name def
performance_schema file_instances def
performance_schema file_summary_by_event_name def
performance_schema file_summary_by_instance def
-performance_schema host_cache def
performance_schema hosts def
+performance_schema host_cache def
performance_schema mutex_instances def
performance_schema objects_summary_global_by_type def
performance_schema performance_timers def
@@ -56,7 +57,8 @@ performance_schema threads def
performance_schema users def
select lower(TABLE_NAME), TABLE_TYPE, ENGINE
from information_schema.tables
-where TABLE_SCHEMA='performance_schema';
+where TABLE_SCHEMA='performance_schema'
+ order by table_name;
lower(TABLE_NAME) TABLE_TYPE ENGINE
accounts BASE TABLE PERFORMANCE_SCHEMA
cond_instances BASE TABLE PERFORMANCE_SCHEMA
@@ -89,8 +91,8 @@ events_waits_summary_global_by_event_name BASE TABLE PERFORMANCE_SCHEMA
file_instances BASE TABLE PERFORMANCE_SCHEMA
file_summary_by_event_name BASE TABLE PERFORMANCE_SCHEMA
file_summary_by_instance BASE TABLE PERFORMANCE_SCHEMA
-host_cache BASE TABLE PERFORMANCE_SCHEMA
hosts BASE TABLE PERFORMANCE_SCHEMA
+host_cache BASE TABLE PERFORMANCE_SCHEMA
mutex_instances BASE TABLE PERFORMANCE_SCHEMA
objects_summary_global_by_type BASE TABLE PERFORMANCE_SCHEMA
performance_timers BASE TABLE PERFORMANCE_SCHEMA
@@ -112,7 +114,8 @@ threads BASE TABLE PERFORMANCE_SCHEMA
users BASE TABLE PERFORMANCE_SCHEMA
select lower(TABLE_NAME), VERSION, ROW_FORMAT
from information_schema.tables
-where TABLE_SCHEMA='performance_schema';
+where TABLE_SCHEMA='performance_schema'
+ order by table_name;
lower(TABLE_NAME) VERSION ROW_FORMAT
accounts 10 Fixed
cond_instances 10 Dynamic
@@ -145,8 +148,8 @@ events_waits_summary_global_by_event_name 10 Dynamic
file_instances 10 Dynamic
file_summary_by_event_name 10 Dynamic
file_summary_by_instance 10 Dynamic
-host_cache 10 Dynamic
hosts 10 Fixed
+host_cache 10 Dynamic
mutex_instances 10 Dynamic
objects_summary_global_by_type 10 Dynamic
performance_timers 10 Fixed
@@ -168,7 +171,8 @@ threads 10 Dynamic
users 10 Fixed
select lower(TABLE_NAME), TABLE_ROWS, AVG_ROW_LENGTH
from information_schema.tables
-where TABLE_SCHEMA='performance_schema';
+where TABLE_SCHEMA='performance_schema'
+ order by table_name;
lower(TABLE_NAME) TABLE_ROWS AVG_ROW_LENGTH
accounts 1000 0
cond_instances 1000 0
@@ -201,8 +205,8 @@ events_waits_summary_global_by_event_name 1000 0
file_instances 1000 0
file_summary_by_event_name 1000 0
file_summary_by_instance 1000 0
-host_cache 1000 0
hosts 1000 0
+host_cache 1000 0
mutex_instances 1000 0
objects_summary_global_by_type 1000 0
performance_timers 5 0
@@ -224,7 +228,8 @@ threads 1000 0
users 1000 0
select lower(TABLE_NAME), DATA_LENGTH, MAX_DATA_LENGTH
from information_schema.tables
-where TABLE_SCHEMA='performance_schema';
+where TABLE_SCHEMA='performance_schema'
+ order by table_name;
lower(TABLE_NAME) DATA_LENGTH MAX_DATA_LENGTH
accounts 0 0
cond_instances 0 0
@@ -257,8 +262,8 @@ events_waits_summary_global_by_event_name 0 0
file_instances 0 0
file_summary_by_event_name 0 0
file_summary_by_instance 0 0
-host_cache 0 0
hosts 0 0
+host_cache 0 0
mutex_instances 0 0
objects_summary_global_by_type 0 0
performance_timers 0 0
@@ -280,7 +285,8 @@ threads 0 0
users 0 0
select lower(TABLE_NAME), INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT
from information_schema.tables
-where TABLE_SCHEMA='performance_schema';
+where TABLE_SCHEMA='performance_schema'
+ order by table_name;
lower(TABLE_NAME) INDEX_LENGTH DATA_FREE AUTO_INCREMENT
accounts 0 0 NULL
cond_instances 0 0 NULL
@@ -313,8 +319,8 @@ events_waits_summary_global_by_event_name 0 0 NULL
file_instances 0 0 NULL
file_summary_by_event_name 0 0 NULL
file_summary_by_instance 0 0 NULL
-host_cache 0 0 NULL
hosts 0 0 NULL
+host_cache 0 0 NULL
mutex_instances 0 0 NULL
objects_summary_global_by_type 0 0 NULL
performance_timers 0 0 NULL
@@ -336,7 +342,8 @@ threads 0 0 NULL
users 0 0 NULL
select lower(TABLE_NAME), CREATE_TIME, UPDATE_TIME, CHECK_TIME
from information_schema.tables
-where TABLE_SCHEMA='performance_schema';
+where TABLE_SCHEMA='performance_schema'
+ order by table_name;
lower(TABLE_NAME) CREATE_TIME UPDATE_TIME CHECK_TIME
accounts NULL NULL NULL
cond_instances NULL NULL NULL
@@ -369,8 +376,8 @@ events_waits_summary_global_by_event_name NULL NULL NULL
file_instances NULL NULL NULL
file_summary_by_event_name NULL NULL NULL
file_summary_by_instance NULL NULL NULL
-host_cache NULL NULL NULL
hosts NULL NULL NULL
+host_cache NULL NULL NULL
mutex_instances NULL NULL NULL
objects_summary_global_by_type NULL NULL NULL
performance_timers NULL NULL NULL
@@ -392,7 +399,8 @@ threads NULL NULL NULL
users NULL NULL NULL
select lower(TABLE_NAME), TABLE_COLLATION, CHECKSUM
from information_schema.tables
-where TABLE_SCHEMA='performance_schema';
+where TABLE_SCHEMA='performance_schema'
+ order by table_name;
lower(TABLE_NAME) TABLE_COLLATION CHECKSUM
accounts utf8_general_ci NULL
cond_instances utf8_general_ci NULL
@@ -425,8 +433,8 @@ events_waits_summary_global_by_event_name utf8_general_ci NULL
file_instances utf8_general_ci NULL
file_summary_by_event_name utf8_general_ci NULL
file_summary_by_instance utf8_general_ci NULL
-host_cache utf8_general_ci NULL
hosts utf8_general_ci NULL
+host_cache utf8_general_ci NULL
mutex_instances utf8_general_ci NULL
objects_summary_global_by_type utf8_general_ci NULL
performance_timers utf8_general_ci NULL
@@ -448,7 +456,8 @@ threads utf8_general_ci NULL
users utf8_general_ci NULL
select lower(TABLE_NAME), TABLE_COMMENT
from information_schema.tables
-where TABLE_SCHEMA='performance_schema';
+where TABLE_SCHEMA='performance_schema'
+ order by table_name;
lower(TABLE_NAME) TABLE_COMMENT
accounts
cond_instances
@@ -481,8 +490,8 @@ events_waits_summary_global_by_event_name
file_instances
file_summary_by_event_name
file_summary_by_instance
-host_cache
hosts
+host_cache
mutex_instances
objects_summary_global_by_type
performance_timers
diff --git a/mysql-test/suite/perfschema/r/ortho_iter.result b/mysql-test/suite/perfschema/r/ortho_iter.result
index 80897c22148..299551051c9 100644
--- a/mysql-test/suite/perfschema/r/ortho_iter.result
+++ b/mysql-test/suite/perfschema/r/ortho_iter.result
@@ -21,7 +21,8 @@ declare debug integer default 0;
declare pfs_cursor CURSOR FOR
select table_name from information_schema.tables
where table_schema= 'performance_schema'
- and table_name like "events_%_by_event_name%";
+ and table_name like "events_%_by_event_name%"
+ order by table_name;
declare continue handler for sqlstate '02000'
set done = 1;
select (instr_name like "wait/%") or (instr_name like "idle/%") into is_wait;
diff --git a/mysql-test/suite/perfschema/r/relaylog.result b/mysql-test/suite/perfschema/r/relaylog.result
index 8dcecf0dc9c..3fcf7367b53 100644
--- a/mysql-test/suite/perfschema/r/relaylog.result
+++ b/mysql-test/suite/perfschema/r/relaylog.result
@@ -62,7 +62,9 @@ where event_name like "%MYSQL_BIN_LOG%"
and event_name not like "%MYSQL_BIN_LOG::COND_xid_list"
order by event_name;
EVENT_NAME COUNT_STAR
+wait/synch/cond/sql/MYSQL_BIN_LOG::COND_bin_log_updated MANY
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_queue_busy NONE
+wait/synch/cond/sql/MYSQL_BIN_LOG::COND_relay_log_updated NONE
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_binlog_background_thread MANY
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_binlog_end_pos MANY
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_index MANY
@@ -81,7 +83,10 @@ where event_name like "%MYSQL_RELAY_LOG%"
and event_name not like "%MYSQL_RELAY_LOG::update_cond"
order by event_name;
EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
+wait/synch/cond/sql/MYSQL_RELAY_LOG::COND_bin_log_updated 0 0 0 0 0
wait/synch/cond/sql/MYSQL_RELAY_LOG::COND_queue_busy 0 0 0 0 0
+wait/synch/cond/sql/MYSQL_RELAY_LOG::COND_relay_log_updated 0 0 0 0 0
+wait/synch/mutex/sql/MYSQL_RELAY_LOG::LOCK_binlog_end_pos 0 0 0 0 0
wait/synch/mutex/sql/MYSQL_RELAY_LOG::LOCK_index 0 0 0 0 0
connection slave;
"============ Performance schema on slave ============"
@@ -142,7 +147,9 @@ where event_name like "%MYSQL_BIN_LOG%"
and event_name not like "%MYSQL_BIN_LOG::COND_xid_list"
order by event_name;
EVENT_NAME COUNT_STAR
+wait/synch/cond/sql/MYSQL_BIN_LOG::COND_bin_log_updated NONE
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_queue_busy NONE
+wait/synch/cond/sql/MYSQL_BIN_LOG::COND_relay_log_updated NONE
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_binlog_background_thread MANY
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_binlog_end_pos MANY
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_index MANY
@@ -184,6 +191,9 @@ where event_name like "%MYSQL_RELAY_LOG%"
and event_name not like "%MYSQL_RELAY_LOG::update_cond"
order by event_name;
EVENT_NAME COUNT_STAR
+wait/synch/cond/sql/MYSQL_RELAY_LOG::COND_bin_log_updated NONE
wait/synch/cond/sql/MYSQL_RELAY_LOG::COND_queue_busy NONE
+wait/synch/cond/sql/MYSQL_RELAY_LOG::COND_relay_log_updated MANY
+wait/synch/mutex/sql/MYSQL_RELAY_LOG::LOCK_binlog_end_pos NONE
wait/synch/mutex/sql/MYSQL_RELAY_LOG::LOCK_index MANY
include/stop_slave.inc
diff --git a/mysql-test/suite/perfschema/r/threads_innodb,xtradb.rdiff-disabled b/mysql-test/suite/perfschema/r/threads_innodb,xtradb.rdiff-disabled
deleted file mode 100644
index bfa17407049..00000000000
--- a/mysql-test/suite/perfschema/r/threads_innodb,xtradb.rdiff-disabled
+++ /dev/null
@@ -1,10 +0,0 @@
---- suite/perfschema/r/threads_innodb.result 2013-12-20 20:19:06.000000000 +0100
-+++ suite/perfschema/r/threads_innodb.reject 2014-05-06 13:08:05.000000000 +0200
-@@ -6,6 +6,7 @@
- GROUP BY name;
- name type processlist_user processlist_host processlist_db processlist_command processlist_time processlist_state processlist_info parent_thread_id role instrumented
- thread/innodb/io_handler_thread BACKGROUND NULL NULL NULL NULL NULL NULL NULL NULL NULL YES
-+thread/innodb/lru_manager_thread BACKGROUND NULL NULL NULL NULL NULL NULL NULL NULL NULL YES
- thread/innodb/page_cleaner_thread BACKGROUND NULL NULL NULL NULL NULL NULL NULL NULL NULL YES
- thread/innodb/srv_error_monitor_thread BACKGROUND NULL NULL NULL NULL NULL NULL NULL NULL NULL YES
- thread/innodb/srv_lock_timeout_thread BACKGROUND NULL NULL NULL NULL NULL NULL NULL NULL NULL YES
diff --git a/mysql-test/suite/perfschema/r/threads_mysql.result b/mysql-test/suite/perfschema/r/threads_mysql.result
index 9f9c46fe6a6..31f91fc6464 100644
--- a/mysql-test/suite/perfschema/r/threads_mysql.result
+++ b/mysql-test/suite/perfschema/r/threads_mysql.result
@@ -11,7 +11,7 @@ name thread/sql/main
type BACKGROUND
processlist_user NULL
processlist_host NULL
-processlist_db NULL
+processlist_db mysql
processlist_command NULL
processlist_info NULL
unified_parent_thread_id NULL
@@ -99,7 +99,7 @@ name thread/sql/event_worker
type FOREGROUND
processlist_user root
processlist_host localhost
-processlist_db NULL
+processlist_db test
processlist_command Sleep
processlist_info SELECT SLEEP(3)
unified_parent_thread_id unified parent_thread_id
diff --git a/mysql-test/suite/perfschema/t/dml_handler.test b/mysql-test/suite/perfschema/t/dml_handler.test
index db74c85350a..f12cc82f22f 100644
--- a/mysql-test/suite/perfschema/t/dml_handler.test
+++ b/mysql-test/suite/perfschema/t/dml_handler.test
@@ -18,7 +18,8 @@
CREATE TEMPORARY TABLE table_list (id INT AUTO_INCREMENT, PRIMARY KEY (id)) AS
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
- WHERE TABLE_SCHEMA='performance_schema';
+ WHERE TABLE_SCHEMA='performance_schema'
+ ORDER BY TABLE_NAME;
SELECT COUNT(*) FROM table_list INTO @table_count;
diff --git a/mysql-test/suite/perfschema/t/information_schema.test b/mysql-test/suite/perfschema/t/information_schema.test
index 24325710174..0152ef21905 100644
--- a/mysql-test/suite/perfschema/t/information_schema.test
+++ b/mysql-test/suite/perfschema/t/information_schema.test
@@ -11,42 +11,52 @@
select TABLE_SCHEMA, lower(TABLE_NAME), TABLE_CATALOG
from information_schema.tables
- where TABLE_SCHEMA='performance_schema';
+ where TABLE_SCHEMA='performance_schema'
+ order by table_name;
select lower(TABLE_NAME), TABLE_TYPE, ENGINE
from information_schema.tables
- where TABLE_SCHEMA='performance_schema';
+ where TABLE_SCHEMA='performance_schema'
+ order by table_name;
select lower(TABLE_NAME), VERSION, ROW_FORMAT
from information_schema.tables
- where TABLE_SCHEMA='performance_schema';
+ where TABLE_SCHEMA='performance_schema'
+ order by table_name;
select lower(TABLE_NAME), TABLE_ROWS, AVG_ROW_LENGTH
from information_schema.tables
- where TABLE_SCHEMA='performance_schema';
+ where TABLE_SCHEMA='performance_schema'
+ order by table_name;
select lower(TABLE_NAME), DATA_LENGTH, MAX_DATA_LENGTH
from information_schema.tables
- where TABLE_SCHEMA='performance_schema';
+ where TABLE_SCHEMA='performance_schema'
+ order by table_name;
select lower(TABLE_NAME), INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT
from information_schema.tables
- where TABLE_SCHEMA='performance_schema';
+ where TABLE_SCHEMA='performance_schema'
+ order by table_name;
select lower(TABLE_NAME), CREATE_TIME, UPDATE_TIME, CHECK_TIME
from information_schema.tables
- where TABLE_SCHEMA='performance_schema';
+ where TABLE_SCHEMA='performance_schema'
+ order by table_name;
select lower(TABLE_NAME), TABLE_COLLATION, CHECKSUM
from information_schema.tables
- where TABLE_SCHEMA='performance_schema';
+ where TABLE_SCHEMA='performance_schema'
+ order by table_name;
# TABLESPACE_NAME does not exist in 5.4
# select lower(TABLE_NAME), CREATE_OPTIONS, TABLESPACE_NAME
# from information_schema.tables
-# where TABLE_SCHEMA='performance_schema';
+# where TABLE_SCHEMA='performance_schema'
+# order by table_name;
select lower(TABLE_NAME), TABLE_COMMENT
from information_schema.tables
- where TABLE_SCHEMA='performance_schema';
+ where TABLE_SCHEMA='performance_schema'
+ order by table_name;
diff --git a/mysql-test/suite/perfschema/t/ortho_iter.test b/mysql-test/suite/perfschema/t/ortho_iter.test
index 0a90831ae70..f7e68538906 100644
--- a/mysql-test/suite/perfschema/t/ortho_iter.test
+++ b/mysql-test/suite/perfschema/t/ortho_iter.test
@@ -35,7 +35,8 @@ begin
declare pfs_cursor CURSOR FOR
select table_name from information_schema.tables
where table_schema= 'performance_schema'
- and table_name like "events_%_by_event_name%";
+ and table_name like "events_%_by_event_name%"
+ order by table_name;
declare continue handler for sqlstate '02000'
set done = 1;
diff --git a/mysql-test/suite/plugins/r/qc_info.result b/mysql-test/suite/plugins/r/qc_info.result
index f9192d1dfec..b9ed48b6598 100644
--- a/mysql-test/suite/plugins/r/qc_info.result
+++ b/mysql-test/suite/plugins/r/qc_info.result
@@ -26,15 +26,29 @@ set time_zone=@new_time_zone,default_week_format=4,character_set_client='binary'
select * from t1;
set time_zone= @time_zone, default_week_format= @default_week_format, character_set_client= @character_set_client,character_set_results= @character_set_results, sql_mode= @sql_mode, div_precision_increment= @div_precision_increment, lc_time_names= @lc_time_names, autocommit= @autocommit, group_concat_max_len= @group_concat_max_len, max_sort_length= @max_sort_length;
select * from information_schema.query_cache_info;
-STATEMENT_SCHEMA STATEMENT_TEXT RESULT_BLOCKS_COUNT RESULT_BLOCKS_SIZE RESULT_BLOCKS_SIZE_USED LIMIT MAX_SORT_LENGTH GROUP_CONCAT_MAX_LENGTH CHARACTER_SET_CLIENT CHARACTER_SET_RESULT COLLATION TIMEZONE DEFAULT_WEEK_FORMAT DIV_PRECISION_INCREMENT SQL_MODE LC_TIME_NAMES CLIENT_LONG_FLAG CLIENT_PROTOCOL_41 PROTOCOL_TYPE MORE_RESULTS_EXISTS IN_TRANS AUTOCOMMIT PACKET_NUMBER
-test select * from t1 1 512 # -1 1011 513 binary utf32 utf32_bin Europe/Moscow 4 7 STRICT_ALL_TABLES ar_SD 1 1 # 0 0 0 #
-test select * from t1 1 512 # -1 1024 1048576 latin1 latin1 latin1_swedish_ci SYSTEM 0 4 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION en_US 1 1 # 0 0 1 #
+STATEMENT_SCHEMA STATEMENT_TEXT RESULT_BLOCKS_COUNT RESULT_BLOCKS_SIZE RESULT_BLOCKS_SIZE_USED LIMIT MAX_SORT_LENGTH GROUP_CONCAT_MAX_LENGTH CHARACTER_SET_CLIENT CHARACTER_SET_RESULT COLLATION TIMEZONE DEFAULT_WEEK_FORMAT DIV_PRECISION_INCREMENT SQL_MODE LC_TIME_NAMES CLIENT_LONG_FLAG CLIENT_PROTOCOL_41 PROTOCOL_TYPE MORE_RESULTS_EXISTS IN_TRANS AUTOCOMMIT PACKET_NUMBER HITS
+test select * from t1 1 512 # -1 1011 513 binary utf32 utf32_bin Europe/Moscow 4 7 STRICT_ALL_TABLES ar_SD 1 1 # 0 0 0 # 0
+test select * from t1 1 512 # -1 1024 1048576 latin1 latin1 latin1_swedish_ci SYSTEM 0 4 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION en_US 1 1 # 0 0 1 # 0
+reset query cache;
+select * from t1;
+a
+1
+2
+3
+select * from t1;
+a
+1
+2
+3
+select hits, statement_text from information_schema.query_cache_info;
+hits statement_text
+1 select * from t1
drop table t1;
select statement_schema, statement_text, result_blocks_count, result_blocks_size from information_schema.query_cache_info;
statement_schema statement_text result_blocks_count result_blocks_size
set global query_cache_size = 0;
select * from information_schema.query_cache_info;
-STATEMENT_SCHEMA STATEMENT_TEXT RESULT_BLOCKS_COUNT RESULT_BLOCKS_SIZE RESULT_BLOCKS_SIZE_USED LIMIT MAX_SORT_LENGTH GROUP_CONCAT_MAX_LENGTH CHARACTER_SET_CLIENT CHARACTER_SET_RESULT COLLATION TIMEZONE DEFAULT_WEEK_FORMAT DIV_PRECISION_INCREMENT SQL_MODE LC_TIME_NAMES CLIENT_LONG_FLAG CLIENT_PROTOCOL_41 PROTOCOL_TYPE MORE_RESULTS_EXISTS IN_TRANS AUTOCOMMIT PACKET_NUMBER
+STATEMENT_SCHEMA STATEMENT_TEXT RESULT_BLOCKS_COUNT RESULT_BLOCKS_SIZE RESULT_BLOCKS_SIZE_USED LIMIT MAX_SORT_LENGTH GROUP_CONCAT_MAX_LENGTH CHARACTER_SET_CLIENT CHARACTER_SET_RESULT COLLATION TIMEZONE DEFAULT_WEEK_FORMAT DIV_PRECISION_INCREMENT SQL_MODE LC_TIME_NAMES CLIENT_LONG_FLAG CLIENT_PROTOCOL_41 PROTOCOL_TYPE MORE_RESULTS_EXISTS IN_TRANS AUTOCOMMIT PACKET_NUMBER HITS
set global query_cache_size= default;
set global query_cache_type=default;
show query_cache_info;
diff --git a/mysql-test/suite/plugins/r/qc_info_priv.result b/mysql-test/suite/plugins/r/qc_info_priv.result
index 93fee5837f6..9863d7f98a8 100644
--- a/mysql-test/suite/plugins/r/qc_info_priv.result
+++ b/mysql-test/suite/plugins/r/qc_info_priv.result
@@ -26,9 +26,9 @@ set time_zone=@new_time_zone,default_week_format=4,character_set_client='binary'
select * from t1;
set time_zone= @time_zone, default_week_format= @default_week_format, character_set_client= @character_set_client,character_set_results= @character_set_results, sql_mode= @sql_mode, div_precision_increment= @div_precision_increment, lc_time_names= @lc_time_names, autocommit= @autocommit, group_concat_max_len= @group_concat_max_len, max_sort_length= @max_sort_length;
select * from information_schema.query_cache_info;
-STATEMENT_SCHEMA STATEMENT_TEXT RESULT_BLOCKS_COUNT RESULT_BLOCKS_SIZE RESULT_BLOCKS_SIZE_USED LIMIT MAX_SORT_LENGTH GROUP_CONCAT_MAX_LENGTH CHARACTER_SET_CLIENT CHARACTER_SET_RESULT COLLATION TIMEZONE DEFAULT_WEEK_FORMAT DIV_PRECISION_INCREMENT SQL_MODE LC_TIME_NAMES CLIENT_LONG_FLAG CLIENT_PROTOCOL_41 PROTOCOL_TYPE MORE_RESULTS_EXISTS IN_TRANS AUTOCOMMIT PACKET_NUMBER
-test select * from t1 1 512 # -1 1011 513 binary utf32 utf32_bin Europe/Moscow 4 7 STRICT_ALL_TABLES ar_SD 1 1 # 0 0 0 #
-test select * from t1 1 512 # -1 1024 1048576 latin1 latin1 latin1_swedish_ci SYSTEM 0 4 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION en_US 1 1 # 0 0 1 #
+STATEMENT_SCHEMA STATEMENT_TEXT RESULT_BLOCKS_COUNT RESULT_BLOCKS_SIZE RESULT_BLOCKS_SIZE_USED LIMIT MAX_SORT_LENGTH GROUP_CONCAT_MAX_LENGTH CHARACTER_SET_CLIENT CHARACTER_SET_RESULT COLLATION TIMEZONE DEFAULT_WEEK_FORMAT DIV_PRECISION_INCREMENT SQL_MODE LC_TIME_NAMES CLIENT_LONG_FLAG CLIENT_PROTOCOL_41 PROTOCOL_TYPE MORE_RESULTS_EXISTS IN_TRANS AUTOCOMMIT PACKET_NUMBER HITS
+test select * from t1 1 512 # -1 1011 513 binary utf32 utf32_bin Europe/Moscow 4 7 STRICT_ALL_TABLES ar_SD 1 1 # 0 0 0 # 0
+test select * from t1 1 512 # -1 1024 1048576 latin1 latin1 latin1_swedish_ci SYSTEM 0 4 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION en_US 1 1 # 0 0 1 # 0
create user mysqltest;
connect conn1,localhost,mysqltest,,;
connection conn1;
diff --git a/mysql-test/suite/plugins/t/qc_info.test b/mysql-test/suite/plugins/t/qc_info.test
index ef759ce8eb4..ba642a817e7 100644
--- a/mysql-test/suite/plugins/t/qc_info.test
+++ b/mysql-test/suite/plugins/t/qc_info.test
@@ -1,5 +1,11 @@
--source qc_info_init.inc
+# test that hits are correctly incremented
+reset query cache;
+select * from t1;
+select * from t1;
+select hits, statement_text from information_schema.query_cache_info;
+
drop table t1;
# the query was invalidated
select statement_schema, statement_text, result_blocks_count, result_blocks_size from information_schema.query_cache_info;
diff --git a/mysql-test/suite/roles/create_and_drop_role_invalid_user_table.result b/mysql-test/suite/roles/create_and_drop_role_invalid_user_table.result
index 1a269d72eb7..afe00ed7729 100644
--- a/mysql-test/suite/roles/create_and_drop_role_invalid_user_table.result
+++ b/mysql-test/suite/roles/create_and_drop_role_invalid_user_table.result
@@ -5,7 +5,7 @@ alter table user drop column default_role;
alter table user drop column max_statement_time;
flush privileges;
create role test_role;
-ERROR HY000: Column count of mysql.user is wrong. Expected 44, found 43. Created with MariaDB MYSQL_VERSION_ID, now running MYSQL_VERSION_ID. Please use mysql_upgrade to fix this error
+ERROR HY000: Column count of mysql.user is wrong. Expected 45, found 44. Created with MariaDB MYSQL_VERSION_ID, now running MYSQL_VERSION_ID. Please use mysql_upgrade to fix this error
drop role test_role;
ERROR HY000: Operation DROP ROLE failed for 'test_role'
alter table user add column is_role enum('N', 'Y') default 'N' not null
@@ -15,7 +15,7 @@ create role test_role;
create user test_user@localhost;
grant test_role to test_user@localhost;
set default role test_role for root@localhost;
-ERROR HY000: Column count of mysql.user is wrong. Expected 45, found 44. Created with MariaDB MYSQL_VERSION_ID, now running MYSQL_VERSION_ID. Please use mysql_upgrade to fix this error
+ERROR HY000: Column count of mysql.user is wrong. Expected 46, found 45. Created with MariaDB MYSQL_VERSION_ID, now running MYSQL_VERSION_ID. Please use mysql_upgrade to fix this error
drop role test_role;
drop user test_user@localhost;
alter table user add column default_role char(80) binary default '' not null
diff --git a/mysql-test/suite/roles/set_role-recursive.result b/mysql-test/suite/roles/set_role-recursive.result
index 53b28a25261..2b34c3eeebe 100644
--- a/mysql-test/suite/roles/set_role-recursive.result
+++ b/mysql-test/suite/roles/set_role-recursive.result
@@ -16,11 +16,11 @@ Host User Role Admin_option
test_role1 test_role2 N
grant select on *.* to test_role2;
select * from mysql.user where user like 'test_role1';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
- test_role1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N Y 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+ test_role1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N Y 0.000000
select * from mysql.user where user like 'test_role2';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
- test_role2 Y N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N Y 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+ test_role2 Y N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N Y 0.000000
select * from mysql.roles_mapping;
ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping'
show grants;
diff --git a/mysql-test/suite/roles/set_role-simple.result b/mysql-test/suite/roles/set_role-simple.result
index 29b176776e7..9af698c7b09 100644
--- a/mysql-test/suite/roles/set_role-simple.result
+++ b/mysql-test/suite/roles/set_role-simple.result
@@ -11,8 +11,8 @@ localhost root test_role1 Y
localhost test_user test_role1 N
grant select on *.* to test_role1;
select * from mysql.user where user='test_role1';
-Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
- test_role1 Y N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N Y 0.000000
+Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv Delete_history_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string password_expired is_role default_role max_statement_time
+ test_role1 Y N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 N Y 0.000000
select * from mysql.roles_mapping;
ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping'
show grants;
diff --git a/mysql-test/suite/roles/show_create_database-10463.result b/mysql-test/suite/roles/show_create_database-10463.result
index a9b376a891f..7bebc954840 100644
--- a/mysql-test/suite/roles/show_create_database-10463.result
+++ b/mysql-test/suite/roles/show_create_database-10463.result
@@ -16,7 +16,7 @@ test
show create database db;
ERROR 42000: Access denied for user 'beep'@'localhost' to database 'db'
select table_schema, table_name from information_schema.tables
-where table_schema = 'db';
+where table_schema = 'db' order by table_name;
table_schema table_name
set role r1;
show databases;
@@ -28,7 +28,7 @@ show create database db;
Database Create Database
db CREATE DATABASE `db` /*!40100 DEFAULT CHARACTER SET latin1 */
select table_schema, table_name from information_schema.tables
-where table_schema = 'db';
+where table_schema = 'db' order by table_name;
table_schema table_name
db t1
db t2
@@ -45,7 +45,7 @@ test
show create database db;
ERROR 42000: Access denied for user 'beep2'@'localhost' to database 'db'
select table_schema, table_name from information_schema.tables
-where table_schema = 'db';
+where table_schema = 'db' order by table_name;
table_schema table_name
set role r2;
show databases;
@@ -57,7 +57,7 @@ show create database db;
Database Create Database
db CREATE DATABASE `db` /*!40100 DEFAULT CHARACTER SET latin1 */
select table_schema, table_name from information_schema.tables
-where table_schema = 'db';
+where table_schema = 'db' order by table_name;
table_schema table_name
db t1
db t2
diff --git a/mysql-test/suite/roles/show_create_database-10463.test b/mysql-test/suite/roles/show_create_database-10463.test
index 2d921629c10..6278cc71c02 100644
--- a/mysql-test/suite/roles/show_create_database-10463.test
+++ b/mysql-test/suite/roles/show_create_database-10463.test
@@ -16,13 +16,13 @@ show databases;
--error ER_DBACCESS_DENIED_ERROR
show create database db;
select table_schema, table_name from information_schema.tables
-where table_schema = 'db';
+where table_schema = 'db' order by table_name;
set role r1;
show databases;
show create database db;
select table_schema, table_name from information_schema.tables
-where table_schema = 'db';
+where table_schema = 'db' order by table_name;
connection default;
@@ -36,14 +36,14 @@ show databases;
--error ER_DBACCESS_DENIED_ERROR
show create database db;
select table_schema, table_name from information_schema.tables
-where table_schema = 'db';
+where table_schema = 'db' order by table_name;
set role r2;
show databases;
show create database db;
select table_schema, table_name from information_schema.tables
-where table_schema = 'db';
+where table_schema = 'db' order by table_name;
connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_alter_instant.result b/mysql-test/suite/rpl/r/rpl_alter_instant.result
new file mode 100644
index 00000000000..35380fdeddf
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_alter_instant.result
@@ -0,0 +1,66 @@
+include/master-slave.inc
+[connection master]
+use test;
+create table t1 (id int primary key, c1 int default 10, c2 varchar(20) default 'holiday') engine = innodb;
+insert into t1 values(1, 12345, 'abcde'), (2, default, default), (3, 23456, 'xyzab');
+set time_zone='+03:00';
+set timestamp = 1;
+alter table t1 add column d1 timestamp not null default current_timestamp;
+select * from t1;
+id c1 c2 d1
+1 12345 abcde 1970-01-01 03:00:01
+2 10 holiday 1970-01-01 03:00:01
+3 23456 xyzab 1970-01-01 03:00:01
+connection slave;
+connection slave;
+set time_zone='+03:00';
+select * from t1;
+id c1 c2 d1
+1 12345 abcde 1970-01-01 03:00:01
+2 10 holiday 1970-01-01 03:00:01
+3 23456 xyzab 1970-01-01 03:00:01
+connection master;
+alter table t1 add column d2 timestamp not null default current_timestamp, ALGORITHM=copy;
+connection slave;
+connection slave;
+select * from t1;
+id c1 c2 d1 d2
+1 12345 abcde 1970-01-01 03:00:01 1970-01-01 03:00:01
+2 10 holiday 1970-01-01 03:00:01 1970-01-01 03:00:01
+3 23456 xyzab 1970-01-01 03:00:01 1970-01-01 03:00:01
+connection master;
+drop table t1;
+create table t4 (id int primary key, c2 int);
+insert into t4 values(1,1),(2,2),(3,3);
+set timestamp = 1000;
+alter table t4 add column (c3 datetime default current_timestamp(), c4 timestamp not null default current_timestamp());
+select * from t4;
+id c2 c3 c4
+1 1 1970-01-01 03:16:40 1970-01-01 03:16:40
+2 2 1970-01-01 03:16:40 1970-01-01 03:16:40
+3 3 1970-01-01 03:16:40 1970-01-01 03:16:40
+alter table t4 add column c5 time not null default current_timestamp();
+Warnings:
+Note 1265 Data truncated for column 'c5' at row 1
+Note 1265 Data truncated for column 'c5' at row 2
+Note 1265 Data truncated for column 'c5' at row 3
+alter table t4 add column c6 date not null default current_timestamp();
+Warnings:
+Note 1265 Data truncated for column 'c6' at row 1
+Note 1265 Data truncated for column 'c6' at row 2
+Note 1265 Data truncated for column 'c6' at row 3
+select * from t4;
+id c2 c3 c4 c5 c6
+1 1 1970-01-01 03:16:40 1970-01-01 03:16:40 03:16:40 1970-01-01
+2 2 1970-01-01 03:16:40 1970-01-01 03:16:40 03:16:40 1970-01-01
+3 3 1970-01-01 03:16:40 1970-01-01 03:16:40 03:16:40 1970-01-01
+connection slave;
+connection slave;
+select * from t4;
+id c2 c3 c4 c5 c6
+1 1 1970-01-01 03:16:40 1970-01-01 03:16:40 03:16:40 1970-01-01
+2 2 1970-01-01 03:16:40 1970-01-01 03:16:40 03:16:40 1970-01-01
+3 3 1970-01-01 03:16:40 1970-01-01 03:16:40 03:16:40 1970-01-01
+connection master;
+drop table t4;
+include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result b/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
index 1c9611ba8f0..bb8c45ae4eb 100644
--- a/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
@@ -39,7 +39,9 @@ connection slave;
BEGIN;
SELECT * FROM t1 FOR UPDATE;
a
+connection slave1;
START SLAVE;
+connection slave;
SELECT COUNT(*) FROM t2;
COUNT(*)
0
@@ -61,8 +63,10 @@ BEGIN;
SELECT * FROM t1 FOR UPDATE;
a
1
+connection slave1;
START SLAVE;
include/wait_for_slave_sql_error.inc [errno=1205]
+connection slave;
SELECT COUNT(*) FROM t2;
COUNT(*)
0
@@ -92,8 +96,10 @@ SELECT * FROM t1 FOR UPDATE;
a
1
1
+connection slave1;
START SLAVE;
include/wait_for_slave_sql_error.inc [errno=1205]
+connection slave;
SELECT COUNT(*) FROM t2;
COUNT(*)
0
diff --git a/mysql-test/suite/rpl/r/rpl_events.result b/mysql-test/suite/rpl/r/rpl_events.result
index f7f802a57e6..4b2226109d9 100644
--- a/mysql-test/suite/rpl/r/rpl_events.result
+++ b/mysql-test/suite/rpl/r/rpl_events.result
@@ -2,17 +2,15 @@ include/master-slave.inc
[connection master]
SET @old_event_scheduler = @@global.event_scheduler;
set global event_scheduler=1;
-DROP EVENT IF EXISTS test.justonce;
-drop table if exists t1,t2;
CREATE TABLE `t1` (
`id` INT(10) UNSIGNED NOT NULL,
`c` VARCHAR(50) NOT NULL,
`ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+) DEFAULT CHARSET=utf8;
INSERT INTO t1 (id, c) VALUES (1, 'manually');
"Creating event test.justonce on the master"
-CREATE EVENT test.justonce ON SCHEDULE EVERY 2 SECOND DO
+CREATE EVENT test.justonce ON SCHEDULE EVERY 2 SECOND DO
INSERT IGNORE INTO t1 (id, c) VALUES (2, 'from justonce');
"Checking event is active on master"
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce';
@@ -31,7 +29,7 @@ db name status originator
test justonce SLAVESIDE_DISABLED 1
"Dropping event test.slave_once on the slave"
DROP EVENT IF EXISTS test.slave_once;
-CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
+CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
INSERT IGNORE INTO t1(id, c) VALUES (3, 'from slave_once');
"Checking event status on the slave for originator value = slave's server_id"
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_once';
@@ -43,7 +41,7 @@ connection master;
"Dropping event test.justonce on the master"
DROP EVENT IF EXISTS test.justonce;
"Creating event test.er on the master"
-CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
+CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er');
"Checking event status on the master"
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
@@ -56,7 +54,7 @@ db name status originator body
test er SLAVESIDE_DISABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er')
connection master;
"Altering event test.er on the master"
-ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
+ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er');
"Checking event status on the master"
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
@@ -78,7 +76,7 @@ connection slave;
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
db name status originator
"Creating event test.slave_terminate on the slave"
-CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
+CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
INSERT IGNORE INTO t1(id, c) VALUES (6, 'from slave_terminate');
"Checking event status on the slave"
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
@@ -87,7 +85,7 @@ test slave_terminate ENABLED 2
"Dropping event test.slave_terminate on the slave"
DROP EVENT test.slave_terminate;
"Creating event test.slave_terminate with DISABLE ON SLAVE on the slave"
-CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND DISABLE ON SLAVE DO
+CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND DISABLE ON SLAVE DO
INSERT IGNORE INTO t1(c) VALUES (7, 'from slave_terminate');
"Checking event status on the slave"
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
@@ -100,7 +98,6 @@ connection master;
DROP TABLE t1;
connection slave;
connection master;
-connection master;
CREATE TABLE t28953 (a INT);
CREATE EVENT event1 ON SCHEDULE EVERY 1 YEAR
DO BEGIN
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_crash.result b/mysql-test/suite/rpl/r/rpl_gtid_crash.result
index 7b6e95bf718..ed2a2b287e9 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_crash.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_crash.result
@@ -88,16 +88,16 @@ include/save_master_gtid.inc
connection server_2;
include/sync_with_master_gtid.inc
include/stop_slave.inc
-SET GLOBAL debug_dbug="+d,crash_commit_before";
START SLAVE;
+SET GLOBAL debug_dbug="+d,crash_commit_before";
connection server_1;
INSERT INTO t1 VALUES (5);
include/save_master_gtid.inc
connection server_2;
include/sync_with_master_gtid.inc
include/stop_slave.inc
-SET GLOBAL debug_dbug="+d,crash_commit_after";
START SLAVE;
+SET GLOBAL debug_dbug="+d,crash_commit_after";
connection server_1;
INSERT INTO t1 VALUES (6);
include/save_master_gtid.inc
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result b/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result
index 47ba3c956b1..54156685806 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result
@@ -12,21 +12,21 @@ connection master;
INSERT INTO t1 VALUES (1);
connection slave;
CALL mtr.add_suppression("Slave: Failed to open mysql.gtid_slave_pos");
-include/wait_for_slave_sql_error.inc [errno=1942]
+include/wait_for_slave_sql_error.inc [errno=1944]
include/stop_slave.inc
ALTER TABLE mysql.gtid_slave_pos CHANGE seq_no seq_no BIGINT UNSIGNED NOT NULL;
ALTER TABLE mysql.gtid_slave_pos DROP PRIMARY KEY;
ALTER TABLE mysql.gtid_slave_pos ADD PRIMARY KEY (sub_id, domain_id);
START SLAVE;
-include/wait_for_slave_sql_error.inc [errno=1942]
+include/wait_for_slave_sql_error.inc [errno=1944]
include/stop_slave.inc
ALTER TABLE mysql.gtid_slave_pos DROP PRIMARY KEY;
START SLAVE;
-include/wait_for_slave_sql_error.inc [errno=1942]
+include/wait_for_slave_sql_error.inc [errno=1944]
include/stop_slave.inc
ALTER TABLE mysql.gtid_slave_pos ADD PRIMARY KEY (sub_id);
START SLAVE;
-include/wait_for_slave_sql_error.inc [errno=1942]
+include/wait_for_slave_sql_error.inc [errno=1944]
include/stop_slave.inc
ALTER TABLE mysql.gtid_slave_pos DROP PRIMARY KEY;
ALTER TABLE mysql.gtid_slave_pos ADD PRIMARY KEY (domain_id, sub_id);
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_ignored.result b/mysql-test/suite/rpl/r/rpl_gtid_ignored.result
index 8d5b9be2ca0..ac608c3c2a3 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_ignored.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_ignored.result
@@ -79,6 +79,7 @@ a
9
connection server_1;
DROP TABLE t1;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
SET GLOBAL gtid_strict_mode= @old_gtid_strict_mode;
SET debug_sync = "reset";
connection server_2;
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_mdev4484.result b/mysql-test/suite/rpl/r/rpl_gtid_mdev4484.result
index c49207b99fa..aaeb0c8f119 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_mdev4484.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_mdev4484.result
@@ -1,5 +1,12 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+SET sql_log_bin=0;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
+SET sql_log_bin=1;
+include/start_slave.inc
+connection master;
CREATE TABLE t1 (i int) ENGINE=InnoDB;
connection slave;
*** MDEV-4484, incorrect error handling when entries in gtid_slave_pos not found. ***
@@ -13,7 +20,6 @@ SET @old_dbug= @@GLOBAL.debug_dbug;
SET GLOBAL debug_dbug="+d,gtid_slave_pos_simulate_failed_delete";
SET sql_log_bin= 0;
CALL mtr.add_suppression("Can't find file");
-ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
SET sql_log_bin= 1;
include/start_slave.inc
connection master;
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result b/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result
index 3f3b5e4344a..ff845794c22 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result
@@ -194,7 +194,7 @@ domain_id COUNT(*)
*** MDEV-4650: show variables; ERROR 1946 (HY000): Failed to load replication slave GTID position ***
connection server_2;
SET sql_log_bin=0;
-RENAME TABLE mysql.gtid_slave_pos TO mysql.gtid_slave_pos_old;
+RENAME TABLE mysql.gtid_slave_pos TO mysql.old_gtid_slave_pos;
SET sql_log_bin=1;
SHOW VARIABLES;
SHOW VARIABLES LIKE 'gtid_slave_pos';
@@ -207,7 +207,7 @@ Level Code Message
Error 1146 Table 'mysql.gtid_slave_pos' doesn't exist
Error 1946 Failed to load replication slave GTID position from table mysql.gtid_slave_pos
SET sql_log_bin=0;
-RENAME TABLE mysql.gtid_slave_pos_old TO mysql.gtid_slave_pos;
+RENAME TABLE mysql.old_gtid_slave_pos TO mysql.gtid_slave_pos;
CALL mtr.add_suppression("Failed to load slave replication state from table mysql.gtid_slave_pos");
SET sql_log_bin=1;
SHOW VARIABLES LIKE 'gtid_slave_pos';
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_until.result b/mysql-test/suite/rpl/r/rpl_gtid_until.result
index 886f6cfd2cb..2295aad34ac 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_until.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_until.result
@@ -10,6 +10,8 @@ SET s= SUBSTR(s FROM 1 FOR LOCATE(",", s) - 1);
RETURN s;
END|
connection server_2;
+include/stop_slave.inc
+include/start_slave.inc
START SLAVE UNTIL master_gtid_pos = "";
ERROR HY000: Slave is already running
include/stop_slave_io.inc
diff --git a/mysql-test/suite/rpl/r/rpl_mdev10863.result b/mysql-test/suite/rpl/r/rpl_mdev10863.result
index 158d4a921b7..6accd1ee830 100644
--- a/mysql-test/suite/rpl/r/rpl_mdev10863.result
+++ b/mysql-test/suite/rpl/r/rpl_mdev10863.result
@@ -46,5 +46,6 @@ SET GLOBAL slave_parallel_threads=@old_parallel_threads;
SET GLOBAL max_relay_log_size= @old_max_relay;
include/start_slave.inc
connection server_1;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
DROP TABLE t1;
include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_mdev12179.result b/mysql-test/suite/rpl/r/rpl_mdev12179.result
new file mode 100644
index 00000000000..40059375356
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_mdev12179.result
@@ -0,0 +1,265 @@
+include/rpl_init.inc [topology=1->2]
+connection server_2;
+SET GLOBAL gtid_pos_auto_engines="innodb";
+ERROR HY000: This operation cannot be performed as you have a running slave ''; run STOP SLAVE '' first
+include/stop_slave.inc
+CHANGE MASTER TO master_use_gtid=slave_pos;
+SELECT @@gtid_pos_auto_engines;
+@@gtid_pos_auto_engines
+
+SELECT @@SESSION.gtid_pos_auto_engines;
+ERROR HY000: Variable 'gtid_pos_auto_engines' is a GLOBAL variable
+SET GLOBAL gtid_pos_auto_engines= NULL;
+ERROR 42000: Variable 'gtid_pos_auto_engines' can't be set to the value of 'NULL'
+SET GLOBAL gtid_pos_auto_engines="innodb";
+SELECT @@gtid_pos_auto_engines;
+@@gtid_pos_auto_engines
+InnoDB
+SET GLOBAL gtid_pos_auto_engines="myisam,innodb";
+SELECT @@gtid_pos_auto_engines;
+@@gtid_pos_auto_engines
+MyISAM,InnoDB
+SET GLOBAL gtid_pos_auto_engines="innodb,myisam";
+SELECT @@gtid_pos_auto_engines;
+@@gtid_pos_auto_engines
+InnoDB,MyISAM
+SET GLOBAL gtid_pos_auto_engines="innodb,innodb,myisam,innodb,myisam,myisam,innodb";
+SELECT @@gtid_pos_auto_engines;
+@@gtid_pos_auto_engines
+InnoDB,MyISAM
+SET GLOBAL gtid_pos_auto_engines=DEFAULT;
+SELECT @@gtid_pos_auto_engines;
+@@gtid_pos_auto_engines
+
+SET GLOBAL gtid_pos_auto_engines="";
+SELECT @@gtid_pos_auto_engines;
+@@gtid_pos_auto_engines
+
+include/start_slave.inc
+connection server_1;
+CREATE TABLE t1 (a INT PRIMARY KEY);
+INSERT INTO t1 VALUES (1);
+SELECT * FROM t1 ORDER BY a;
+a
+1
+connection server_2;
+SELECT * FROM t1 ORDER BY a;
+a
+1
+include/stop_slave.inc
+SET sql_log_bin=0;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
+CREATE TABLE mysql.gtid_slave_pos_innodb LIKE mysql.gtid_slave_pos;
+ALTER TABLE mysql.gtid_slave_pos_innodb ENGINE=InnoDB;
+INSERT INTO mysql.gtid_slave_pos_innodb SELECT * FROM mysql.gtid_slave_pos;
+TRUNCATE mysql.gtid_slave_pos;
+SET sql_log_bin=1;
+connection server_1;
+INSERT INTO t1 VALUES (2);
+INSERT INTO t1 VALUES (3);
+SELECT * FROM t1 ORDER BY a;
+a
+1
+2
+3
+include/save_master_gtid.inc
+*** Restart server with --gtid-pos-auto-engines=innodb,myisam ***
+connection server_2;
+include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+a
+1
+2
+3
+*** Verify no new gtid_slave_pos* tables are created ***
+SELECT table_name, engine FROM information_schema.tables
+WHERE table_schema='mysql' AND table_name LIKE 'gtid_slave_pos%'
+ ORDER BY table_name;
+table_name engine
+gtid_slave_pos MyISAM
+gtid_slave_pos_innodb InnoDB
+SELECT @@gtid_pos_auto_engines;
+@@gtid_pos_auto_engines
+InnoDB,MyISAM
+include/stop_slave.inc
+SET sql_log_bin=0;
+INSERT INTO mysql.gtid_slave_pos_innodb SELECT * FROM mysql.gtid_slave_pos;
+DROP TABLE mysql.gtid_slave_pos;
+RENAME TABLE mysql.gtid_slave_pos_innodb TO mysql.gtid_slave_pos;
+SET sql_log_bin=1;
+connection server_1;
+CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (4);
+INSERT INTO t2 VALUES (1);
+SELECT * FROM t1 ORDER BY a;
+a
+1
+2
+3
+4
+SELECT * FROM t2 ORDER BY a;
+a
+1
+include/save_master_gtid.inc
+*** Restart server with --gtid-pos-auto-engines=myisam,innodb ***
+connection server_2;
+include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+a
+1
+2
+3
+4
+SELECT * FROM t2 ORDER BY a;
+a
+1
+*** Verify that no new gtid_slave_pos* tables are auto-created ***
+SELECT table_name, engine FROM information_schema.tables
+WHERE table_schema='mysql' AND table_name LIKE 'gtid_slave_pos%'
+ ORDER BY table_name;
+table_name engine
+gtid_slave_pos InnoDB
+include/stop_slave.inc
+SET sql_log_bin=0;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
+SET sql_log_bin=1;
+connection server_1;
+INSERT INTO t1 VALUES (5);
+INSERT INTO t2 VALUES (2);
+SELECT * FROM t1 ORDER BY a;
+a
+1
+2
+3
+4
+5
+SELECT * FROM t2 ORDER BY a;
+a
+1
+2
+include/save_master_gtid.inc
+connection server_2;
+include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+a
+1
+2
+3
+4
+5
+SELECT * FROM t2 ORDER BY a;
+a
+1
+2
+*** Verify that mysql.gtid_slave_pos_InnoDB is auto-created ***
+SELECT table_name, engine FROM information_schema.tables
+WHERE table_schema='mysql' AND table_name LIKE 'gtid_slave_pos%'
+ ORDER BY table_name;
+table_name engine
+gtid_slave_pos MyISAM
+gtid_slave_pos_InnoDB InnoDB
+include/stop_slave.inc
+SET sql_log_bin=0;
+INSERT INTO mysql.gtid_slave_pos SELECT * FROM mysql.gtid_slave_pos_InnoDB;
+DROP TABLE mysql.gtid_slave_pos_InnoDB;
+SET sql_log_bin=1;
+connection server_1;
+INSERT INTO t1 VALUES (6);
+INSERT INTO t2 VALUES (3);
+SELECT * FROM t1 ORDER BY a;
+a
+1
+2
+3
+4
+5
+6
+SELECT * FROM t2 ORDER BY a;
+a
+1
+2
+3
+include/save_master_gtid.inc
+*** Restart server without --gtid-pos-auto-engines ***
+connection server_2;
+include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+a
+1
+2
+3
+4
+5
+6
+SELECT * FROM t2 ORDER BY a;
+a
+1
+2
+3
+*** Verify that no mysql.gtid_slave_pos* table is auto-created ***
+SELECT table_name, engine FROM information_schema.tables
+WHERE table_schema='mysql' AND table_name LIKE 'gtid_slave_pos%'
+ ORDER BY table_name;
+table_name engine
+gtid_slave_pos MyISAM
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+domain_id max(seq_no)
+0 11
+include/stop_slave.inc
+SET GLOBAL gtid_pos_auto_engines="innodb";
+include/start_slave.inc
+connection server_1;
+INSERT INTO t1 VALUES (7);
+INSERT INTO t2 VALUES (4);
+SELECT * FROM t1 ORDER BY a;
+a
+1
+2
+3
+4
+5
+6
+7
+SELECT * FROM t2 ORDER BY a;
+a
+1
+2
+3
+4
+include/save_master_gtid.inc
+connection server_2;
+include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+a
+1
+2
+3
+4
+5
+6
+7
+SELECT * FROM t2 ORDER BY a;
+a
+1
+2
+3
+4
+*** Verify that mysql.gtid_slave_pos_InnoDB is auto-created ***
+SELECT table_name, engine FROM information_schema.tables
+WHERE table_schema='mysql' AND table_name LIKE 'gtid_slave_pos%'
+ ORDER BY table_name;
+table_name engine
+gtid_slave_pos MyISAM
+gtid_slave_pos_InnoDB InnoDB
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+domain_id max(seq_no)
+0 13
+include/stop_slave.inc
+SET GLOBAL gtid_pos_auto_engines="";
+SET sql_log_bin=0;
+DROP TABLE mysql.gtid_slave_pos_InnoDB;
+SET sql_log_bin=1;
+include/start_slave.inc
+connection server_1;
+DROP TABLE t1, t2;
+include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync.result b/mysql-test/suite/rpl/r/rpl_semi_sync.result
index 6d574681d73..106efb555d3 100644
--- a/mysql-test/suite/rpl/r/rpl_semi_sync.result
+++ b/mysql-test/suite/rpl/r/rpl_semi_sync.result
@@ -4,6 +4,7 @@ connection master;
call mtr.add_suppression("Timeout waiting for reply of binlog");
call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
+call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
@@ -176,7 +177,7 @@ Variable_name Value
Rpl_semi_sync_master_yes_tx 14
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
-Rpl_semi_sync_master_clients 1
+Rpl_semi_sync_master_clients 0
[ semi-sync replication of these transactions will fail ]
insert into t1 values (500);
[ master status should be OFF ]
@@ -321,7 +322,6 @@ connection slave;
include/stop_slave.inc
reset slave;
connection master;
-kill query _tid;
connection slave;
include/start_slave.inc
connection master;
@@ -353,7 +353,6 @@ include/stop_slave.inc
reset slave;
connection master;
reset master;
-kill query _tid;
set sql_log_bin=0;
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
flush privileges;
@@ -404,7 +403,6 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
Variable_name Value
Rpl_semi_sync_slave_status OFF
connection master;
-kill query _tid;
[ Semi-sync status on master should be ON ]
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync.result b/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync.result
index 927113726fa..c61340f3967 100644
--- a/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync.result
+++ b/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync.result
@@ -5,6 +5,7 @@ connection master;
call mtr.add_suppression("Timeout waiting for reply of binlog");
call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
+call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
@@ -177,7 +178,7 @@ Variable_name Value
Rpl_semi_sync_master_yes_tx 16
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
-Rpl_semi_sync_master_clients 1
+Rpl_semi_sync_master_clients 0
[ semi-sync replication of these transactions will fail ]
insert into t1 values (500);
[ master status should be OFF ]
@@ -322,7 +323,6 @@ connection slave;
include/stop_slave.inc
reset slave;
connection master;
-kill query _tid;
connection slave;
include/start_slave.inc
connection master;
@@ -354,7 +354,6 @@ include/stop_slave.inc
reset slave;
connection master;
reset master;
-kill query _tid;
set sql_log_bin=0;
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
flush privileges;
@@ -405,7 +404,6 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
Variable_name Value
Rpl_semi_sync_slave_status OFF
connection master;
-kill query _tid;
[ Semi-sync status on master should be ON ]
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync_row.result b/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync_row.result
index 30280551ce2..6a23f24b66d 100644
--- a/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync_row.result
+++ b/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync_row.result
@@ -5,6 +5,7 @@ connection master;
call mtr.add_suppression("Timeout waiting for reply of binlog");
call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
+call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
@@ -177,7 +178,7 @@ Variable_name Value
Rpl_semi_sync_master_yes_tx 14
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
-Rpl_semi_sync_master_clients 1
+Rpl_semi_sync_master_clients 0
[ semi-sync replication of these transactions will fail ]
insert into t1 values (500);
[ master status should be OFF ]
@@ -322,7 +323,6 @@ connection slave;
include/stop_slave.inc
reset slave;
connection master;
-kill query _tid;
connection slave;
include/start_slave.inc
connection master;
@@ -354,7 +354,6 @@ include/stop_slave.inc
reset slave;
connection master;
reset master;
-kill query _tid;
set sql_log_bin=0;
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
flush privileges;
@@ -405,7 +404,6 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
Variable_name Value
Rpl_semi_sync_slave_status OFF
connection master;
-kill query _tid;
[ Semi-sync status on master should be ON ]
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_event.result b/mysql-test/suite/rpl/r/rpl_semi_sync_event.result
index c347ff410ac..917e7c2b02b 100644
--- a/mysql-test/suite/rpl/r/rpl_semi_sync_event.result
+++ b/mysql-test/suite/rpl/r/rpl_semi_sync_event.result
@@ -5,6 +5,7 @@ call mtr.add_suppression("Timeout waiting for reply of binlog");
call mtr.add_suppression("Semi-sync master .* waiting for slave reply");
call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
+call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_event_after_sync.result b/mysql-test/suite/rpl/r/rpl_semi_sync_event_after_sync.result
index c237eb8df47..24daf0d72b5 100644
--- a/mysql-test/suite/rpl/r/rpl_semi_sync_event_after_sync.result
+++ b/mysql-test/suite/rpl/r/rpl_semi_sync_event_after_sync.result
@@ -6,6 +6,7 @@ call mtr.add_suppression("Timeout waiting for reply of binlog");
call mtr.add_suppression("Semi-sync master .* waiting for slave reply");
call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
+call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_uninstall_plugin.result b/mysql-test/suite/rpl/r/rpl_semi_sync_uninstall_plugin.result
deleted file mode 100644
index 68ad4877927..00000000000
--- a/mysql-test/suite/rpl/r/rpl_semi_sync_uninstall_plugin.result
+++ /dev/null
@@ -1,73 +0,0 @@
-include/master-slave.inc
-[connection master]
-call mtr.add_suppression("Read semi-sync reply network error");
-call mtr.add_suppression("Timeout waiting for reply of binlog");
-INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master';
-connection slave;
-INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave';
-UNINSTALL PLUGIN rpl_semi_sync_slave;
-connection master;
-UNINSTALL PLUGIN rpl_semi_sync_master;
-CREATE TABLE t1(i int);
-INSERT INTO t1 values (1);
-DROP TABLE t1;
-connection slave;
-include/install_semisync.inc
-connection master;
-connection slave;
-connection slave;
-show global status like "Slave%_running";
-Variable_name Value
-Slave_running ON
-Slaves_running 1
-UNINSTALL PLUGIN rpl_semi_sync_slave;
-Warnings:
-Warning 1620 Plugin is busy and will be uninstalled on shutdown
-select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'rpl_%';
-plugin_name plugin_status
-rpl_semi_sync_slave DELETED
-connection master;
-show global status like "Slave%_connect%";
-Variable_name Value
-Slave_connections 2
-Slaves_connected 1
-UNINSTALL PLUGIN rpl_semi_sync_master;
-Warnings:
-Warning 1620 Plugin is busy and will be uninstalled on shutdown
-select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'rpl_%';
-plugin_name plugin_status
-rpl_semi_sync_master DELETED
-CREATE TABLE t1(i int);
-INSERT INTO t1 values (2);
-DROP TABLE t1;
-connection slave;
-show status like "Rpl_semi_sync_slave_status";
-Variable_name Value
-Rpl_semi_sync_slave_status ON
-connection master;
-show status like "Rpl_semi_sync_master_status";
-Variable_name Value
-Rpl_semi_sync_master_status ON
-show status like "Rpl_semi_sync_master_clients";
-Variable_name Value
-Rpl_semi_sync_master_clients 1
-select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'rpl_%';
-plugin_name plugin_status
-rpl_semi_sync_master DELETED
-connection slave;
-include/stop_slave.inc
-select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'rpl_%';
-plugin_name plugin_status
-connection master;
-create table t2 (a int);
-drop table t2;
-connection slave;
-include/start_slave.inc
-select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'rpl_%';
-plugin_name plugin_status
-connection master;
-CREATE TABLE t1(i int);
-INSERT INTO t1 values (3);
-DROP TABLE t1;
-connection slave;
-include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_semisync_ali_issues.result b/mysql-test/suite/rpl/r/rpl_semisync_ali_issues.result
new file mode 100644
index 00000000000..9607e8a7998
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_semisync_ali_issues.result
@@ -0,0 +1,353 @@
+include/master-slave.inc
+[connection master]
+CALL mtr.add_suppression("Failed to start semi-sync ACK receiver thread.*");
+CALL mtr.add_suppression("Failed to register slave to semi-sync ACK receiver thread.*");
+CALL mtr.add_suppression("Failed to stop ack receiver thread on pthread_join.*");
+CALL mtr.add_suppression("Got an error reading communication packets:*");
+CALL mtr.add_suppression("Timeout waiting for reply of binlog*");
+CALL mtr.add_suppression("slave_read_sync_header*");
+CALL mtr.add_suppression("Missing magic number for semi-sync*");
+CALL mtr.add_suppression("Got timeout reading communication packets*");
+CALL mtr.add_suppression("Failed to call*");
+CALL mtr.add_suppression("Execution failed on master*");
+CALL mtr.add_suppression("Failed on request_dump()*");
+CALL mtr.add_suppression("Semi-sync master failed on*");
+CALL mtr.add_suppression("Master command COM_BINLOG_DUMP failed*");
+CALL mtr.add_suppression("on master failed*");
+CALL mtr.add_suppression("Master server does not support semi-sync*");
+CALL mtr.add_suppression("Semi-sync slave net_flush*");
+CALL mtr.add_suppression("Failed to flush master info*");
+CALL mtr.add_suppression("Request to stop slave SQL Thread received while apply*");
+connection master;
+[ enable semi-sync on master ]
+set global rpl_semi_sync_master_enabled = 1;
+show variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled ON
+connection slave;
+[ enable semi-sync on slave ]
+stop slave;
+set global rpl_semi_sync_slave_enabled = 1;
+start slave;
+show status like 'rpl_semi_sync_slave%';
+Variable_name Value
+Rpl_semi_sync_slave_send_ack 0
+Rpl_semi_sync_slave_status ON
+connection master;
+CREATE TABLE t1(a INT) ENGINE=InnoDB;
+connection slave;
+connection master;
+connect con1,localhost,root,,;
+connect con2,localhost,root,,;
+connect con3,localhost,root,,;
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+show status like "rpl_semi_sync_master_yes_tx";
+Variable_name Value
+Rpl_semi_sync_master_yes_tx 1
+#########################################
+# Test rpl_semi_sync_master_wait_point #
+#########################################
+# Test after_sync and after_commit first.
+#Test after_sync
+connection con1;
+SET GLOBAL rpl_semi_sync_master_timeout = 1000000;
+SET GLOBAL rpl_semi_sync_master_wait_point= 'AFTER_SYNC';
+SET DEBUG_SYNC= "commit_before_get_LOCK_commit_ordered SIGNAL after_sync_done WAIT_FOR end";
+INSERT into t1 values (1);;
+connection con2;
+SET DEBUG_SYNC= "now WAIT_FOR after_sync_done";
+connection slave;
+#slave can see record (1) after sync slave with master
+select * from t1;
+a
+1
+connection con2;
+#con2 shouldn't see record (1)
+select * from t1;
+a
+SET DEBUG_SYNC= "now SIGNAL end";
+connection con1;
+connection con1;
+select * from t1;
+a
+1
+truncate table t1;
+connection slave;
+connection con1;
+SET DEBUG_SYNC= 'reset';
+SET DEBUG_SYNC= "commit_before_get_LOCK_log SIGNAL before_fetch_done WAIT_FOR more_queue";
+INSERT into t1 VALUES (1);;
+connection con2;
+SET DEBUG_SYNC= "now WAIT_FOR before_fetch_done";
+SET DEBUG_SYNC= "after_semisync_queue SIGNAL more_queue";
+INSERT INTO t1 VALUES (2);
+connection con1;
+connection con1;
+SET DEBUG_SYNC= 'reset';
+SET DEBUG_SYNC= "commit_before_get_LOCK_log SIGNAL before_fetch_done WAIT_FOR disable_semisync";
+INSERT into t1 VALUES (3);;
+connection con2;
+SET DEBUG_SYNC= "now WAIT_FOR before_fetch_done";
+SET GLOBAL rpl_semi_sync_master_enabled= 0;
+SET DEBUG_SYNC= "now SIGNAL disable_semisync";
+connection con1;
+SET GLOBAL rpl_semi_sync_master_enabled = 1;
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+#Test after_commit
+connection con1;
+SET GLOBAL rpl_semi_sync_master_wait_point= 'AFTER_COMMIT';
+SET DEBUG_SYNC= "after_group_after_commit SIGNAL after_commit_done WAIT_FOR end";
+INSERT into t1 values (4);;
+connection con2;
+SET DEBUG_SYNC= "now WAIT_FOR after_commit_done";
+connection slave;
+select * from t1;
+a
+1
+2
+3
+4
+connection con2;
+select * from t1;
+a
+1
+2
+3
+4
+SET DEBUG_SYNC= "now SIGNAL end";
+connection con1;
+connection con1;
+select * from t1;
+a
+1
+2
+3
+4
+truncate table t1;
+#######################################################
+# Test some other options in order to cover the patch #
+#######################################################
+connection slave;
+# Test rpl_semi_sync_slave_trace_level
+SET GLOBAL rpl_semi_sync_slave_trace_level= 1;
+SET GLOBAL rpl_semi_sync_slave_trace_level= 16;
+SET GLOBAL rpl_semi_sync_slave_trace_level= 64;
+SET GLOBAL rpl_semi_sync_slave_trace_level= 128;
+SET GLOBAL rpl_semi_sync_slave_trace_level= 32;
+connection master;
+# Test rpl_semi_sync_master_trace_level
+SET GLOBAL rpl_semi_sync_master_trace_level= 1;
+SET GLOBAL rpl_semi_sync_master_trace_level= 16;
+SET GLOBAL rpl_semi_sync_master_trace_level= 64;
+SET GLOBAL rpl_semi_sync_master_trace_level= 128;
+SET GLOBAL rpl_semi_sync_master_trace_level= 32;
+# Test rpl_semi_sync_master_timeout
+SET GLOBAL rpl_semi_sync_master_timeout= 1000;
+SET GLOBAL rpl_semi_sync_master_timeout= 10000;
+SET GLOBAL rpl_semi_sync_master_timeout = 1000000;
+# Test rpl_semi_sync_slave_kill_conn_timeout
+SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 10;
+SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 20;
+SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 60;
+SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 5;
+############################################
+# Test rpl_semi_sync_master_wait_no_slave #
+############################################
+SET GLOBAL rpl_semi_sync_master_wait_no_slave = 1;
+connection slave;
+STOP SLAVE IO_THREAD;
+include/wait_for_slave_io_to_stop.inc
+connection con1;
+SET GLOBAL rpl_semi_sync_master_timeout = 1000;
+INSERT INTO t1 values (1);;
+connection con1;
+# Rpl_semi_sync_master_no_tx should be non-zero
+SHOW STATUS LIKE 'Rpl_semi_sync_master_no_tx'
+connection slave;
+START SLAVE IO_THREAD;
+include/wait_for_slave_io_to_start.inc
+connection con1;
+INSERT INTO t1 values (2);
+connection slave;
+connection con1;
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+connection slave;
+STOP SLAVE IO_THREAD;
+include/wait_for_slave_io_to_stop.inc
+connection con1;
+SET GLOBAL rpl_semi_sync_master_wait_no_slave= 0;
+SET GLOBAL rpl_semi_sync_master_timeout= 1000000000;
+INSERT INTO t1 values (3);
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 0
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status OFF
+connection slave;
+START SLAVE IO_THREAD;
+include/wait_for_slave_io_to_start.inc
+connection con1;
+SET GLOBAL rpl_semi_sync_master_timeout= 10000000;
+SET GLOBAL rpl_semi_sync_master_wait_no_slave= 1;
+INSERT INTO t1 values (4);
+connection slave;
+connection con1;
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+##########################################
+# Test rpl_semi_sync_slave_delay_master #
+##########################################
+connection slave;
+SET GLOBAL rpl_semi_sync_slave_delay_master= 1;
+START SLAVE IO_THREAD;
+Warnings:
+Note 1254 Slave is already running
+include/wait_for_slave_io_to_start.inc
+connection con1;
+INSERT INTO t1 values (3);
+include/sync_slave_io_with_master.inc
+connection con1;
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+show status like 'Rpl_semi_sync_master_status';
+Variable_name Value
+Rpl_semi_sync_master_status ON
+connection slave;
+connection slave;
+select * from t1 order by a;
+a
+1
+2
+3
+3
+4
+connection con1;
+select * from t1 order by a;
+a
+1
+2
+3
+3
+4
+connection slave;
+SET GLOBAL rpl_semi_sync_slave_delay_master = 0;
+STOP SLAVE IO_THREAD;
+include/wait_for_slave_io_to_stop.inc
+START SLAVE IO_THREAD;
+include/wait_for_slave_io_to_start.inc
+##########################################################
+# Test rpl_semi_sync_master_enabled and new ACK thread #
+#########################################################
+connection con1;
+SET GLOBAL rpl_semi_sync_master_enabled = 0;
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+INSERT INTO t1 VALUES (1);
+SET GLOBAL rpl_semi_sync_master_enabled = 1;
+INSERT INTO t1 VALUES (2);
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 1
+# Test failure of select error .
+SET GLOBAL debug = 'd,rpl_semisync_simulate_select_error';
+Warnings:
+Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
+INSERT INTO t1 VALUES(3);
+connection slave;
+connection con1;
+# Test failure of pthread_create
+SET GLOBAL rpl_semi_sync_master_enabled = 0;
+SET GLOBAL debug = 'd,rpl_semisync_simulate_create_thread_failure';
+Warnings:
+Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
+SET GLOBAL rpl_semi_sync_master_enabled= ON;
+# Test failure of pthread_join
+SET GLOBAL rpl_semi_sync_master_enabled= OFF;
+#
+# Failure on registering semisync slave
+#
+SET GLOBAL debug= 'd,rpl_semisync_simulate_add_slave_failure';
+Warnings:
+Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
+SET GLOBAL rpl_semi_sync_master_enabled= ON;
+connection slave;
+STOP SLAVE IO_THREAD;
+include/wait_for_slave_io_to_stop.inc
+START SLAVE IO_THREAD;
+include/wait_for_slave_io_to_start.inc
+connection con1;
+SET GLOBAL debug='';
+Warnings:
+Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
+connection slave;
+START SLAVE IO_THREAD;
+include/wait_for_slave_io_to_start.inc
+connection con1;
+connection slave;
+show status like 'Rpl_semi_sync_master_clients';
+Variable_name Value
+Rpl_semi_sync_master_clients 0
+##################################################################
+# Test fixing of BUG#70669 #
+#SLAVE CAN'T CONTINUE REPLICATION AFTER MASTER'S CRASH RECOVERY #
+#################################################################
+connection con1;
+SET GLOBAL sync_binlog = 1;
+CREATE TABLE t2 (c1 INT);
+connection slave;
+connection con1;
+INSERT INTO t2 values (1);
+connection slave;
+connection con2;
+connection con1;
+connection slave;
+show tables like 't2';
+Tables_in_test (t2)
+t2
+select * from t2;
+c1
+1
+connection con1;
+INSERT INTO t2 VALUES (2);
+connection con2;
+INSERT INTO t2 VALUES (3);
+connection con1;
+connection con2;
+connection con1;
+SET GLOBAL sync_binlog = 0;
+DROP TABLE t2;
+connection con2;
+connection slave;
+show tables like 't2';
+Tables_in_test (t2)
+connection con2;
+#cleanup
+connection master;
+SET DEBUG_SYNC= 'reset';
+disconnect con1;
+disconnect con2;
+disconnect con3;
+SET GLOBAL rpl_semi_sync_master_timeout= 10000;
+SET GLOBAL rpl_semi_sync_master_enabled = 0;
+DROP TABLE t1;
+connection slave;
+SET GLOBAL rpl_semi_sync_slave_enabled = 0;
+stop slave;
+start slave;
+include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_sp.result b/mysql-test/suite/rpl/r/rpl_sp.result
index b32cd199ba2..97cc4dad8ad 100644
--- a/mysql-test/suite/rpl/r/rpl_sp.result
+++ b/mysql-test/suite/rpl/r/rpl_sp.result
@@ -17,7 +17,7 @@ insert into t1 values (b);
insert into t1 values (unix_timestamp());
end|
select * from mysql.proc where name='foo' and db='mysqltest1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
mysqltest1 foo PROCEDURE foo SQL CONTAINS_SQL NO DEFINER begin
declare b int;
set b = 8;
@@ -28,10 +28,10 @@ declare b int;
set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
-end
+end NONE
connection slave;
select * from mysql.proc where name='foo' and db='mysqltest1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
mysqltest1 foo PROCEDURE foo SQL CONTAINS_SQL NO DEFINER begin
declare b int;
set b = 8;
@@ -42,7 +42,7 @@ declare b int;
set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
-end
+end NONE
connection master;
set timestamp=1000000000;
call foo();
@@ -137,19 +137,19 @@ select * from t2;
a
20
select * from mysql.proc where name="foo4" and db='mysqltest1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
mysqltest1 foo4 PROCEDURE foo4 SQL CONTAINS_SQL YES DEFINER begin
insert into t2 values(20),(20);
end root@localhost # # latin1 latin1_swedish_ci latin1_swedish_ci begin
insert into t2 values(20),(20);
-end
+end NONE
connection master;
drop procedure foo4;
select * from mysql.proc where name="foo4" and db='mysqltest1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
connection slave;
select * from mysql.proc where name="foo4" and db='mysqltest1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
connection master;
drop procedure foo;
drop procedure foo2;
@@ -235,22 +235,22 @@ select fn3();
fn3()
0
select * from mysql.proc where db='mysqltest1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
mysqltest1 fn1 FUNCTION fn1 SQL NO_SQL NO DEFINER int(11) begin
return unix_timestamp();
end root@localhost # # latin1 latin1_swedish_ci latin1_swedish_ci begin
return unix_timestamp();
-end
+end NONE
mysqltest1 fn2 FUNCTION fn2 SQL NO_SQL NO DEFINER int(11) begin
return unix_timestamp();
end zedjzlcsjhd@localhost # # latin1 latin1_swedish_ci latin1_swedish_ci begin
return unix_timestamp();
-end
+end NONE
mysqltest1 fn3 FUNCTION fn3 SQL READS_SQL_DATA NO DEFINER int(11) begin
return 0;
end root@localhost # # latin1 latin1_swedish_ci latin1_swedish_ci begin
return 0;
-end
+end NONE
select * from t1;
a
1000000000
@@ -260,22 +260,22 @@ select * from t1;
a
1000000000
select * from mysql.proc where db='mysqltest1';
-db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8
+db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
mysqltest1 fn1 FUNCTION fn1 SQL NO_SQL NO DEFINER int(11) begin
return unix_timestamp();
end root@localhost # # latin1 latin1_swedish_ci latin1_swedish_ci begin
return unix_timestamp();
-end
+end NONE
mysqltest1 fn2 FUNCTION fn2 SQL NO_SQL NO DEFINER int(11) begin
return unix_timestamp();
end zedjzlcsjhd@localhost # # latin1 latin1_swedish_ci latin1_swedish_ci begin
return unix_timestamp();
-end
+end NONE
mysqltest1 fn3 FUNCTION fn3 SQL READS_SQL_DATA NO DEFINER int(11) begin
return 0;
end root@localhost # # latin1 latin1_swedish_ci latin1_swedish_ci begin
return 0;
-end
+end NONE
connection master;
delete from t2;
alter table t2 add unique (a);
diff --git a/mysql-test/suite/rpl/r/rpl_stop_slave.result b/mysql-test/suite/rpl/r/rpl_stop_slave.result
index 2417c5abda8..4b9c544527b 100644
--- a/mysql-test/suite/rpl/r/rpl_stop_slave.result
+++ b/mysql-test/suite/rpl/r/rpl_stop_slave.result
@@ -15,7 +15,8 @@ include/stop_slave.inc
# Suspend the INSERT statement in current transaction on SQL thread.
# It guarantees that SQL thread is applying the transaction when
# STOP SLAVE command launchs.
-SET GLOBAL debug_dbug= '+d,after_mysql_insert,*';
+set @old_debug=@@global.debug;
+set global debug_dbug= '+d,after_mysql_insert';
include/start_slave.inc
# CREATE TEMPORARY TABLE with InnoDB engine
@@ -98,7 +99,8 @@ connection slave;
include/stop_slave.inc
connection master;
include/stop_dump_threads.inc
-SET GLOBAL debug_dbug= '+d,dump_thread_wait_before_send_xid,*';
+set @old_debug=@@global.debug;
+set global debug_dbug= '+d,dump_thread_wait_before_send_xid';
connection slave;
include/start_slave.inc
BEGIN;
diff --git a/mysql-test/suite/rpl/r/rpl_update.result b/mysql-test/suite/rpl/r/rpl_update.result
new file mode 100644
index 00000000000..31bc50a78de
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_update.result
@@ -0,0 +1,16 @@
+include/master-slave.inc
+[connection master]
+set sql_mode=simultaneous_assignment;
+create table t1 (a int, b int);
+insert into t1 values(1, 2);
+update t1 set a=b, b=a;
+select * from t1;
+a b
+2 1
+connection slave;
+select * from t1;
+a b
+2 1
+connection master;
+drop table t1;
+include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_view_debug.result b/mysql-test/suite/rpl/r/rpl_view_debug.result
index 22032c3fb90..497f4303698 100644
--- a/mysql-test/suite/rpl/r/rpl_view_debug.result
+++ b/mysql-test/suite/rpl/r/rpl_view_debug.result
@@ -23,7 +23,7 @@ v1
connection master;
set @@debug_dbug="d,simulate_register_view_failure";
CREATE VIEW v2 as SELECT * FROM t1;
-ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
+ERROR HY000: Out of memory.
show tables;
Tables_in_test
t1
diff --git a/mysql-test/suite/rpl/r/show_status_stop_slave_race-7126.result b/mysql-test/suite/rpl/r/show_status_stop_slave_race-7126.result
index 64219e3908d..999d9417b3f 100644
--- a/mysql-test/suite/rpl/r/show_status_stop_slave_race-7126.result
+++ b/mysql-test/suite/rpl/r/show_status_stop_slave_race-7126.result
@@ -3,6 +3,7 @@ include/master-slave.inc
call mtr.add_suppression("Master is configured to log replication events");
connection slave;
connection slave;
+include/wait_for_slave_to_stop.inc
start slave;
connection master;
include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_alter_instant.test b/mysql-test/suite/rpl/t/rpl_alter_instant.test
new file mode 100644
index 00000000000..260f7e92d10
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_alter_instant.test
@@ -0,0 +1,50 @@
+source include/have_innodb.inc;
+source include/master-slave.inc;
+
+use test;
+create table t1 (id int primary key, c1 int default 10, c2 varchar(20) default 'holiday') engine = innodb;
+
+insert into t1 values(1, 12345, 'abcde'), (2, default, default), (3, 23456, 'xyzab');
+
+set time_zone='+03:00';
+set timestamp = 1;
+alter table t1 add column d1 timestamp not null default current_timestamp;
+
+select * from t1;
+sync_slave_with_master;
+
+connection slave;
+set time_zone='+03:00';
+select * from t1;
+
+connection master;
+alter table t1 add column d2 timestamp not null default current_timestamp, ALGORITHM=copy;
+
+sync_slave_with_master;
+
+connection slave;
+select * from t1;
+
+connection master;
+drop table t1;
+
+
+# datetime
+create table t4 (id int primary key, c2 int);
+insert into t4 values(1,1),(2,2),(3,3);
+set timestamp = 1000;
+alter table t4 add column (c3 datetime default current_timestamp(), c4 timestamp not null default current_timestamp());
+select * from t4;
+alter table t4 add column c5 time not null default current_timestamp();
+alter table t4 add column c6 date not null default current_timestamp();
+
+select * from t4;
+sync_slave_with_master;
+
+connection slave;
+select * from t4;
+
+connection master;
+drop table t4;
+
+--source include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_events.test b/mysql-test/suite/rpl/t/rpl_events.test
index 5bdf8ad2412..3e73fc7a3ee 100644
--- a/mysql-test/suite/rpl/t/rpl_events.test
+++ b/mysql-test/suite/rpl/t/rpl_events.test
@@ -9,16 +9,158 @@
SET @old_event_scheduler = @@global.event_scheduler;
set global event_scheduler=1;
-let $engine_type= MyISAM;
+# first, we need a table to record something from an event
+
+eval CREATE TABLE `t1` (
+ `id` INT(10) UNSIGNED NOT NULL,
+ `c` VARCHAR(50) NOT NULL,
+ `ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`)
+) DEFAULT CHARSET=utf8;
+
+INSERT INTO t1 (id, c) VALUES (1, 'manually');
+
+# We create the event so that it inserts exactly 1 row in the table
+# A recuring event is used so that we can be sure the event will
+# fire regardless of timing delays on the server. Otherwise, it is
+# possible for the event to timeout before it has inserted a row.
+--echo "Creating event test.justonce on the master"
+CREATE EVENT test.justonce ON SCHEDULE EVERY 2 SECOND DO
+ INSERT IGNORE INTO t1 (id, c) VALUES (2, 'from justonce');
+
+# Show the event is alive and present on master
+--echo "Checking event is active on master"
+SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce';
+
+# Wait until event has fired. We know this because t1 will contain
+# the row from the event.
+let $wait_condition=
+ SELECT COUNT(*) = 1 FROM t1 WHERE c = 'from justonce';
+--source include/wait_condition.inc
+
+# check that table t1 contains something
+--echo "Checking event data on the master"
+let $events_done=`SELECT count(*) FROM t1 id`;
+--disable_query_log
+eval SELECT $events_done > 0 as ONE;
+--enable_query_log
---source include/rpl_events.inc
+sync_slave_with_master;
+
+--echo "Checking event data on the slave"
+--disable_query_log
+eval SELECT count(*) - $events_done as ZERO FROM t1 id;
+--enable_query_log
+
+--echo "Checking event is inactive on slave"
+SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce';
+
+# Create an event on the slave and check to see what the originator is.
+--echo "Dropping event test.slave_once on the slave"
+--disable_warnings
+DROP EVENT IF EXISTS test.slave_once;
+--enable_warnings
+
+# Create an event on slave and check its state. An event shouldn't be executed
+# so set start time in 1 hour.
+CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
+ INSERT IGNORE INTO t1(id, c) VALUES (3, 'from slave_once');
+
+--echo "Checking event status on the slave for originator value = slave's server_id"
+SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_once';
+
+--echo "Dropping event test.slave_once on the slave"
+--disable_warnings
+DROP EVENT IF EXISTS test.slave_once;
+--enable_warnings
+
+connection master;
+
+# BUG#20384 - disable events on slave
+--echo "Dropping event test.justonce on the master"
+--disable_warnings
+DROP EVENT IF EXISTS test.justonce;
+--enable_warnings
+
+# Create an event on master and check its state on slave. An event shouldn't be executed
+# so set start time in 1 hour. Check that changes of event statement replicated to slave
+
+--echo "Creating event test.er on the master"
+CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
+ INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er');
+
+--echo "Checking event status on the master"
+SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
+
+sync_slave_with_master;
+
+--echo "Checking event status on the slave"
+SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
+
+connection master;
+--echo "Altering event test.er on the master"
+ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
+ INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er');
+
+--echo "Checking event status on the master"
+SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
+
+sync_slave_with_master;
+
+--echo "Checking event status on the slave"
+SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
+
+connection master;
+--echo "Dropping event test.er on the master"
+DROP EVENT test.er;
+
+--echo "Checking event status on the master"
+SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
+
+--disable_info
+
+sync_slave_with_master;
+
+--echo "Checking event status on the slave"
+SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
+
+# test the DISABLE ON SLAVE for setting event SLAVESIDE_DISABLED as status
+# on CREATE EVENT
+
+# Create an event on slave and check its status. An event shouldn't be executed
+# so set start time in 1 hour.
+
+--echo "Creating event test.slave_terminate on the slave"
+CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO
+ INSERT IGNORE INTO t1(id, c) VALUES (6, 'from slave_terminate');
+
+--echo "Checking event status on the slave"
+SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
+
+--echo "Dropping event test.slave_terminate on the slave"
+DROP EVENT test.slave_terminate;
+
+--echo "Creating event test.slave_terminate with DISABLE ON SLAVE on the slave"
+CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND DISABLE ON SLAVE DO
+ INSERT IGNORE INTO t1(c) VALUES (7, 'from slave_terminate');
+
+--echo "Checking event status on the slave"
+SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
+
+--echo "Dropping event test.slave_terminate on the slave"
+DROP EVENT test.slave_terminate;
+
+--echo "Cleanup"
+
+connection master;
+DROP TABLE t1;
+sync_slave_with_master;
+connection master;
#
# Bug #28953 Using events in a replication let the slave crash.
#
-connection master;
-
CREATE TABLE t28953 (a INT);
DELIMITER |;
@@ -39,7 +181,7 @@ DROP EVENT event2;
#
# BUG#44331
# This test verifies if the definer is consistent between master and slave,
-# when the event is created without the DEFINER clause set explicitly or the
+# when the event is created without the DEFINER clause set explicitly or the
# DEFINER is set to CURRENT_USER
#
CREATE TABLE test.t1(details CHAR(30));
@@ -53,7 +195,7 @@ CREATE DEFINER=CURRENT_USER /*!50000 EVENT event44331_2 */
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO INSERT INTO test.t1 VALUES('event event44331_2 fired - DEFINER=CURRENT_USER');
-
+
CREATE DEFINER=CURRENT_USER() EVENT event44331_3
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
diff --git a/mysql-test/suite/rpl/t/rpl_gtid_crash.test b/mysql-test/suite/rpl/t/rpl_gtid_crash.test
index b81cbd38cd3..5cf28b6e49a 100644
--- a/mysql-test/suite/rpl/t/rpl_gtid_crash.test
+++ b/mysql-test/suite/rpl/t/rpl_gtid_crash.test
@@ -161,8 +161,8 @@ EOF
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
wait
EOF
-SET GLOBAL debug_dbug="+d,crash_commit_before";
START SLAVE;
+SET GLOBAL debug_dbug="+d,crash_commit_before";
--connection server_1
INSERT INTO t1 VALUES (5);
@@ -185,8 +185,8 @@ EOF
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
wait
EOF
-SET GLOBAL debug_dbug="+d,crash_commit_after";
START SLAVE;
+SET GLOBAL debug_dbug="+d,crash_commit_after";
--connection server_1
INSERT INTO t1 VALUES (6);
diff --git a/mysql-test/suite/rpl/t/rpl_gtid_errorhandling.test b/mysql-test/suite/rpl/t/rpl_gtid_errorhandling.test
index 517e5073b2d..c02e2670c92 100644
--- a/mysql-test/suite/rpl/t/rpl_gtid_errorhandling.test
+++ b/mysql-test/suite/rpl/t/rpl_gtid_errorhandling.test
@@ -17,7 +17,7 @@ INSERT INTO t1 VALUES (1);
--connection slave
CALL mtr.add_suppression("Slave: Failed to open mysql.gtid_slave_pos");
---let $slave_sql_errno=1942
+--let $slave_sql_errno=1944
--source include/wait_for_slave_sql_error.inc
--source include/stop_slave.inc
@@ -25,19 +25,19 @@ ALTER TABLE mysql.gtid_slave_pos CHANGE seq_no seq_no BIGINT UNSIGNED NOT NULL;
ALTER TABLE mysql.gtid_slave_pos DROP PRIMARY KEY;
ALTER TABLE mysql.gtid_slave_pos ADD PRIMARY KEY (sub_id, domain_id);
START SLAVE;
---let $slave_sql_errno=1942
+--let $slave_sql_errno=1944
--source include/wait_for_slave_sql_error.inc
--source include/stop_slave.inc
ALTER TABLE mysql.gtid_slave_pos DROP PRIMARY KEY;
START SLAVE;
---let $slave_sql_errno=1942
+--let $slave_sql_errno=1944
--source include/wait_for_slave_sql_error.inc
--source include/stop_slave.inc
ALTER TABLE mysql.gtid_slave_pos ADD PRIMARY KEY (sub_id);
START SLAVE;
---let $slave_sql_errno=1942
+--let $slave_sql_errno=1944
--source include/wait_for_slave_sql_error.inc
--source include/stop_slave.inc
diff --git a/mysql-test/suite/rpl/t/rpl_gtid_ignored.test b/mysql-test/suite/rpl/t/rpl_gtid_ignored.test
index cb98be3c838..6e927bd5a77 100644
--- a/mysql-test/suite/rpl/t/rpl_gtid_ignored.test
+++ b/mysql-test/suite/rpl/t/rpl_gtid_ignored.test
@@ -129,6 +129,7 @@ SELECT * FROM t1 ORDER BY a;
# Clean up.
--connection server_1
DROP TABLE t1;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
SET GLOBAL gtid_strict_mode= @old_gtid_strict_mode;
SET debug_sync = "reset";
diff --git a/mysql-test/suite/rpl/t/rpl_gtid_mdev4484.test b/mysql-test/suite/rpl/t/rpl_gtid_mdev4484.test
index 5b13a5e1fc1..e1f5696f5a1 100644
--- a/mysql-test/suite/rpl/t/rpl_gtid_mdev4484.test
+++ b/mysql-test/suite/rpl/t/rpl_gtid_mdev4484.test
@@ -2,6 +2,18 @@
--source include/have_debug.inc
--source include/master-slave.inc
+--connection slave
+--source include/stop_slave.inc
+# Since we inject an error updating mysql.gtid_slave_pos, we will get different
+# output depending on whether it is InnoDB or MyISAM (roll back or no roll
+# back). So fix it to make sure we are consistent, in case an earlier test case
+# left it as InnoDB.
+SET sql_log_bin=0;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
+SET sql_log_bin=1;
+--source include/start_slave.inc
+
+--connection master
CREATE TABLE t1 (i int) ENGINE=InnoDB;
--sync_slave_with_master
@@ -20,10 +32,6 @@ SET @old_dbug= @@GLOBAL.debug_dbug;
SET GLOBAL debug_dbug="+d,gtid_slave_pos_simulate_failed_delete";
SET sql_log_bin= 0;
CALL mtr.add_suppression("Can't find file");
-# Since we inject an error updating mysql.gtid_slave_pos, we will get different
-# output depending on whether it is InnoDB or MyISAM (roll back or no roll
-# back). So fix it to make sure we are consistent.
-ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
SET sql_log_bin= 1;
--source include/start_slave.inc
diff --git a/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test b/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test
index 09b35011f1f..309debd87c5 100644
--- a/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test
+++ b/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test
@@ -232,6 +232,20 @@ EOF
SET sql_log_bin= 0;
ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
SET sql_log_bin= 1;
+# Do a second restart to get the mysql.gtid_slave_pos table loaded with
+# the right engine.
+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+wait
+EOF
+--shutdown_server 30
+--source include/wait_until_disconnected.inc
+
+--append_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+restart:
+EOF
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+
--source include/start_slave.inc
--connection server_1
@@ -285,7 +299,7 @@ SELECT domain_id, COUNT(*) FROM mysql.gtid_slave_pos GROUP BY domain_id;
--connection server_2
SET sql_log_bin=0;
--let $old_pos= `SELECT @@GLOBAL.gtid_slave_pos`
-RENAME TABLE mysql.gtid_slave_pos TO mysql.gtid_slave_pos_old;
+RENAME TABLE mysql.gtid_slave_pos TO mysql.old_gtid_slave_pos;
SET sql_log_bin=1;
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
@@ -313,7 +327,7 @@ SHOW WARNINGS;
# Restore things.
SET sql_log_bin=0;
-RENAME TABLE mysql.gtid_slave_pos_old TO mysql.gtid_slave_pos;
+RENAME TABLE mysql.old_gtid_slave_pos TO mysql.gtid_slave_pos;
CALL mtr.add_suppression("Failed to load slave replication state from table mysql.gtid_slave_pos");
SET sql_log_bin=1;
diff --git a/mysql-test/suite/rpl/t/rpl_gtid_until.test b/mysql-test/suite/rpl/t/rpl_gtid_until.test
index 20d4510ccc8..aa05ecf79ab 100644
--- a/mysql-test/suite/rpl/t/rpl_gtid_until.test
+++ b/mysql-test/suite/rpl/t/rpl_gtid_until.test
@@ -19,6 +19,9 @@ delimiter ;|
--connection server_2
--sync_with_master
+# Restart SQL thread to pick up ALTER TABLE of mysql.gtid_slave_pos.
+--source include/stop_slave.inc
+--source include/start_slave.inc
# Both replication threads must be stopped for UNTIL master_gtid_pos.
--error ER_SLAVE_WAS_RUNNING
diff --git a/mysql-test/suite/rpl/t/rpl_mdev10863.test b/mysql-test/suite/rpl/t/rpl_mdev10863.test
index 796e770672d..81cdfd84dbe 100644
--- a/mysql-test/suite/rpl/t/rpl_mdev10863.test
+++ b/mysql-test/suite/rpl/t/rpl_mdev10863.test
@@ -99,6 +99,7 @@ SET GLOBAL max_relay_log_size= @old_max_relay;
--source include/start_slave.inc
--connection server_1
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
DROP TABLE t1;
--source include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_mdev12179.test b/mysql-test/suite/rpl/t/rpl_mdev12179.test
new file mode 100644
index 00000000000..a9113c91797
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_mdev12179.test
@@ -0,0 +1,280 @@
+--source include/have_innodb.inc
+--let $rpl_topology=1->2
+--source include/rpl_init.inc
+
+--connection server_2
+--error ER_SLAVE_MUST_STOP
+SET GLOBAL gtid_pos_auto_engines="innodb";
+--source include/stop_slave.inc
+CHANGE MASTER TO master_use_gtid=slave_pos;
+
+# Test the @@gtid_pos_auto_engines sysvar.
+SELECT @@gtid_pos_auto_engines;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SELECT @@SESSION.gtid_pos_auto_engines;
+--error ER_WRONG_VALUE_FOR_VAR
+SET GLOBAL gtid_pos_auto_engines= NULL;
+SET GLOBAL gtid_pos_auto_engines="innodb";
+SELECT @@gtid_pos_auto_engines;
+SET GLOBAL gtid_pos_auto_engines="myisam,innodb";
+SELECT @@gtid_pos_auto_engines;
+SET GLOBAL gtid_pos_auto_engines="innodb,myisam";
+SELECT @@gtid_pos_auto_engines;
+SET GLOBAL gtid_pos_auto_engines="innodb,innodb,myisam,innodb,myisam,myisam,innodb";
+SELECT @@gtid_pos_auto_engines;
+SET GLOBAL gtid_pos_auto_engines=DEFAULT;
+SELECT @@gtid_pos_auto_engines;
+SET GLOBAL gtid_pos_auto_engines="";
+SELECT @@gtid_pos_auto_engines;
+
+--source include/start_slave.inc
+
+--connection server_1
+CREATE TABLE t1 (a INT PRIMARY KEY);
+INSERT INTO t1 VALUES (1);
+SELECT * FROM t1 ORDER BY a;
+--save_master_pos
+
+--connection server_2
+--sync_with_master
+SELECT * FROM t1 ORDER BY a;
+--source include/stop_slave.inc
+SET sql_log_bin=0;
+# Reset storage engine for mysql.gtid_slave_pos in case an earlier test
+# might have changed it to InnoDB.
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
+CREATE TABLE mysql.gtid_slave_pos_innodb LIKE mysql.gtid_slave_pos;
+ALTER TABLE mysql.gtid_slave_pos_innodb ENGINE=InnoDB;
+INSERT INTO mysql.gtid_slave_pos_innodb SELECT * FROM mysql.gtid_slave_pos;
+TRUNCATE mysql.gtid_slave_pos;
+SET sql_log_bin=1;
+
+# Restart the slave mysqld server, and verify that the GTID position is
+# read correctly from the new mysql.gtid_slave_pos_innodb table.
+
+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+wait
+EOF
+--shutdown_server 30
+--source include/wait_until_disconnected.inc
+
+--connection server_1
+INSERT INTO t1 VALUES (2);
+INSERT INTO t1 VALUES (3);
+SELECT * FROM t1 ORDER BY a;
+--source include/save_master_gtid.inc
+
+# Let the slave mysqld server start again.
+# As we are restarting, also take the opportunity to test --gtid-pos-auto-engines
+--echo *** Restart server with --gtid-pos-auto-engines=innodb,myisam ***
+--append_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+restart: --skip-slave-start=0 --gtid-pos-auto-engines=innodb,myisam
+EOF
+
+--connection server_2
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+
+--source include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+
+--echo *** Verify no new gtid_slave_pos* tables are created ***
+SELECT table_name, engine FROM information_schema.tables
+ WHERE table_schema='mysql' AND table_name LIKE 'gtid_slave_pos%'
+ ORDER BY table_name;
+
+SELECT @@gtid_pos_auto_engines;
+--source include/stop_slave.inc
+SET sql_log_bin=0;
+INSERT INTO mysql.gtid_slave_pos_innodb SELECT * FROM mysql.gtid_slave_pos;
+DROP TABLE mysql.gtid_slave_pos;
+RENAME TABLE mysql.gtid_slave_pos_innodb TO mysql.gtid_slave_pos;
+SET sql_log_bin=1;
+
+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+wait
+EOF
+--shutdown_server 30
+--source include/wait_until_disconnected.inc
+
+--connection server_1
+CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (4);
+INSERT INTO t2 VALUES (1);
+SELECT * FROM t1 ORDER BY a;
+SELECT * FROM t2 ORDER BY a;
+--source include/save_master_gtid.inc
+
+--echo *** Restart server with --gtid-pos-auto-engines=myisam,innodb ***
+--append_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+restart: --skip-slave-start=0 --gtid-pos-auto-engines=myisam,innodb
+EOF
+
+--connection server_2
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+
+--source include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+SELECT * FROM t2 ORDER BY a;
+
+--echo *** Verify that no new gtid_slave_pos* tables are auto-created ***
+SELECT table_name, engine FROM information_schema.tables
+ WHERE table_schema='mysql' AND table_name LIKE 'gtid_slave_pos%'
+ ORDER BY table_name;
+
+
+--source include/stop_slave.inc
+SET sql_log_bin=0;
+ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;
+SET sql_log_bin=1;
+
+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+wait
+EOF
+--shutdown_server 30
+--source include/wait_until_disconnected.inc
+
+--connection server_1
+INSERT INTO t1 VALUES (5);
+INSERT INTO t2 VALUES (2);
+SELECT * FROM t1 ORDER BY a;
+SELECT * FROM t2 ORDER BY a;
+--source include/save_master_gtid.inc
+
+--append_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+--echo *** Restart server with --gtid-pos-auto-engines=innodb ***
+restart: --skip-slave-start=0 --gtid-pos-auto-engines=innodb
+EOF
+
+--connection server_2
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+
+--source include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+SELECT * FROM t2 ORDER BY a;
+
+--echo *** Verify that mysql.gtid_slave_pos_InnoDB is auto-created ***
+# Note, the create happens asynchronously, so wait for it.
+let $wait_condition=
+ SELECT EXISTS (SELECT * FROM information_schema.tables
+ WHERE table_schema='mysql' AND table_name='gtid_slave_pos_InnoDB');
+--source include/wait_condition.inc
+SELECT table_name, engine FROM information_schema.tables
+ WHERE table_schema='mysql' AND table_name LIKE 'gtid_slave_pos%'
+ ORDER BY table_name;
+
+
+--source include/stop_slave.inc
+SET sql_log_bin=0;
+INSERT INTO mysql.gtid_slave_pos SELECT * FROM mysql.gtid_slave_pos_InnoDB;
+DROP TABLE mysql.gtid_slave_pos_InnoDB;
+SET sql_log_bin=1;
+
+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+wait
+EOF
+--shutdown_server 30
+--source include/wait_until_disconnected.inc
+
+--connection server_1
+INSERT INTO t1 VALUES (6);
+INSERT INTO t2 VALUES (3);
+SELECT * FROM t1 ORDER BY a;
+SELECT * FROM t2 ORDER BY a;
+--source include/save_master_gtid.inc
+
+--echo *** Restart server without --gtid-pos-auto-engines ***
+--append_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+restart: --skip-slave-start=0
+EOF
+
+--connection server_2
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+
+--source include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+SELECT * FROM t2 ORDER BY a;
+
+--echo *** Verify that no mysql.gtid_slave_pos* table is auto-created ***
+SELECT table_name, engine FROM information_schema.tables
+ WHERE table_schema='mysql' AND table_name LIKE 'gtid_slave_pos%'
+ ORDER BY table_name;
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+
+--source include/stop_slave.inc
+SET GLOBAL gtid_pos_auto_engines="innodb";
+--source include/start_slave.inc
+
+--connection server_1
+INSERT INTO t1 VALUES (7);
+INSERT INTO t2 VALUES (4);
+SELECT * FROM t1 ORDER BY a;
+SELECT * FROM t2 ORDER BY a;
+--source include/save_master_gtid.inc
+
+--connection server_2
+--source include/sync_with_master_gtid.inc
+SELECT * FROM t1 ORDER BY a;
+SELECT * FROM t2 ORDER BY a;
+
+--echo *** Verify that mysql.gtid_slave_pos_InnoDB is auto-created ***
+let $wait_condition=
+ SELECT EXISTS (SELECT * FROM information_schema.tables
+ WHERE table_schema='mysql' AND table_name='gtid_slave_pos_InnoDB');
+--source include/wait_condition.inc
+SELECT table_name, engine FROM information_schema.tables
+ WHERE table_schema='mysql' AND table_name LIKE 'gtid_slave_pos%'
+ ORDER BY table_name;
+SELECT domain_id, max(seq_no) FROM mysql.gtid_slave_pos GROUP BY domain_id;
+
+# Check that the auto-created InnoDB table starts being used without
+# needing slave restart. The auto-create happens asynchronously, so it
+# is non-deterministic when it will start being used. But we can wait
+# for it to happen.
+
+--let $count=300
+--let $done=0
+--let $old_silent= $keep_include_silent
+--let $keep_include_silent= 1
+--disable_query_log
+while (!$done)
+{
+ --connection server_1
+ INSERT INTO t2(a) SELECT 1+MAX(a) FROM t2;
+ --source include/save_master_gtid.inc
+
+ --connection server_2
+ --source include/sync_with_master_gtid.inc
+ --let $done=`SELECT COUNT(*) > 0 FROM mysql.gtid_slave_pos_InnoDB`
+ if (!$done)
+ {
+ dec $count;
+ if (!$count)
+ {
+ SELECT * FROM mysql.gtid_slave_pos_InnoDB;
+ --die Timeout waiting for mysql.gtid_slave_pos_InnoDB to be used
+ }
+ real_sleep 0.1;
+ }
+}
+--enable_query_log
+--let $keep_include_silent=$old_silent
+# Note that at this point, the contents of table t2, as well as the GTID
+# position, is non-deterministic.
+
+
+#--connection server_2
+--source include/stop_slave.inc
+SET GLOBAL gtid_pos_auto_engines="";
+SET sql_log_bin=0;
+DROP TABLE mysql.gtid_slave_pos_InnoDB;
+SET sql_log_bin=1;
+--source include/start_slave.inc
+
+--connection server_1
+DROP TABLE t1, t2;
+
+--source include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_mdev359.test b/mysql-test/suite/rpl/t/rpl_mdev359.test
index 3026c6d363e..5b02ecd72c0 100644
--- a/mysql-test/suite/rpl/t/rpl_mdev359.test
+++ b/mysql-test/suite/rpl/t/rpl_mdev359.test
@@ -1,4 +1,3 @@
---source include/have_semisync.inc
--source include/not_embedded.inc
--source include/have_debug_sync.inc
--source include/have_binlog_format_mixed_or_statement.inc
diff --git a/mysql-test/suite/rpl/t/rpl_mdev6020.test b/mysql-test/suite/rpl/t/rpl_mdev6020.test
index 8484e3e11c0..ec3fd92f817 100644
--- a/mysql-test/suite/rpl/t/rpl_mdev6020.test
+++ b/mysql-test/suite/rpl/t/rpl_mdev6020.test
@@ -1,6 +1,3 @@
-# Running this with valgrind can take > 5000 seconds with xtradb
---source include/not_valgrind.inc
-
--source include/have_innodb.inc
--source include/have_partition.inc
--source include/have_binlog_format_mixed_or_row.inc
diff --git a/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test b/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test
index 5bdd1ff8b6b..b0588cb2d58 100644
--- a/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test
+++ b/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test
@@ -238,11 +238,11 @@ DROP TABLE `t1`;
#
# Each varchar field takes up to 2 metadata bytes, see:
#
-# Field_varstring::do_save_field_metadata (field.cc)
+# Field_varstring::save_field_metadata (field.cc)
#
# The float field takes 1 byte, see:
#
-# Field_float::do_save_field_metadata (field.cc)
+# Field_float::save_field_metadata (field.cc)
#
-- let $generated_sql= $MYSQLTEST_VARDIR/tmp/b50018.sql
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_event.test b/mysql-test/suite/rpl/t/rpl_semi_sync_event.test
index b8f3c8130be..4d96fd694ec 100644
--- a/mysql-test/suite/rpl/t/rpl_semi_sync_event.test
+++ b/mysql-test/suite/rpl/t/rpl_semi_sync_event.test
@@ -1,4 +1,3 @@
-source include/have_semisync.inc;
source include/not_embedded.inc;
source include/have_innodb.inc;
source include/master-slave.inc;
@@ -11,6 +10,8 @@ call mtr.add_suppression("Timeout waiting for reply of binlog");
call mtr.add_suppression("Semi-sync master .* waiting for slave reply");
call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
+call mtr.add_suppression("mysqld: Got an error reading communication packets");
+
connection slave;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_skip_repl.test b/mysql-test/suite/rpl/t/rpl_semi_sync_skip_repl.test
index 2f6da18067c..f5c423741a6 100644
--- a/mysql-test/suite/rpl/t/rpl_semi_sync_skip_repl.test
+++ b/mysql-test/suite/rpl/t/rpl_semi_sync_skip_repl.test
@@ -6,7 +6,6 @@
# lost such events.
# The test verifies the fixes' correctness simulating the 2GB offset.
-source include/have_semisync.inc;
source include/not_embedded.inc;
source include/have_innodb.inc;
source include/have_debug.inc;
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_uninstall_plugin.test b/mysql-test/suite/rpl/t/rpl_semi_sync_uninstall_plugin.test
deleted file mode 100644
index 360706922ea..00000000000
--- a/mysql-test/suite/rpl/t/rpl_semi_sync_uninstall_plugin.test
+++ /dev/null
@@ -1,132 +0,0 @@
-###############################################################################
-# Bug#17638477 UNINSTALL AND INSTALL SEMI-SYNC PLUGIN CAUSES SLAVES TO BREAK
-# Problem: Uninstallation of Semi sync plugin should be blocked when it is
-# in use.
-# Test case: Uninstallation of semi sync should be allowed
-# On Master:
-# 1) When there is no dump thread
-# 2) When there are no semi sync slaves (i.e., async replication).
-# On Slave:
-# 1) When there is no I/O thread
-# 2) When there are no semi sync enabled I/O thread (i.e.,async replication).
-###############################################################################
-
---source include/have_semisync_plugin.inc
---source include/not_embedded.inc
---source include/have_binlog_format_statement.inc
---source include/master-slave.inc
-
-call mtr.add_suppression("Read semi-sync reply network error");
-call mtr.add_suppression("Timeout waiting for reply of binlog");
-
-###############################################################################
-# Case 1: Uninstallation of semi sync plugins should be allowed when it is
-# not in use i.e., when asynchronous replication is active.
-###############################################################################
-# Step 1.1: Install semi sync master plugin on master
-INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master';
-
-# Step 1.2: Install semi sync slave plugin on slave
---connection slave
-INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave';
-
-# Step 1.3: Uninstallation of semisync plugin on master and slave should be
-# allowed at this state as there is no semi sync replication enabled between
-# master and slave.
-UNINSTALL PLUGIN rpl_semi_sync_slave;
---connection master
-UNINSTALL PLUGIN rpl_semi_sync_master;
-
-# Step 1.4: Check that replication is working fine at the end of the test case.
-CREATE TABLE t1(i int);
-INSERT INTO t1 values (1);
-DROP TABLE t1;
---sync_slave_with_master
-
-###############################################################################
-# Case 2: Uninstallation of semi sync plugins should be disallowed
-# when it is in use i.e., when semi sync replication is active
-###############################################################################
-# Step 2.1: Install and enable semi sync replication between master and slave
---source include/install_semisync.inc
-
-# Step 2.2: Check that rpl_semi_sync_slave uninstallation on Slave is not
-# possible at this state
---connection slave
-show global status like "Slave%_running";
-
-UNINSTALL PLUGIN rpl_semi_sync_slave;
-select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'rpl_%';
-
-# Step 2.3: Check that rpl_semi_sync_master uninstallation on Master is not
-# possible at this state
---connection master
-
-# The following is to catch errors if the next uninstall plugin would succeed
-show global status like "Slave%_connect%";
-
-UNINSTALL PLUGIN rpl_semi_sync_master;
-select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'rpl_%';
-
-# Step 2.4: Check that replication is working fine at the end of the test case.
-CREATE TABLE t1(i int);
-INSERT INTO t1 values (2);
-DROP TABLE t1;
---sync_slave_with_master
-
-# Step 2.5: Make sure rpl_semi_sync_master_status on Master and
-# rpl_semi_sync_slave_staus on Slave are ON
-show status like "Rpl_semi_sync_slave_status";
-
-###############################################################################
-# Case 3: Uninstallation of semi sync plugin should be disallowed when there
-# are semi sync slaves even though rpl_semi_sync_master_enabled= OFF;.
-###############################################################################
-# Step 3.1: Disable semi sync on master
---connection master
-show status like "Rpl_semi_sync_master_status";
-
-# Step 3.2: Check that still Rpl_semi_sync_master_clients is 1
-show status like "Rpl_semi_sync_master_clients";
-
-# Step 3.3: Since Rpl_semi_sync_master_clients is 1, uninstallation of
-# rpl_semi_sync_master should be disallowed.
-select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'rpl_%';
-
-###############################################################################
-# Case 4: Uninstallation of semi sync plugin should be allowed when it is not
-# in use. Same as Case 1 but this case is to check the case after enabling and
-# disabling semi sync replication.
-###############################################################################
-
-# Step 4.1: Stop IO thread on slave.
---connection slave
---source include/stop_slave.inc
-
-# Step 4.2: Disable semi sync on slave.
-select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'rpl_%';
-
---connection master
-# Send something to the slave so that the master would notice that nobody's listening.
-create table t2 (a int); drop table t2;
-# and wait for plugin to be unloaded automatically
-let $wait_condition=select count(*) = 0 from information_schema.plugins where plugin_name like 'rpl_%';
---source include/wait_condition.inc
-
---connection slave
-
-# Step 4.3: Start IO thread on slave.
---source include/start_slave.inc
-
-# Step 4.4: Uninstall semi sync plugin, it should be successful now.
-select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'rpl_%';
-
-# Step 4.7: Check that replication is working fine at the end of the test case
---connection master
-CREATE TABLE t1(i int);
-INSERT INTO t1 values (3);
-DROP TABLE t1;
---sync_slave_with_master
-
-# Cleanup
-source include/rpl_end.inc;
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_wait_point.test b/mysql-test/suite/rpl/t/rpl_semi_sync_wait_point.test
index 6e4dc456a27..dcff4030fdb 100644
--- a/mysql-test/suite/rpl/t/rpl_semi_sync_wait_point.test
+++ b/mysql-test/suite/rpl/t/rpl_semi_sync_wait_point.test
@@ -1,4 +1,3 @@
-source include/have_semisync.inc;
source include/not_embedded.inc;
source include/have_innodb.inc;
diff --git a/mysql-test/suite/rpl/t/rpl_semisync_ali_issues-master.opt b/mysql-test/suite/rpl/t/rpl_semisync_ali_issues-master.opt
new file mode 100644
index 00000000000..2672d4ff35e
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_semisync_ali_issues-master.opt
@@ -0,0 +1 @@
+--binlog_format=row
diff --git a/mysql-test/suite/rpl/t/rpl_semisync_ali_issues-slave.opt b/mysql-test/suite/rpl/t/rpl_semisync_ali_issues-slave.opt
new file mode 100644
index 00000000000..2672d4ff35e
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_semisync_ali_issues-slave.opt
@@ -0,0 +1 @@
+--binlog_format=row
diff --git a/mysql-test/suite/rpl/t/rpl_semisync_ali_issues.test b/mysql-test/suite/rpl/t/rpl_semisync_ali_issues.test
new file mode 100644
index 00000000000..52cd9e31753
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_semisync_ali_issues.test
@@ -0,0 +1,410 @@
+--source include/have_innodb.inc
+--source include/have_debug_sync.inc
+--source include/master-slave.inc
+
+CALL mtr.add_suppression("Failed to start semi-sync ACK receiver thread.*");
+CALL mtr.add_suppression("Failed to register slave to semi-sync ACK receiver thread.*");
+CALL mtr.add_suppression("Failed to stop ack receiver thread on pthread_join.*");
+CALL mtr.add_suppression("Got an error reading communication packets:*");
+CALL mtr.add_suppression("Timeout waiting for reply of binlog*");
+CALL mtr.add_suppression("slave_read_sync_header*");
+CALL mtr.add_suppression("Missing magic number for semi-sync*");
+CALL mtr.add_suppression("Got timeout reading communication packets*");
+CALL mtr.add_suppression("Failed to call*");
+CALL mtr.add_suppression("Execution failed on master*");
+CALL mtr.add_suppression("Failed on request_dump()*");
+CALL mtr.add_suppression("Semi-sync master failed on*");
+CALL mtr.add_suppression("Master command COM_BINLOG_DUMP failed*");
+CALL mtr.add_suppression("on master failed*");
+CALL mtr.add_suppression("Master server does not support semi-sync*");
+CALL mtr.add_suppression("Semi-sync slave net_flush*");
+CALL mtr.add_suppression("Failed to flush master info*");
+CALL mtr.add_suppression("Request to stop slave SQL Thread received while apply*");
+
+connection master;
+echo [ enable semi-sync on master ];
+set global rpl_semi_sync_master_enabled = 1;
+show variables like 'rpl_semi_sync_master_enabled';
+
+connection slave;
+echo [ enable semi-sync on slave ];
+stop slave;
+set global rpl_semi_sync_slave_enabled = 1;
+start slave;
+show status like 'rpl_semi_sync_slave%';
+
+connection master;
+CREATE TABLE t1(a INT) ENGINE=InnoDB;
+sync_slave_with_master;
+
+connection master;
+connect(con1,localhost,root,,);
+connect(con2,localhost,root,,);
+connect(con3,localhost,root,,);
+
+show status like 'Rpl_semi_sync_master_clients';
+show status like "rpl_semi_sync_master_yes_tx";
+
+--echo #########################################
+--echo # Test rpl_semi_sync_master_wait_point #
+--echo #########################################
+--echo # Test after_sync and after_commit first.
+
+--echo #Test after_sync
+connection con1;
+# Let's set a very large timeout value for testing purpose.
+SET GLOBAL rpl_semi_sync_master_timeout = 1000000;
+SET GLOBAL rpl_semi_sync_master_wait_point= 'AFTER_SYNC';
+SET DEBUG_SYNC= "commit_before_get_LOCK_commit_ordered SIGNAL after_sync_done WAIT_FOR end";
+--send INSERT into t1 values (1);
+
+connection con2;
+SET DEBUG_SYNC= "now WAIT_FOR after_sync_done";
+
+sync_slave_with_master;
+--echo #slave can see record (1) after sync slave with master
+select * from t1;
+
+connection con2;
+--echo #con2 shouldn't see record (1)
+select * from t1;
+SET DEBUG_SYNC= "now SIGNAL end";
+
+connection con1;
+reap;
+
+connection con1;
+select * from t1;
+truncate table t1;
+
+sync_slave_with_master;
+
+# Test more threads in one semisync queue
+connection con1;
+SET DEBUG_SYNC= 'reset';
+SET DEBUG_SYNC= "commit_before_get_LOCK_log SIGNAL before_fetch_done WAIT_FOR more_queue";
+#SET DEBUG_SYNC= "before_semisync_fetch SIGNAL before_fetch_done WAIT_FOR more_queue";
+--send INSERT into t1 VALUES (1);
+
+connection con2;
+SET DEBUG_SYNC= "now WAIT_FOR before_fetch_done";
+SET DEBUG_SYNC= "after_semisync_queue SIGNAL more_queue";
+INSERT INTO t1 VALUES (2);
+
+connection con1;
+reap;
+
+# Test more threads in one semisync queue, but disable semisync before
+# waiting.
+connection con1;
+SET DEBUG_SYNC= 'reset';
+SET DEBUG_SYNC= "commit_before_get_LOCK_log SIGNAL before_fetch_done WAIT_FOR disable_semisync";
+#SET DEBUG_SYNC= "before_semisync_fetch SIGNAL before_fetch_done WAIT_FOR more_queue";
+#SET DEBUG_SYNC= "before_semisync_fetch SIGNAL before_fetch_done WAIT_FOR disable_semisync";
+--send INSERT into t1 VALUES (3);
+
+connection con2;
+SET DEBUG_SYNC= "now WAIT_FOR before_fetch_done";
+SET GLOBAL rpl_semi_sync_master_enabled= 0;
+SET DEBUG_SYNC= "now SIGNAL disable_semisync";
+
+connection con1;
+reap;
+SET GLOBAL rpl_semi_sync_master_enabled = 1;
+show status like 'Rpl_semi_sync_master_clients';
+
+--echo #Test after_commit
+connection con1;
+SET GLOBAL rpl_semi_sync_master_wait_point= 'AFTER_COMMIT';
+SET DEBUG_SYNC= "after_group_after_commit SIGNAL after_commit_done WAIT_FOR end";
+--send INSERT into t1 values (4);
+
+connection con2;
+SET DEBUG_SYNC= "now WAIT_FOR after_commit_done";
+
+sync_slave_with_master;
+select * from t1;
+
+connection con2;
+select * from t1;
+SET DEBUG_SYNC= "now SIGNAL end";
+
+connection con1;
+reap;
+
+connection con1;
+select * from t1;
+truncate table t1;
+
+--echo #######################################################
+--echo # Test some other options in order to cover the patch #
+--echo #######################################################
+connection slave;
+--echo # Test rpl_semi_sync_slave_trace_level
+SET GLOBAL rpl_semi_sync_slave_trace_level= 1;
+SET GLOBAL rpl_semi_sync_slave_trace_level= 16;
+SET GLOBAL rpl_semi_sync_slave_trace_level= 64;
+SET GLOBAL rpl_semi_sync_slave_trace_level= 128;
+SET GLOBAL rpl_semi_sync_slave_trace_level= 32;
+connection master;
+--echo # Test rpl_semi_sync_master_trace_level
+SET GLOBAL rpl_semi_sync_master_trace_level= 1;
+SET GLOBAL rpl_semi_sync_master_trace_level= 16;
+SET GLOBAL rpl_semi_sync_master_trace_level= 64;
+SET GLOBAL rpl_semi_sync_master_trace_level= 128;
+SET GLOBAL rpl_semi_sync_master_trace_level= 32;
+--echo # Test rpl_semi_sync_master_timeout
+SET GLOBAL rpl_semi_sync_master_timeout= 1000;
+SET GLOBAL rpl_semi_sync_master_timeout= 10000;
+SET GLOBAL rpl_semi_sync_master_timeout = 1000000;
+
+--echo # Test rpl_semi_sync_slave_kill_conn_timeout
+SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 10;
+SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 20;
+SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 60;
+SET GLOBAL rpl_semi_sync_slave_kill_conn_timeout= 5;
+
+--echo ############################################
+--echo # Test rpl_semi_sync_master_wait_no_slave #
+--echo ############################################
+SET GLOBAL rpl_semi_sync_master_wait_no_slave = 1;
+connection slave;
+STOP SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_stop.inc
+
+connection con1;
+SET GLOBAL rpl_semi_sync_master_timeout = 1000;
+--send INSERT INTO t1 values (1);
+
+connection con1;
+reap;
+echo # Rpl_semi_sync_master_no_tx should be non-zero
+SHOW STATUS LIKE 'Rpl_semi_sync_master_no_tx';
+
+# test rpl_semi_sync_master_wait_no_slave = 0
+connection slave;
+START SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_start.inc
+
+connection con1;
+INSERT INTO t1 values (2);
+sync_slave_with_master;
+connection con1;
+show status like 'Rpl_semi_sync_master_clients';
+show status like 'Rpl_semi_sync_master_status';
+
+connection slave;
+STOP SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_stop.inc
+
+connection con1;
+SET GLOBAL rpl_semi_sync_master_wait_no_slave= 0;
+SET GLOBAL rpl_semi_sync_master_timeout= 1000000000;
+INSERT INTO t1 values (3);
+show status like 'Rpl_semi_sync_master_clients';
+show status like 'Rpl_semi_sync_master_status';
+
+
+connection slave;
+START SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_start.inc
+
+connection con1;
+--let $status_var= Rpl_semi_sync_master_status
+--let $status_var_value=ON
+--source include/wait_for_status_var.inc
+
+SET GLOBAL rpl_semi_sync_master_timeout= 10000000;
+SET GLOBAL rpl_semi_sync_master_wait_no_slave= 1;
+INSERT INTO t1 values (4);
+sync_slave_with_master;
+
+connection con1;
+show status like 'Rpl_semi_sync_master_status';
+show status like 'Rpl_semi_sync_master_clients';
+
+--echo ##########################################
+--echo # Test rpl_semi_sync_slave_delay_master #
+--echo ##########################################
+
+connection slave;
+SET GLOBAL rpl_semi_sync_slave_delay_master= 1;
+START SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_start.inc
+
+connection con1;
+INSERT INTO t1 values (3);
+--source include/sync_slave_io_with_master.inc
+
+connection con1;
+show status like 'Rpl_semi_sync_master_clients';
+show status like 'Rpl_semi_sync_master_status';
+
+sync_slave_with_master;
+
+connection slave;
+select * from t1 order by a;
+connection con1;
+select * from t1 order by a;
+
+connection slave;
+SET GLOBAL rpl_semi_sync_slave_delay_master = 0;
+STOP SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_stop.inc
+START SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_start.inc
+
+--echo ##########################################################
+--echo # Test rpl_semi_sync_master_enabled and new ACK thread #
+--echo #########################################################
+connection con1;
+SET GLOBAL rpl_semi_sync_master_enabled = 0;
+show status like 'Rpl_semi_sync_master_clients';
+INSERT INTO t1 VALUES (1);
+SET GLOBAL rpl_semi_sync_master_enabled = 1;
+INSERT INTO t1 VALUES (2);
+show status like 'Rpl_semi_sync_master_clients';
+
+--echo # Test failure of select error .
+SET GLOBAL debug = 'd,rpl_semisync_simulate_select_error';
+# It can still receive ACK from semi-sync slave
+INSERT INTO t1 VALUES(3);
+sync_slave_with_master;
+
+connection con1;
+--echo # Test failure of pthread_create
+SET GLOBAL rpl_semi_sync_master_enabled = 0;
+SET GLOBAL debug = 'd,rpl_semisync_simulate_create_thread_failure';
+SET GLOBAL rpl_semi_sync_master_enabled= ON;
+
+--let $wait_condition= SELECT @@global.rpl_semi_sync_master_enabled = 0
+--source include/wait_condition.inc
+
+# Todo: implement the thread join failure simulation
+--echo # Test failure of pthread_join
+#SET GLOBAL DEBUG = 'd,rpl_semisync_simulate_thread_join_failure';
+#SET GLOBAL rpl_semi_sync_master_enabled= ON;
+#
+#--let $wait_condition= SELECT @@global.rpl_semi_sync_master_enabled = 0
+#--source include/wait_condition.inc
+SET GLOBAL rpl_semi_sync_master_enabled= OFF;
+
+--echo #
+--echo # Failure on registering semisync slave
+--echo #
+SET GLOBAL debug= 'd,rpl_semisync_simulate_add_slave_failure';
+SET GLOBAL rpl_semi_sync_master_enabled= ON;
+
+connection slave;
+STOP SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_stop.inc
+START SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_start.inc
+
+connection con1;
+#--echo # Should be Zero.
+# Todo: implement the add_slave_failure simulation. Meanwhile
+# the status will be 1.
+# show status like 'Rpl_semi_sync_master_clients';
+SET GLOBAL debug='';
+
+--let $status_var= Rpl_semi_sync_master_clients
+--let $status_var_value= 1
+--let $status_type= GLOBAL
+--source include/wait_for_status_var.inc
+
+connection slave;
+--disable_warnings
+START SLAVE IO_THREAD;
+--source include/wait_for_slave_io_to_start.inc
+--enable_warnings
+
+connection con1;
+sync_slave_with_master;
+
+show status like 'Rpl_semi_sync_master_clients';
+
+--echo ##################################################################
+--echo # Test fixing of BUG#70669 #
+--echo #SLAVE CAN'T CONTINUE REPLICATION AFTER MASTER'S CRASH RECOVERY #
+--echo #################################################################
+connection con1;
+SET GLOBAL sync_binlog = 1;
+CREATE TABLE t2 (c1 INT);
+sync_slave_with_master;
+
+connection con1;
+# Block the session before its events are synced to disk
+#SET DEBUG_SYNC = 'before_sync_binlog_file SIGNAL before_sync_done WAIT_FOR continue';
+send INSERT INTO t2 values (1);
+
+connection slave;
+--let $table= t2
+--let $count= 1
+--source include/wait_until_rows_count.inc
+
+connection con2;
+#SET DEBUG_SYNC= "now WAIT_FOR before_sync_done";
+#SET DEBUG_SYNC = "now SIGNAL continue";
+
+connection con1;
+reap;
+
+sync_slave_with_master;
+show tables like 't2';
+select * from t2;
+
+connection con1;
+#SET DEBUG_SYNC= "before_update_pos SIGNAL leader_ready WAIT_FOR follower_ready";
+send INSERT INTO t2 VALUES (2);
+
+connection con2;
+#SET DEBUG_SYNC= "now WAIT_FOR leader_ready";
+#SET DEBUG_SYNC= "after_sync_queue SIGNAL follower_ready";
+send INSERT INTO t2 VALUES (3);
+
+connection con1;
+reap;
+connection con2;
+reap;
+
+connection con1;
+#SET DEBUG_SYNC = 'before_sync_binlog_file SIGNAL before_sync_done WAIT_FOR continue';
+SET GLOBAL sync_binlog = 0;
+
+# Todo: fix this simulation and implement the intended sync protocol.
+# As a workaround the DROP sender explicitly okays
+# which naturally increments the binlog position.
+#send DROP TABLE t2;
+DROP TABLE t2;
+
+connection con2;
+#SET DEBUG_SYNC= "now WAIT_FOR before_sync_done";
+
+sync_slave_with_master;
+
+# t2 should be dropped
+show tables like 't2';
+
+connection con2;
+#SET DEBUG_SYNC = "now SIGNAL continue";
+
+# This block is commented out on purpose. See the todo/workaround above.
+#connection con1;
+#reap;
+
+
+--echo #cleanup
+connection master;
+SET DEBUG_SYNC= 'reset';
+disconnect con1;
+disconnect con2;
+disconnect con3;
+SET GLOBAL rpl_semi_sync_master_timeout= 10000;
+SET GLOBAL rpl_semi_sync_master_enabled = 0;
+DROP TABLE t1;
+connection slave;
+SET GLOBAL rpl_semi_sync_slave_enabled = 0;
+stop slave;start slave;
+
+--source include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_stop_slave.test b/mysql-test/suite/rpl/t/rpl_stop_slave.test
index 5071fd348fb..c650991a42b 100644
--- a/mysql-test/suite/rpl/t/rpl_stop_slave.test
+++ b/mysql-test/suite/rpl/t/rpl_stop_slave.test
@@ -22,8 +22,8 @@ source include/stop_slave.inc;
--echo # Suspend the INSERT statement in current transaction on SQL thread.
--echo # It guarantees that SQL thread is applying the transaction when
--echo # STOP SLAVE command launchs.
-let $debug_save= `SELECT @@GLOBAL.debug`;
-SET GLOBAL debug_dbug= '+d,after_mysql_insert,*';
+set @old_debug=@@global.debug;
+set global debug_dbug= '+d,after_mysql_insert';
source include/start_slave.inc;
--echo
@@ -45,7 +45,7 @@ source extra/rpl_tests/rpl_stop_slave.test;
--echo
--echo # Test end
--disable_query_log
-eval SET GLOBAL debug_dbug= '$debug_save';
+set global debug_dbug= @old_debug;
--enable_query_log
source include/restart_slave_sql.inc;
@@ -79,8 +79,8 @@ connection master;
# make sure that there are no zombie threads
--source include/stop_dump_threads.inc
-let $debug_save= `SELECT @@GLOBAL.debug`;
-SET GLOBAL debug_dbug= '+d,dump_thread_wait_before_send_xid,*';
+set @old_debug=@@global.debug;
+set global debug_dbug= '+d,dump_thread_wait_before_send_xid';
connection slave;
--source include/start_slave.inc
@@ -127,7 +127,7 @@ reap;
# that would set the dump thread to wait
connection master;
--disable_query_log
-eval SET GLOBAL debug_dbug= '$debug_save';
+set global debug_dbug= @old_debug;
--enable_query_log
# make sure that there are no zombie threads
--source include/stop_dump_threads.inc
diff --git a/mysql-test/suite/rpl/t/rpl_sync-slave.opt b/mysql-test/suite/rpl/t/rpl_sync-slave.opt
index 43dc2062ff0..fc56065731c 100644
--- a/mysql-test/suite/rpl/t/rpl_sync-slave.opt
+++ b/mysql-test/suite/rpl/t/rpl_sync-slave.opt
@@ -1,2 +1,2 @@
---sync-relay-log-info=1 --relay-log-recovery=1 --loose-innodb_file_format_check=1 --default-storage-engine=MyISAM --loose-innodb-file-per-table=0
+--sync-relay-log-info=1 --relay-log-recovery=1 --default-storage-engine=MyISAM --loose-innodb-file-per-table=0
--skip-core-file
diff --git a/mysql-test/suite/rpl/t/rpl_update.test b/mysql-test/suite/rpl/t/rpl_update.test
new file mode 100644
index 00000000000..b38078770a5
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_update.test
@@ -0,0 +1,15 @@
+source include/master-slave.inc;
+
+#
+# MDEV-13417 UPDATE produces wrong values if an updated column is later used as an update source
+#
+set sql_mode=simultaneous_assignment;
+create table t1 (a int, b int);
+insert into t1 values(1, 2);
+update t1 set a=b, b=a;
+select * from t1;
+sync_slave_with_master;
+select * from t1;
+connection master;
+drop table t1;
+source include/rpl_end.inc;
diff --git a/mysql-test/suite/rpl/t/semisync_future-7591.test b/mysql-test/suite/rpl/t/semisync_future-7591.test
index daf3d2f8571..866041d2579 100644
--- a/mysql-test/suite/rpl/t/semisync_future-7591.test
+++ b/mysql-test/suite/rpl/t/semisync_future-7591.test
@@ -1,4 +1,3 @@
---source include/have_semisync.inc
--source include/master-slave.inc
call mtr.add_suppression("Timeout waiting for reply of binlog*");
diff --git a/mysql-test/suite/rpl/t/semisync_memleak_4066.test b/mysql-test/suite/rpl/t/semisync_memleak_4066.test
index f888f764b43..e88e2335696 100644
--- a/mysql-test/suite/rpl/t/semisync_memleak_4066.test
+++ b/mysql-test/suite/rpl/t/semisync_memleak_4066.test
@@ -1,7 +1,6 @@
#
# MDEV-4066 semisync_master + temporary tables causes memory leaks
#
-source include/have_semisync.inc;
source include/have_binlog_format_row.inc;
source include/master-slave.inc;
diff --git a/mysql-test/suite/rpl/t/show_status_stop_slave_race-7126.test b/mysql-test/suite/rpl/t/show_status_stop_slave_race-7126.test
index 88d7076b1e4..06a9e8ad75b 100644
--- a/mysql-test/suite/rpl/t/show_status_stop_slave_race-7126.test
+++ b/mysql-test/suite/rpl/t/show_status_stop_slave_race-7126.test
@@ -15,6 +15,7 @@ call mtr.add_suppression("Master is configured to log replication events");
# All done.
--connection slave
+--source include/wait_for_slave_to_stop.inc
start slave;
--connection master
diff --git a/mysql-test/suite/sql_sequence/alter_notembedded.result b/mysql-test/suite/sql_sequence/alter_notembedded.result
new file mode 100644
index 00000000000..25b33dd742b
--- /dev/null
+++ b/mysql-test/suite/sql_sequence/alter_notembedded.result
@@ -0,0 +1,38 @@
+#
+# GRANT
+#
+create database s_db;
+create sequence s_db.s1;
+grant select on s_db.s1 to normal_1@'%' identified by 'pass';
+connect m_normal_1, localhost, normal_1, pass, s_db;
+select * from s1;
+next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count
+1 1 9223372036854775806 1 1 1000 0 0
+select nextval(s1);
+ERROR 42000: INSERT command denied to user 'normal_1'@'localhost' for table 's1'
+show create sequence s1;
+Table Create Table
+s1 CREATE SEQUENCE `s1` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=MyISAM
+alter sequence s1 restart 50;
+ERROR 42000: ALTER command denied to user 'normal_1'@'localhost' for table 's1'
+connection default;
+grant insert on s_db.s1 to normal_1@'%';
+connection m_normal_1;
+select nextval(s1);
+nextval(s1)
+1
+alter sequence s1 restart 50;
+ERROR 42000: ALTER command denied to user 'normal_1'@'localhost' for table 's1'
+connection default;
+grant alter on s_db.s1 to normal_1@'%';
+connection m_normal_1;
+alter sequence s1 restart 50;
+select nextval(s1);
+nextval(s1)
+50
+drop sequence s1;
+ERROR 42000: DROP command denied to user 'normal_1'@'localhost' for table 's1'
+connection default;
+disconnect m_normal_1;
+drop database s_db;
+drop user normal_1@'%';
diff --git a/mysql-test/suite/sql_sequence/alter_notembedded.test b/mysql-test/suite/sql_sequence/alter_notembedded.test
new file mode 100644
index 00000000000..a7c37b53473
--- /dev/null
+++ b/mysql-test/suite/sql_sequence/alter_notembedded.test
@@ -0,0 +1,37 @@
+--source include/have_sequence.inc
+--source include/have_innodb.inc
+--source include/not_embedded.inc
+
+--echo #
+--echo # GRANT
+--echo #
+
+create database s_db;
+create sequence s_db.s1;
+grant select on s_db.s1 to normal_1@'%' identified by 'pass';
+
+connect(m_normal_1, localhost, normal_1, pass, s_db);
+select * from s1;
+--error ER_TABLEACCESS_DENIED_ERROR
+select nextval(s1);
+show create sequence s1;
+--error ER_TABLEACCESS_DENIED_ERROR
+alter sequence s1 restart 50;
+connection default;
+grant insert on s_db.s1 to normal_1@'%';
+connection m_normal_1;
+select nextval(s1);
+--error ER_TABLEACCESS_DENIED_ERROR
+alter sequence s1 restart 50;
+connection default;
+grant alter on s_db.s1 to normal_1@'%';
+connection m_normal_1;
+alter sequence s1 restart 50;
+select nextval(s1);
+--error ER_TABLEACCESS_DENIED_ERROR
+drop sequence s1;
+
+connection default;
+disconnect m_normal_1;
+drop database s_db;
+drop user normal_1@'%';
diff --git a/mysql-test/suite/sql_sequence/default.result b/mysql-test/suite/sql_sequence/default.result
new file mode 100644
index 00000000000..37d536d9020
--- /dev/null
+++ b/mysql-test/suite/sql_sequence/default.result
@@ -0,0 +1,187 @@
+drop table if exists t1,s1,s2;
+Warnings:
+Note 1051 Unknown table 'test.t1'
+Note 1051 Unknown table 'test.s1'
+Note 1051 Unknown table 'test.s2'
+drop view if exists v1;
+Warnings:
+Note 4092 Unknown VIEW: 'test.v1'
+#
+# Test DEFAULT
+#
+CREATE SEQUENCE s1 nocache engine=myisam;
+CREATE table t1 (a int default next value for s1, b int);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT nextval(`test`.`s1`),
+ `b` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+insert into t1 SET b=1;
+insert into t1 SET b=2;
+insert into t1 (b) values (3),(4);
+select * from t1;
+a b
+1 1
+2 2
+3 3
+4 4
+update t1 set b=5 where a=1;
+delete from t1 where b=1;
+select * from t1;
+a b
+1 5
+2 2
+3 3
+4 4
+#
+# Executing DEFAULT function
+#
+INSERT into t1 values(default(a),10);
+INSERT into t1 values(default(a),default(a));
+update t1 set a=default(a), b=12 where b=2;
+select * from t1;
+a b
+1 5
+8 12
+3 3
+4 4
+5 10
+6 7
+select default(a), a, b from t1;
+default(a) a b
+9 1 5
+10 8 12
+11 3 3
+12 4 4
+13 5 10
+14 6 7
+select * from s1;
+next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count
+15 1 9223372036854775806 1 1 0 0 0
+select * from t1 where default(a) > 0;
+a b
+1 5
+8 12
+3 3
+4 4
+5 10
+6 7
+select * from s1;
+next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count
+16 1 9223372036854775806 1 1 0 0 0
+#
+# View
+#
+create view v1 as select * from t1;
+insert into v1 set b=20;
+select * from v1;
+a b
+1 5
+8 12
+3 3
+4 4
+5 10
+6 7
+16 20
+drop view v1;
+#
+# Alter table
+#
+CREATE SEQUENCE s2 nocache engine=myisam;
+alter table t1 add column c int default next value for s2, add column d int default previous value for s2;
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT nextval(`test`.`s1`),
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT nextval(`test`.`s2`),
+ `d` int(11) DEFAULT lastval(`test`.`s2`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+select * from t1;
+a b c d
+1 5 1 1
+8 12 2 2
+3 3 3 3
+4 4 4 4
+5 10 5 5
+6 7 6 6
+16 20 7 7
+drop sequence s2;
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT nextval(`test`.`s1`),
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT nextval(`test`.`s2`),
+ `d` int(11) DEFAULT lastval(`test`.`s2`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+drop table t1;
+drop sequence s1;
+#
+# LOCK TABLES
+#
+CREATE SEQUENCE s1 nocache engine=myisam;
+CREATE table t1 (a int default next value for s1, b int);
+insert into t1 (b) values (3),(4);
+LOCK TABLE t1 WRITE;
+insert into t1 (b) values (5),(6);
+ERROR HY000: Table 's1' was not locked with LOCK TABLES
+UNLOCK TABLES;
+LOCK TABLE t1 WRITE, s1 WRITE;
+insert into t1 (b) values (5),(6);
+select default(a) from t1;
+default(a)
+5
+6
+7
+8
+UNLOCK TABLES;
+LOCK TABLE t1 READ;
+insert into t1 (b) values (5),(6);
+ERROR HY000: Table 's1' was not locked with LOCK TABLES
+select default(a) from t1;
+ERROR HY000: Table 's1' was not locked with LOCK TABLES
+UNLOCK TABLES;
+LOCK TABLE t1 READ, s1 read;
+insert into t1 (b) values (5),(6);
+ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
+select default(a) from t1;
+ERROR HY000: Table 's1' was locked with a READ lock and can't be updated
+UNLOCK TABLES;
+drop table t1;
+drop sequence s1;
+#
+# Testing prepared statements
+#
+CREATE or replace SEQUENCE s1 nocache engine=myisam;
+CREATE or replace table t1 (a int default next value for s1, b int);
+PREPARE stmt FROM "insert into t1 (b) values(?)";
+execute stmt using 1;
+execute stmt using 2;
+execute stmt using 3;
+select * from t1;
+a b
+1 1
+2 2
+3 3
+drop table t1,s1;
+deallocate prepare stmt;
+#
+# Wrong usage of default
+#
+CREATE table t1 (a int default next value for s1, b int);
+ERROR 42S02: Table 'test.s1' doesn't exist
+CREATE SEQUENCE s1 nocache engine=myisam;
+CREATE table t1 (a int default next value for s1, b int);
+DROP SEQUENCE s1;
+insert into t1 (b) values (5),(6);
+ERROR 42S02: Table 'test.s1' doesn't exist
+ALTER TABLE t1 add column c int;
+ERROR 42S02: Table 'test.s1' doesn't exist
+CREATE SEQUENCE s1 nocache engine=myisam;
+ALTER TABLE t1 add column c int;
+ALTER TABLE t1 add column d int default next value for s_not_exits;
+ERROR 42S02: Table 'test.s_not_exits' doesn't exist
+drop table t1;
+drop sequence s1;
diff --git a/mysql-test/suite/sql_sequence/default.test b/mysql-test/suite/sql_sequence/default.test
new file mode 100644
index 00000000000..017165c1a80
--- /dev/null
+++ b/mysql-test/suite/sql_sequence/default.test
@@ -0,0 +1,125 @@
+#
+# Testing sequence in DEFAULT clause
+#
+--source include/have_sequence.inc
+
+drop table if exists t1,s1,s2;
+drop view if exists v1;
+
+--echo #
+--echo # Test DEFAULT
+--echo #
+
+CREATE SEQUENCE s1 nocache engine=myisam;
+CREATE table t1 (a int default next value for s1, b int);
+show create table t1;
+insert into t1 SET b=1;
+insert into t1 SET b=2;
+insert into t1 (b) values (3),(4);
+select * from t1;
+update t1 set b=5 where a=1;
+delete from t1 where b=1;
+select * from t1;
+
+--echo #
+--echo # Executing DEFAULT function
+--echo #
+
+INSERT into t1 values(default(a),10);
+INSERT into t1 values(default(a),default(a));
+update t1 set a=default(a), b=12 where b=2;
+select * from t1;
+select default(a), a, b from t1;
+select * from s1;
+select * from t1 where default(a) > 0;
+select * from s1;
+
+--echo #
+--echo # View
+--echo #
+
+create view v1 as select * from t1;
+insert into v1 set b=20;
+select * from v1;
+drop view v1;
+
+--echo #
+--echo # Alter table
+--echo #
+
+CREATE SEQUENCE s2 nocache engine=myisam;
+alter table t1 add column c int default next value for s2, add column d int default previous value for s2;
+show create table t1;
+select * from t1;
+drop sequence s2;
+show create table t1;
+drop table t1;
+drop sequence s1;
+
+--echo #
+--echo # LOCK TABLES
+--echo #
+
+CREATE SEQUENCE s1 nocache engine=myisam;
+CREATE table t1 (a int default next value for s1, b int);
+insert into t1 (b) values (3),(4);
+LOCK TABLE t1 WRITE;
+--error ER_TABLE_NOT_LOCKED
+insert into t1 (b) values (5),(6);
+UNLOCK TABLES;
+
+LOCK TABLE t1 WRITE, s1 WRITE;
+insert into t1 (b) values (5),(6);
+select default(a) from t1;
+UNLOCK TABLES;
+
+LOCK TABLE t1 READ;
+--error ER_TABLE_NOT_LOCKED
+insert into t1 (b) values (5),(6);
+--error ER_TABLE_NOT_LOCKED
+select default(a) from t1;
+UNLOCK TABLES;
+
+LOCK TABLE t1 READ, s1 read;
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+insert into t1 (b) values (5),(6);
+--error ER_TABLE_NOT_LOCKED_FOR_WRITE
+select default(a) from t1;
+UNLOCK TABLES;
+
+drop table t1;
+drop sequence s1;
+
+--echo #
+--echo # Testing prepared statements
+--echo #
+
+CREATE or replace SEQUENCE s1 nocache engine=myisam;
+CREATE or replace table t1 (a int default next value for s1, b int);
+PREPARE stmt FROM "insert into t1 (b) values(?)";
+execute stmt using 1;
+execute stmt using 2;
+execute stmt using 3;
+select * from t1;
+drop table t1,s1;
+deallocate prepare stmt;
+
+--echo #
+--echo # Wrong usage of default
+--echo #
+
+--error ER_NO_SUCH_TABLE
+CREATE table t1 (a int default next value for s1, b int);
+CREATE SEQUENCE s1 nocache engine=myisam;
+CREATE table t1 (a int default next value for s1, b int);
+DROP SEQUENCE s1;
+--error ER_NO_SUCH_TABLE
+insert into t1 (b) values (5),(6);
+--error ER_NO_SUCH_TABLE
+ALTER TABLE t1 add column c int;
+CREATE SEQUENCE s1 nocache engine=myisam;
+ALTER TABLE t1 add column c int;
+--error ER_NO_SUCH_TABLE
+ALTER TABLE t1 add column d int default next value for s_not_exits;
+drop table t1;
+drop sequence s1;
diff --git a/mysql-test/suite/sql_sequence/gtid.result b/mysql-test/suite/sql_sequence/gtid.result
index 3b4e4de1b07..8ca9a397354 100644
--- a/mysql-test/suite/sql_sequence/gtid.result
+++ b/mysql-test/suite/sql_sequence/gtid.result
@@ -7,6 +7,7 @@ grant all on test.* to normal_2@'%' identified by 'pass';
grant all on s_db.* to normal_3@'%' identified by 'pass';
grant all on test.* to normal_4@'%' identified by 'pass';
grant select on test.* to normal_5@'%' identified by 'pass';
+flush status;
connection slave;
connect m_normal_1, 127.0.0.1, normal_1, pass, s_db, $MASTER_MYPORT;
connect m_normal_2, 127.0.0.1, normal_2, pass, test, $MASTER_MYPORT;
@@ -599,10 +600,9 @@ set binlog_format=statement
------------------------------------------
connection master;
set session binlog_format=statement;
-show session variables like '%binlog_format%';
-Variable_name Value
-binlog_format STATEMENT
-wsrep_forced_binlog_format NONE
+select @@session.binlog_format;
+@@session.binlog_format
+STATEMENT
create sequence s1 cache 2;
select next value for s1;
ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging.
diff --git a/mysql-test/suite/sql_sequence/gtid.test b/mysql-test/suite/sql_sequence/gtid.test
index 57cd5613cb4..63ed7ec5264 100644
--- a/mysql-test/suite/sql_sequence/gtid.test
+++ b/mysql-test/suite/sql_sequence/gtid.test
@@ -13,6 +13,7 @@ grant all on test.* to normal_2@'%' identified by 'pass';
grant all on s_db.* to normal_3@'%' identified by 'pass';
grant all on test.* to normal_4@'%' identified by 'pass';
grant select on test.* to normal_5@'%' identified by 'pass';
+flush status;
--sync_slave_with_master
@@ -502,7 +503,7 @@ drop sequence s1;
--echo ------------------------------------------
connection master;
set session binlog_format=statement;
-show session variables like '%binlog_format%';
+select @@session.binlog_format;
create sequence s1 cache 2;
--error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
select next value for s1;
diff --git a/mysql-test/suite/sql_sequence/other.result b/mysql-test/suite/sql_sequence/other.result
index 90e3a0737c6..86263eb4b70 100644
--- a/mysql-test/suite/sql_sequence/other.result
+++ b/mysql-test/suite/sql_sequence/other.result
@@ -50,9 +50,9 @@ ERROR HY000: Field 'maximum_value' doesn't have a default value
insert into s1 values (next value for s1, 1,9223372036854775806,1,1,1000,0,0);
ERROR HY000: Table 's1' is specified twice, both as a target for 'INSERT' and as a separate source for data
insert into s1 values (next value for s2, 1,9223372036854775806,1,1,1000,0,0);
-ERROR HY000: Wrong INSERT into a SEQUENCE. One can only do single table INSERT into a squence object (like with mysqldump). If you want to change the SEQUENCE, use ALTER SEQUENCE instead.
+ERROR HY000: Wrong INSERT into a SEQUENCE. One can only do single table INSERT into a sequence object (like with mysqldump). If you want to change the SEQUENCE, use ALTER SEQUENCE instead.
insert into s1 select * from s2;
-ERROR HY000: Wrong INSERT into a SEQUENCE. One can only do single table INSERT into a squence object (like with mysqldump). If you want to change the SEQUENCE, use ALTER SEQUENCE instead.
+ERROR HY000: Wrong INSERT into a SEQUENCE. One can only do single table INSERT into a sequence object (like with mysqldump). If you want to change the SEQUENCE, use ALTER SEQUENCE instead.
insert into s1 values(1000,9223372036854775806,1,1,1,1000,0,0);
ERROR HY000: Sequence 'test.s1' values are conflicting
insert into s1 values(0,9223372036854775806,1,1,1,1000,0,0);
@@ -93,7 +93,7 @@ Tables_in_test Table_type
s1 SEQUENCE
t1 BASE TABLE
v1 VIEW
-SELECT TABLE_TYPE,ENGINE FROM INFORMATION_SCHEMA.TABLES where table_schema="test";
+SELECT TABLE_TYPE,ENGINE FROM INFORMATION_SCHEMA.TABLES where table_schema="test" ORDER BY TABLE_NAME;
TABLE_TYPE ENGINE
SEQUENCE MyISAM
BASE TABLE MyISAM
@@ -162,3 +162,16 @@ select next value for s1;
ERROR HY000: Can't execute the query because you have a conflicting read lock
unlock tables;
drop sequence s1;
+#
+# Don't allow SQUENCE to be used with CHECK or virtual fields
+#
+CREATE SEQUENCE s1 nocache engine=myisam;
+CREATE table t1 (a int check (next value for s1 > 0));
+ERROR HY000: Function or expression 'nextval()' cannot be used in the CHECK clause of `a`
+CREATE table t1 (a int check (previous value for s1 > 0));
+ERROR HY000: Function or expression 'lastval()' cannot be used in the CHECK clause of `a`
+CREATE table t1 (a int check (setval(s1,10)));
+ERROR HY000: Function or expression 'setval()' cannot be used in the CHECK clause of `a`
+CREATE TABLE t1 (a int, b int as (next value for s1 > 0));
+ERROR HY000: Function or expression 'nextval()' cannot be used in the GENERATED ALWAYS AS clause of `b`
+drop sequence s1;
diff --git a/mysql-test/suite/sql_sequence/other.test b/mysql-test/suite/sql_sequence/other.test
index d816ec7c108..1903fc296f9 100644
--- a/mysql-test/suite/sql_sequence/other.test
+++ b/mysql-test/suite/sql_sequence/other.test
@@ -74,7 +74,7 @@ create sequence s1;
create table t1 (a int);
create view v1 as select * from s1;
show full tables;
-SELECT TABLE_TYPE,ENGINE FROM INFORMATION_SCHEMA.TABLES where table_schema="test";
+SELECT TABLE_TYPE,ENGINE FROM INFORMATION_SCHEMA.TABLES where table_schema="test" ORDER BY TABLE_NAME;
drop table t1,s1;
drop view v1;
@@ -131,3 +131,18 @@ create sequence s2;
select next value for s1;
unlock tables;
drop sequence s1;
+
+--echo #
+--echo # Don't allow SQUENCE to be used with CHECK or virtual fields
+--echo #
+
+CREATE SEQUENCE s1 nocache engine=myisam;
+--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
+CREATE table t1 (a int check (next value for s1 > 0));
+--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
+CREATE table t1 (a int check (previous value for s1 > 0));
+--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
+CREATE table t1 (a int check (setval(s1,10)));
+--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
+CREATE TABLE t1 (a int, b int as (next value for s1 > 0));
+drop sequence s1;
diff --git a/mysql-test/suite/sql_sequence/replication.result b/mysql-test/suite/sql_sequence/replication.result
index 5c7d45614e9..d5e5dcc75eb 100644
--- a/mysql-test/suite/sql_sequence/replication.result
+++ b/mysql-test/suite/sql_sequence/replication.result
@@ -696,10 +696,9 @@ set binlog_format=statement
------------------------------------------
connection master;
set session binlog_format=statement;
-show session variables like '%binlog_format%';
-Variable_name Value
-binlog_format STATEMENT
-wsrep_forced_binlog_format NONE
+select @@session.binlog_format;
+@@session.binlog_format
+STATEMENT
create sequence s1 cache 2;
select next value for s1;
ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging.
@@ -719,10 +718,9 @@ set binlog_format=mixed
------------------------------------------
connection master;
set session binlog_format=mixed;
-show session variables like '%binlog_format%';
-Variable_name Value
-binlog_format MIXED
-wsrep_forced_binlog_format NONE
+select @@session.binlog_format;
+@@session.binlog_format
+MIXED
create sequence s1 cache 2;
select next value for s1;
next value for s1
@@ -1058,6 +1056,35 @@ select next value for s1, cycle_count from s1;
next value for s1 cycle_count
9223372036854775805 3
drop sequence s1;
+###########################################
+test default()
+###########################################
+connection master;
+CREATE SEQUENCE s1 nocache engine=myisam;
+CREATE table t1 (a int default next value for s1, b int);
+insert into t1 (b) values (1),(2);
+select default(a) from t1;
+default(a)
+3
+4
+select * from t1;
+a b
+1 1
+2 2
+select * from s1;
+next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count
+5 1 9223372036854775806 1 1 0 0 0
+connection slave;
+connection s_normal_3;
+select * from t1;
+a b
+1 1
+2 2
+select * from s1;
+next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count
+5 1 9223372036854775806 1 1 0 0 0
+connection master;
+drop table t1,s1;
connection master;
drop database s_db;
drop user normal_1@'%';
diff --git a/mysql-test/suite/sql_sequence/replication.test b/mysql-test/suite/sql_sequence/replication.test
index 7bd6f00e2ed..e26fde8a329 100644
--- a/mysql-test/suite/sql_sequence/replication.test
+++ b/mysql-test/suite/sql_sequence/replication.test
@@ -582,7 +582,7 @@ drop sequence s1;
--echo ------------------------------------------
connection master;
set session binlog_format=statement;
-show session variables like '%binlog_format%';
+select @@session.binlog_format;
create sequence s1 cache 2;
--error ER_BINLOG_STMT_MODE_AND_ROW_ENGINE
select next value for s1;
@@ -603,7 +603,7 @@ drop sequence s1;
--echo ------------------------------------------
connection master;
set session binlog_format=mixed;
-show session variables like '%binlog_format%';
+select @@session.binlog_format;
create sequence s1 cache 2;
select next value for s1;
@@ -851,6 +851,28 @@ select next value for s1, cycle_count from s1;
select next value for s1, cycle_count from s1;
drop sequence s1;
+--echo ###########################################
+--echo test default()
+--echo ###########################################
+connection master;
+
+CREATE SEQUENCE s1 nocache engine=myisam;
+CREATE table t1 (a int default next value for s1, b int);
+insert into t1 (b) values (1),(2);
+select default(a) from t1;
+select * from t1;
+select * from s1;
+--sync_slave_with_master
+connection s_normal_3;
+select * from t1;
+select * from s1;
+connection master;
+drop table t1,s1;
+
+#
+# Cleanup
+#
+
connection master;
drop database s_db;
drop user normal_1@'%';
diff --git a/mysql-test/suite/sys_vars/disabled.def b/mysql-test/suite/sys_vars/disabled.def
index 872474cb1e9..24c3c7a26c6 100644
--- a/mysql-test/suite/sys_vars/disabled.def
+++ b/mysql-test/suite/sys_vars/disabled.def
@@ -10,6 +10,5 @@
#
##############################################################################
-innodb_flush_checkpoint_debug_basic: removed from XtraDB-26.0
all_vars: obsolete, see sysvars_* tests
innodb_buffer_pool_dump_pct_function: MDEV-11454 follow-up needed (unstable)
diff --git a/mysql-test/suite/sys_vars/inc/sysvars_server.inc b/mysql-test/suite/sys_vars/inc/sysvars_server.inc
index b5c800e858a..d14e905378c 100644
--- a/mysql-test/suite/sys_vars/inc/sysvars_server.inc
+++ b/mysql-test/suite/sys_vars/inc/sysvars_server.inc
@@ -19,6 +19,7 @@ select * from information_schema.system_variables
variable_name not like 'debug%' and
variable_name not like 'wsrep%' and
variable_name not in (
+ 'in_predicate_conversion_threshold',
'have_openssl',
'have_symlink',
'hostname',
@@ -26,6 +27,7 @@ select * from information_schema.system_variables
'lower_case_file_system',
'lower_case_table_names',
'open_files_limit',
+ 'plugin_maturity',
'rand_seed1',
'rand_seed2',
'system_time_zone',
diff --git a/mysql-test/suite/sys_vars/r/bind_address_basic.result b/mysql-test/suite/sys_vars/r/bind_address_basic.result
new file mode 100644
index 00000000000..f360433a90c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/bind_address_basic.result
@@ -0,0 +1,57 @@
+'#---------------------BS_STVARS_001_01----------------------#'
+SELECT COUNT(@@GLOBAL.bind_address);
+COUNT(@@GLOBAL.bind_address)
+1
+1 Expected
+'#---------------------BS_STVARS_001_02----------------------#'
+SET @@GLOBAL.bind_address=1;
+ERROR HY000: Variable 'bind_address' is a read only variable
+Expected error 'Read only variable'
+SELECT COUNT(@@GLOBAL.bind_address);
+COUNT(@@GLOBAL.bind_address)
+1
+1 Expected
+'#---------------------BS_STVARS_001_03----------------------#'
+SELECT VARIABLE_VALUE = ''
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='bind_address';
+VARIABLE_VALUE = ''
+0
+0 Expected
+SELECT COUNT(@@GLOBAL.bind_address);
+COUNT(@@GLOBAL.bind_address)
+1
+1 Expected
+SELECT COUNT(VARIABLE_VALUE)
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='bind_address';
+COUNT(VARIABLE_VALUE)
+1
+1 Expected
+'#---------------------BS_STVARS_001_04----------------------#'
+SELECT @@bind_address is NULL AND @@GLOBAL.bind_address is NULL;
+@@bind_address is NULL AND @@GLOBAL.bind_address is NULL
+0
+0 Expected
+SELECT @@bind_address is NOT NULL AND @@GLOBAL.bind_address is NOT NULL;
+@@bind_address is NOT NULL AND @@GLOBAL.bind_address is NOT NULL
+1
+1 Expected
+'#---------------------BS_STVARS_001_05----------------------#'
+SELECT COUNT(@@bind_address);
+COUNT(@@bind_address)
+1
+1 Expected
+SELECT COUNT(@@local.bind_address);
+ERROR HY000: Variable 'bind_address' is a GLOBAL variable
+Expected error 'Variable is a GLOBAL variable'
+SELECT COUNT(@@SESSION.bind_address);
+ERROR HY000: Variable 'bind_address' is a GLOBAL variable
+Expected error 'Variable is a GLOBAL variable'
+SELECT COUNT(@@GLOBAL.bind_address);
+COUNT(@@GLOBAL.bind_address)
+1
+1 Expected
+SELECT bind_address = @@SESSION.bind_address;
+ERROR 42S22: Unknown column 'bind_address' in 'field list'
+Expected error 'Readonly variable'
diff --git a/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_basic.result b/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_adaptive_hash_index_partitions_basic.result b/mysql-test/suite/sys_vars/r/innodb_adaptive_hash_index_partitions_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_adaptive_hash_index_partitions_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_blocking_buffer_pool_restore_basic.result b/mysql-test/suite/sys_vars/r/innodb_blocking_buffer_pool_restore_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_blocking_buffer_pool_restore_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_populate_basic.result b/mysql-test/suite/sys_vars/r/innodb_buffer_pool_populate_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_populate_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_restore_at_startup_basic.result b/mysql-test/suite/sys_vars/r/innodb_buffer_pool_restore_at_startup_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_restore_at_startup_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_shm_checksum_basic.result b/mysql-test/suite/sys_vars/r/innodb_buffer_pool_shm_checksum_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_shm_checksum_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_shm_key_basic.result b/mysql-test/suite/sys_vars/r/innodb_buffer_pool_shm_key_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_buffer_pool_shm_key_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_checkpoint_age_target_basic.result b/mysql-test/suite/sys_vars/r/innodb_checkpoint_age_target_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_checkpoint_age_target_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_corrupt_table_action_basic.result b/mysql-test/suite/sys_vars/r/innodb_corrupt_table_action_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_corrupt_table_action_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_dict_size_limit_basic.result b/mysql-test/suite/sys_vars/r/innodb_dict_size_limit_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_dict_size_limit_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_doublewrite_file_basic.result b/mysql-test/suite/sys_vars/r/innodb_doublewrite_file_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_doublewrite_file_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_fake_changes_basic.result b/mysql-test/suite/sys_vars/r/innodb_fake_changes_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_fake_changes_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_fast_checksum_basic.result b/mysql-test/suite/sys_vars/r/innodb_fast_checksum_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_fast_checksum_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_file_format_basic.result b/mysql-test/suite/sys_vars/r/innodb_file_format_basic.result
deleted file mode 100644
index 0b2cbb97d25..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_file_format_basic.result
+++ /dev/null
@@ -1,65 +0,0 @@
-SET @start_global_value = @@global.innodb_file_format;
-SELECT @start_global_value;
-@start_global_value
-Barracuda
-Valid values are 'Antelope' and 'Barracuda'
-select @@global.innodb_file_format in ('Antelope', 'Barracuda');
-@@global.innodb_file_format in ('Antelope', 'Barracuda')
-1
-select @@global.innodb_file_format;
-@@global.innodb_file_format
-Barracuda
-select @@session.innodb_file_format;
-ERROR HY000: Variable 'innodb_file_format' is a GLOBAL variable
-show global variables like 'innodb_file_format';
-Variable_name Value
-innodb_file_format Barracuda
-show session variables like 'innodb_file_format';
-Variable_name Value
-innodb_file_format Barracuda
-select * from information_schema.global_variables where variable_name='innodb_file_format';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT Barracuda
-select * from information_schema.session_variables where variable_name='innodb_file_format';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT Barracuda
-set global innodb_file_format='Antelope';
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@global.innodb_file_format;
-@@global.innodb_file_format
-Antelope
-select * from information_schema.global_variables where variable_name='innodb_file_format';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT Antelope
-select * from information_schema.session_variables where variable_name='innodb_file_format';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT Antelope
-set @@global.innodb_file_format='Barracuda';
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@global.innodb_file_format;
-@@global.innodb_file_format
-Barracuda
-select * from information_schema.global_variables where variable_name='innodb_file_format';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT Barracuda
-select * from information_schema.session_variables where variable_name='innodb_file_format';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT Barracuda
-set session innodb_file_format='Salmon';
-ERROR HY000: Variable 'innodb_file_format' is a GLOBAL variable and should be set with SET GLOBAL
-set @@session.innodb_file_format='Salmon';
-ERROR HY000: Variable 'innodb_file_format' is a GLOBAL variable and should be set with SET GLOBAL
-set global innodb_file_format=1.1;
-ERROR 42000: Incorrect argument type to variable 'innodb_file_format'
-set global innodb_file_format=1e1;
-ERROR 42000: Incorrect argument type to variable 'innodb_file_format'
-set global innodb_file_format='Salmon';
-ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'Salmon'
-SET @@global.innodb_file_format = @start_global_value;
-Warnings:
-Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-SELECT @@global.innodb_file_format;
-@@global.innodb_file_format
-Barracuda
diff --git a/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result b/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result
deleted file mode 100644
index 9167585f1d6..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result
+++ /dev/null
@@ -1,80 +0,0 @@
-SET @start_global_value = @@global.innodb_file_format_check;
-SELECT @start_global_value;
-@start_global_value
-1
-Valid values are 'ON' and 'OFF'
-SELECT @@global.innodb_file_format_check in (0, 1);
-@@global.innodb_file_format_check in (0, 1)
-1
-SELECT @@global.innodb_file_format_check;
-@@global.innodb_file_format_check
-1
-SELECT @@session.innodb_file_format_check;
-ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable
-SHOW global variables LIKE 'innodb_file_format_check';
-Variable_name Value
-innodb_file_format_check ON
-SHOW session variables LIKE 'innodb_file_format_check';
-Variable_name Value
-innodb_file_format_check ON
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_file_format_check';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT_CHECK ON
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_file_format_check';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT_CHECK ON
-SET @@global.innodb_file_format_check='Off';
-ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
-Expected error 'Read only variable'
-SET @@global.innodb_file_format_check=1;
-ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
-Expected error 'Read only variable'
-SET @@global.innodb_file_format_check=0;
-ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
-Expected error 'Read only variable'
-SET @@global.innodb_file_format_check='On';
-ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
-Expected error 'Read only variable'
-SET session innodb_large_prefix='OFF';
-ERROR HY000: Variable 'innodb_large_prefix' is a GLOBAL variable and should be set with SET GLOBAL
-SET @@session.innodb_stats_on_metadata='ON';
-ERROR HY000: Variable 'innodb_stats_on_metadata' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT IF(@@GLOBAL.innodb_file_format_check, "ON", "OFF") = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_file_format_check';
-IF(@@GLOBAL.innodb_file_format_check, "ON", "OFF") = VARIABLE_VALUE
-1
-1 Expected
-SELECT COUNT(@@GLOBAL.innodb_file_format_check);
-COUNT(@@GLOBAL.innodb_file_format_check)
-1
-1 Expected
-SELECT COUNT(VARIABLE_VALUE)
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_file_format_check';
-COUNT(VARIABLE_VALUE)
-1
-1 Expected
-SELECT @@innodb_file_format_check = @@GLOBAL.innodb_file_format_check;
-@@innodb_file_format_check = @@GLOBAL.innodb_file_format_check
-1
-1 Expected
-SELECT COUNT(@@innodb_file_format_check);
-COUNT(@@innodb_file_format_check)
-1
-1 Expected
-SELECT COUNT(@@local.innodb_file_format_check);
-ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable
-Expected error 'Variable is a GLOBAL variable'
-SELECT COUNT(@@SESSION.innodb_file_format_check);
-ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable
-Expected error 'Variable is a GLOBAL variable'
-SELECT COUNT(@@GLOBAL.innodb_file_format_check);
-COUNT(@@GLOBAL.innodb_file_format_check)
-1
-1 Expected
-SELECT innodb_file_format_check = @@SESSION.innodb_file_format_check;
-ERROR 42S22: Unknown column 'innodb_file_format_check' in 'field list'
-Expected error 'Readonly variable'
diff --git a/mysql-test/suite/sys_vars/r/innodb_file_format_max_basic.result b/mysql-test/suite/sys_vars/r/innodb_file_format_max_basic.result
deleted file mode 100644
index d36a17933d4..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_file_format_max_basic.result
+++ /dev/null
@@ -1,71 +0,0 @@
-SET @start_global_value = @@global.innodb_file_format_max;
-SELECT @start_global_value;
-@start_global_value
-Barracuda
-Valid values are 'Antelope' and 'Barracuda'
-SELECT @@global.innodb_file_format_max in ('Antelope', 'Barracuda');
-@@global.innodb_file_format_max in ('Antelope', 'Barracuda')
-1
-SELECT @@global.innodb_file_format_max;
-@@global.innodb_file_format_max
-Barracuda
-SELECT @@session.innodb_file_format_max;
-ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable
-SHOW global variables LIKE 'innodb_file_format_max';
-Variable_name Value
-innodb_file_format_max Barracuda
-SHOW session variables LIKE 'innodb_file_format_max';
-Variable_name Value
-innodb_file_format_max Barracuda
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_file_format_max';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT_MAX Barracuda
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_file_format_max';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT_MAX Barracuda
-SET global innodb_file_format_max='Antelope';
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-SELECT @@global.innodb_file_format_max;
-@@global.innodb_file_format_max
-Antelope
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_file_format_max';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT_MAX Antelope
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_file_format_max';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT_MAX Antelope
-SET @@global.innodb_file_format_max='Barracuda';
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-SELECT @@global.innodb_file_format_max;
-@@global.innodb_file_format_max
-Barracuda
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_file_format_max';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT_MAX Barracuda
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_file_format_max';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_FILE_FORMAT_MAX Barracuda
-SET session innodb_file_format_max='Salmon';
-ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL
-SET @@session.innodb_file_format_max='Salmon';
-ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL
-SET global innodb_file_format_max=1.1;
-ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max'
-SET global innodb_file_format_max=1e1;
-ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max'
-SET global innodb_file_format_max='Salmon';
-ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'Salmon'
-SET @@global.innodb_file_format_max = @start_global_value;
-Warnings:
-Warning 131 Using innodb_file_format_max is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-SELECT @@global.innodb_file_format_max;
-@@global.innodb_file_format_max
-Barracuda
diff --git a/mysql-test/suite/sys_vars/r/innodb_flush_checkpoint_debug_basic.result b/mysql-test/suite/sys_vars/r/innodb_flush_checkpoint_debug_basic.result
deleted file mode 100644
index e543cc30975..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_flush_checkpoint_debug_basic.result
+++ /dev/null
@@ -1,15 +0,0 @@
-SELECT @@global.innodb_flush_checkpoint_debug;
-@@global.innodb_flush_checkpoint_debug
-0
-SET @@global.innodb_flush_checkpoint_debug=1;
-SELECT @@global.innodb_flush_checkpoint_debug;
-@@global.innodb_flush_checkpoint_debug
-1
-SET @@global.innodb_flush_checkpoint_debug=0;
-SELECT @@global.innodb_flush_checkpoint_debug;
-@@global.innodb_flush_checkpoint_debug
-0
-SET @@session.innodb_flush_checkpoint_debug=1;
-ERROR HY000: Variable 'innodb_flush_checkpoint_debug' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@session.innodb_flush_checkpoint_debug;
-ERROR HY000: Variable 'innodb_flush_checkpoint_debug' is a GLOBAL variable
diff --git a/mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_basic.result b/mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_ibuf_accel_rate_basic.result b/mysql-test/suite/sys_vars/r/innodb_ibuf_accel_rate_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_ibuf_accel_rate_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_ibuf_active_contract_basic.result b/mysql-test/suite/sys_vars/r/innodb_ibuf_active_contract_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_ibuf_active_contract_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_ibuf_max_size_basic.result b/mysql-test/suite/sys_vars/r/innodb_ibuf_max_size_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_ibuf_max_size_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_import_table_from_xtrabackup_basic.result b/mysql-test/suite/sys_vars/r/innodb_import_table_from_xtrabackup_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_import_table_from_xtrabackup_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_instrument_semaphores_basic.result b/mysql-test/suite/sys_vars/r/innodb_instrument_semaphores_basic.result
deleted file mode 100644
index 561ddeb5a84..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_instrument_semaphores_basic.result
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# innodb_instrument_semaphores
-#
-# save the initial value
-SET @innodb_instrument_semaphores_global_saved = @@global.innodb_instrument_semaphores;
-# default
-SELECT @@global.innodb_instrument_semaphores;
-@@global.innodb_instrument_semaphores
-0
-
-# scope
-SELECT @@session.innodb_instrument_semaphores;
-ERROR HY000: Variable 'innodb_instrument_semaphores' is a GLOBAL variable
-SET @@global.innodb_instrument_semaphores=OFF;
-Warnings:
-Warning 131 Using innodb_instrument_semaphores is deprecated and the parameter will be removed in MariaDB 10.3.
-SELECT @@global.innodb_instrument_semaphores;
-@@global.innodb_instrument_semaphores
-0
-SET @@global.innodb_instrument_semaphores=ON;
-Warnings:
-Warning 131 Using innodb_instrument_semaphores is deprecated and the parameter will be removed in MariaDB 10.3.
-SELECT @@global.innodb_instrument_semaphores;
-@@global.innodb_instrument_semaphores
-1
-
-# valid values
-SET @@global.innodb_instrument_semaphores='OFF';
-Warnings:
-Warning 131 Using innodb_instrument_semaphores is deprecated and the parameter will be removed in MariaDB 10.3.
-SELECT @@global.innodb_instrument_semaphores;
-@@global.innodb_instrument_semaphores
-0
-SET @@global.innodb_instrument_semaphores=ON;
-Warnings:
-Warning 131 Using innodb_instrument_semaphores is deprecated and the parameter will be removed in MariaDB 10.3.
-SELECT @@global.innodb_instrument_semaphores;
-@@global.innodb_instrument_semaphores
-1
-SET @@global.innodb_instrument_semaphores=default;
-Warnings:
-Warning 131 Using innodb_instrument_semaphores is deprecated and the parameter will be removed in MariaDB 10.3.
-SELECT @@global.innodb_instrument_semaphores;
-@@global.innodb_instrument_semaphores
-0
-
-# invalid values
-SET @@global.innodb_instrument_semaphores=NULL;
-ERROR 42000: Variable 'innodb_instrument_semaphores' can't be set to the value of 'NULL'
-SET @@global.innodb_instrument_semaphores='junk';
-ERROR 42000: Variable 'innodb_instrument_semaphores' can't be set to the value of 'junk'
-
-# restore the initial value
-SET @@global.innodb_instrument_semaphores = @innodb_instrument_semaphores_global_saved;
-Warnings:
-Warning 131 Using innodb_instrument_semaphores is deprecated and the parameter will be removed in MariaDB 10.3.
-# End of test
diff --git a/mysql-test/suite/sys_vars/r/innodb_kill_idle_transaction_basic.result b/mysql-test/suite/sys_vars/r/innodb_kill_idle_transaction_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_kill_idle_transaction_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_large_prefix_basic.result b/mysql-test/suite/sys_vars/r/innodb_large_prefix_basic.result
deleted file mode 100644
index 17a23081096..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_large_prefix_basic.result
+++ /dev/null
@@ -1,102 +0,0 @@
-SET @start_global_value = @@global.innodb_large_prefix;
-SELECT @start_global_value;
-@start_global_value
-1
-Valid values are 'ON' and 'OFF'
-select @@global.innodb_large_prefix in (0, 1);
-@@global.innodb_large_prefix in (0, 1)
-1
-select @@global.innodb_large_prefix;
-@@global.innodb_large_prefix
-1
-select @@session.innodb_large_prefix;
-ERROR HY000: Variable 'innodb_large_prefix' is a GLOBAL variable
-show global variables like 'innodb_large_prefix';
-Variable_name Value
-innodb_large_prefix ON
-show session variables like 'innodb_large_prefix';
-Variable_name Value
-innodb_large_prefix ON
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX ON
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX ON
-set global innodb_large_prefix='OFF';
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@global.innodb_large_prefix;
-@@global.innodb_large_prefix
-0
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX OFF
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX OFF
-set @@global.innodb_large_prefix=1;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@global.innodb_large_prefix;
-@@global.innodb_large_prefix
-1
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX ON
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX ON
-set global innodb_large_prefix=0;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@global.innodb_large_prefix;
-@@global.innodb_large_prefix
-0
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX OFF
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX OFF
-set @@global.innodb_large_prefix='ON';
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-select @@global.innodb_large_prefix;
-@@global.innodb_large_prefix
-1
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX ON
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX ON
-set session innodb_large_prefix='OFF';
-ERROR HY000: Variable 'innodb_large_prefix' is a GLOBAL variable and should be set with SET GLOBAL
-set @@session.innodb_large_prefix='ON';
-ERROR HY000: Variable 'innodb_large_prefix' is a GLOBAL variable and should be set with SET GLOBAL
-set global innodb_large_prefix=1.1;
-ERROR 42000: Incorrect argument type to variable 'innodb_large_prefix'
-set global innodb_large_prefix=1e1;
-ERROR 42000: Incorrect argument type to variable 'innodb_large_prefix'
-set global innodb_large_prefix=2;
-ERROR 42000: Variable 'innodb_large_prefix' can't be set to the value of '2'
-set global innodb_large_prefix=-3;
-ERROR 42000: Variable 'innodb_large_prefix' can't be set to the value of '-3'
-select @@global.innodb_large_prefix;
-@@global.innodb_large_prefix
-1
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX ON
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_LARGE_PREFIX ON
-set global innodb_large_prefix='AUTO';
-ERROR 42000: Variable 'innodb_large_prefix' can't be set to the value of 'AUTO'
-SET @@global.innodb_large_prefix = @start_global_value;
-Warnings:
-Warning 131 Using innodb_large_prefix is deprecated and the parameter may be removed in future releases. See https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
-SELECT @@global.innodb_large_prefix;
-@@global.innodb_large_prefix
-1
diff --git a/mysql-test/suite/sys_vars/r/innodb_lazy_drop_table_basic.result b/mysql-test/suite/sys_vars/r/innodb_lazy_drop_table_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_lazy_drop_table_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result b/mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result
index 74b1d21d475..3218c096c2b 100644
--- a/mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_lock_wait_timeout_basic.result
@@ -99,7 +99,7 @@ Warnings:
Warning 1292 Truncated incorrect innodb_lock_wait_timeout value: '-1024'
SELECT @@global.innodb_lock_wait_timeout;
@@global.innodb_lock_wait_timeout
-1
+0
SET @@global.innodb_lock_wait_timeout=1073741825;
Warnings:
Warning 1292 Truncated incorrect innodb_lock_wait_timeout value: '1073741825'
@@ -131,7 +131,7 @@ Warnings:
Warning 1292 Truncated incorrect innodb_lock_wait_timeout value: '-1024'
SELECT @@session.innodb_lock_wait_timeout;
@@session.innodb_lock_wait_timeout
-1
+0
SET @@session.innodb_lock_wait_timeout=1073999999;
Warnings:
Warning 1292 Truncated incorrect innodb_lock_wait_timeout value: '1073999999'
diff --git a/mysql-test/suite/sys_vars/r/innodb_locking_fake_changes_basic.result b/mysql-test/suite/sys_vars/r/innodb_locking_fake_changes_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_locking_fake_changes_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_log_block_size_basic.result b/mysql-test/suite/sys_vars/r/innodb_log_block_size_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_log_block_size_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_max_bitmap_file_size_basic.result b/mysql-test/suite/sys_vars/r/innodb_max_bitmap_file_size_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_max_bitmap_file_size_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_max_changed_pages_basic.result b/mysql-test/suite/sys_vars/r/innodb_max_changed_pages_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_max_changed_pages_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_mtflush_threads_basic.result b/mysql-test/suite/sys_vars/r/innodb_mtflush_threads_basic.result
deleted file mode 100644
index 75a1cc5262e..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_mtflush_threads_basic.result
+++ /dev/null
@@ -1,21 +0,0 @@
-select @@global.innodb_mtflush_threads;
-@@global.innodb_mtflush_threads
-8
-select @@session.innodb_mtflush_threads;
-ERROR HY000: Variable 'innodb_mtflush_threads' is a GLOBAL variable
-show global variables like 'innodb_mtflush_threads';
-Variable_name Value
-innodb_mtflush_threads 8
-show session variables like 'innodb_mtflush_threads';
-Variable_name Value
-innodb_mtflush_threads 8
-select * from information_schema.global_variables where variable_name='innodb_mtflush_threads';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_MTFLUSH_THREADS 8
-select * from information_schema.session_variables where variable_name='innodb_mtflush_threads';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_MTFLUSH_THREADS 8
-set global innodb_mtflush_threads=1;
-ERROR HY000: Variable 'innodb_mtflush_threads' is a read only variable
-set session innodb_mtflush_threads=1;
-ERROR HY000: Variable 'innodb_mtflush_threads' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/innodb_page_cleaners_basic.result b/mysql-test/suite/sys_vars/r/innodb_page_cleaners_basic.result
index 5a89af5ca88..3113d77668c 100644
--- a/mysql-test/suite/sys_vars/r/innodb_page_cleaners_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_page_cleaners_basic.result
@@ -2,13 +2,42 @@ SELECT COUNT(@@GLOBAL.innodb_page_cleaners);
COUNT(@@GLOBAL.innodb_page_cleaners)
1
1 Expected
-SELECT COUNT(@@innodb_page_cleaners);
-COUNT(@@innodb_page_cleaners)
+SELECT @@innodb_page_cleaners;
+@@innodb_page_cleaners
1
1 Expected
+SET @@GLOBAL.innodb_page_cleaners=2;
+Expected to pass
+SELECT @@innodb_page_cleaners;
+@@innodb_page_cleaners
+2
+2 Expected
SET @@GLOBAL.innodb_page_cleaners=1;
-ERROR HY000: Variable 'innodb_page_cleaners' is a read only variable
-Expected error 'Read-only variable'
+Expected to pass
+SELECT @@innodb_page_cleaners;
+@@innodb_page_cleaners
+1
+1 Expected
+SET @@GLOBAL.innodb_page_cleaners=6;
+Expected to pass
+SELECT @@innodb_page_cleaners;
+@@innodb_page_cleaners
+6
+6 Expected
+SET @@GLOBAL.innodb_page_cleaners=4;
+Expected to pass
+SELECT @@innodb_page_cleaners;
+@@innodb_page_cleaners
+4
+4 Expected
+SET @@GLOBAL.innodb_page_cleaners=0;
+Warnings:
+Warning 1292 Truncated incorrect innodb_page_cleaners value: '0'
+Warning expected
+SELECT @@innodb_page_cleaners;
+@@innodb_page_cleaners
+1
+1 Expected
SELECT innodb_page_cleaners = @@SESSION.innodb_page_cleaners;
ERROR 42S22: Unknown column 'innodb_page_cleaners' in 'field list'
Expected error 'Read-only variable'
diff --git a/mysql-test/suite/sys_vars/r/innodb_print_lock_wait_timeout_info_basic.result b/mysql-test/suite/sys_vars/r/innodb_print_lock_wait_timeout_info_basic.result
deleted file mode 100644
index cc035e4f8bc..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_print_lock_wait_timeout_info_basic.result
+++ /dev/null
@@ -1,104 +0,0 @@
-SET @start_global_value = @@global.innodb_print_lock_wait_timeout_info;
-SELECT @start_global_value;
-@start_global_value
-0
-Valid values are 'ON' and 'OFF'
-SELECT @@global.innodb_print_lock_wait_timeout_info in (0, 1);
-@@global.innodb_print_lock_wait_timeout_info in (0, 1)
-1
-SELECT @@global.innodb_print_lock_wait_timeout_info;
-@@global.innodb_print_lock_wait_timeout_info
-0
-SELECT @@session.innodb_print_lock_wait_timeout_info;
-ERROR HY000: Variable 'innodb_print_lock_wait_timeout_info' is a GLOBAL variable
-SHOW global variables LIKE 'innodb_print_lock_wait_timeout_info';
-Variable_name Value
-innodb_print_lock_wait_timeout_info OFF
-SHOW session variables LIKE 'innodb_print_lock_wait_timeout_info';
-Variable_name Value
-innodb_print_lock_wait_timeout_info OFF
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO OFF
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO OFF
-SET global innodb_print_lock_wait_timeout_info='OFF';
-SELECT @@global.innodb_print_lock_wait_timeout_info;
-@@global.innodb_print_lock_wait_timeout_info
-0
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO OFF
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO OFF
-SET @@global.innodb_print_lock_wait_timeout_info=1;
-SELECT @@global.innodb_print_lock_wait_timeout_info;
-@@global.innodb_print_lock_wait_timeout_info
-1
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO ON
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO ON
-SET global innodb_print_lock_wait_timeout_info=0;
-SELECT @@global.innodb_print_lock_wait_timeout_info;
-@@global.innodb_print_lock_wait_timeout_info
-0
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO OFF
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO OFF
-SET @@global.innodb_print_lock_wait_timeout_info='ON';
-SELECT @@global.innodb_print_lock_wait_timeout_info;
-@@global.innodb_print_lock_wait_timeout_info
-1
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO ON
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO ON
-SET session innodb_print_lock_wait_timeout_info='OFF';
-ERROR HY000: Variable 'innodb_print_lock_wait_timeout_info' is a GLOBAL variable and should be set with SET GLOBAL
-SET @@session.innodb_print_lock_wait_timeout_info='ON';
-ERROR HY000: Variable 'innodb_print_lock_wait_timeout_info' is a GLOBAL variable and should be set with SET GLOBAL
-SET global innodb_print_lock_wait_timeout_info=1.1;
-ERROR 42000: Incorrect argument type to variable 'innodb_print_lock_wait_timeout_info'
-SET global innodb_print_lock_wait_timeout_info=1e1;
-ERROR 42000: Incorrect argument type to variable 'innodb_print_lock_wait_timeout_info'
-SET global innodb_print_lock_wait_timeout_info=2;
-ERROR 42000: Variable 'innodb_print_lock_wait_timeout_info' can't be set to the value of '2'
-SET global innodb_print_lock_wait_timeout_info=-3;
-ERROR 42000: Variable 'innodb_print_lock_wait_timeout_info' can't be set to the value of '-3'
-SELECT @@global.innodb_print_lock_wait_timeout_info;
-@@global.innodb_print_lock_wait_timeout_info
-1
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO ON
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO ON
-SET global innodb_print_lock_wait_timeout_info='AUTO';
-ERROR 42000: Variable 'innodb_print_lock_wait_timeout_info' can't be set to the value of 'AUTO'
-SET @@global.innodb_print_lock_wait_timeout_info = @start_global_value;
-SELECT @@global.innodb_print_lock_wait_timeout_info;
-@@global.innodb_print_lock_wait_timeout_info
-0
diff --git a/mysql-test/suite/sys_vars/r/innodb_read_ahead_basic.result b/mysql-test/suite/sys_vars/r/innodb_read_ahead_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_read_ahead_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_recovery_stats_basic.result b/mysql-test/suite/sys_vars/r/innodb_recovery_stats_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_recovery_stats_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_recovery_update_relay_log_basic.result b/mysql-test/suite/sys_vars/r/innodb_recovery_update_relay_log_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_recovery_update_relay_log_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_sched_priority_cleaner_basic.result b/mysql-test/suite/sys_vars/r/innodb_sched_priority_cleaner_basic.result
deleted file mode 100644
index f2bfaf2ed61..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_sched_priority_cleaner_basic.result
+++ /dev/null
@@ -1,30 +0,0 @@
-SET GLOBAL innodb_sched_priority_cleaner=39;
-SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-@@GLOBAL.innodb_sched_priority_cleaner
-19
-SELECT @@SESSION.innodb_sched_priority_cleaner;
-ERROR HY000: Variable 'innodb_sched_priority_cleaner' is a GLOBAL variable
-SET GLOBAL innodb_sched_priority_cleaner=19;
-SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-@@GLOBAL.innodb_sched_priority_cleaner
-19
-SET GLOBAL innodb_sched_priority_cleaner=5;
-SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-@@GLOBAL.innodb_sched_priority_cleaner
-5
-SET GLOBAL innodb_sched_priority_cleaner=0;
-SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-@@GLOBAL.innodb_sched_priority_cleaner
-0
-SET GLOBAL innodb_sched_priority_cleaner=-1;
-Warnings:
-Warning 1292 Truncated incorrect innodb_sched_priority_cleaner value: '-1'
-SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-@@GLOBAL.innodb_sched_priority_cleaner
-0
-SET GLOBAL innodb_sched_priority_cleaner=1.1;
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_cleaner'
-SET GLOBAL innodb_sched_priority_cleaner=1e1;
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_cleaner'
-SET GLOBAL innodb_sched_priority_cleaner='foo';
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_cleaner'
diff --git a/mysql-test/suite/sys_vars/r/innodb_sched_priority_io_basic.result b/mysql-test/suite/sys_vars/r/innodb_sched_priority_io_basic.result
deleted file mode 100644
index 5fd7705bfaf..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_sched_priority_io_basic.result
+++ /dev/null
@@ -1,30 +0,0 @@
-SET @start_value = @@GLOBAL.innodb_sched_priority_io;
-SELECT @@GLOBAL.innodb_sched_priority_io;
-@@GLOBAL.innodb_sched_priority_io
-19
-SELECT @@SESSION.innodb_sched_priority_io;
-ERROR HY000: Variable 'innodb_sched_priority_io' is a GLOBAL variable
-SET GLOBAL innodb_sched_priority_io=19;
-SELECT @@GLOBAL.innodb_sched_priority_io;
-@@GLOBAL.innodb_sched_priority_io
-19
-SET GLOBAL innodb_sched_priority_io=5;
-SELECT @@GLOBAL.innodb_sched_priority_io;
-@@GLOBAL.innodb_sched_priority_io
-5
-SET GLOBAL innodb_sched_priority_io=0;
-SELECT @@GLOBAL.innodb_sched_priority_io;
-@@GLOBAL.innodb_sched_priority_io
-0
-SET GLOBAL innodb_sched_priority_io=-1;
-Warnings:
-Warning 1292 Truncated incorrect innodb_sched_priority_io value: '-1'
-SELECT @@GLOBAL.innodb_sched_priority_io;
-@@GLOBAL.innodb_sched_priority_io
-0
-SET GLOBAL innodb_sched_priority_io=1.1;
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_io'
-SET GLOBAL innodb_sched_priority_io=1e1;
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_io'
-SET GLOBAL innodb_sched_priority_io='foo';
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_io'
diff --git a/mysql-test/suite/sys_vars/r/innodb_sched_priority_master_basic.result b/mysql-test/suite/sys_vars/r/innodb_sched_priority_master_basic.result
deleted file mode 100644
index caa72f58369..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_sched_priority_master_basic.result
+++ /dev/null
@@ -1,30 +0,0 @@
-SET @start_value = @@GLOBAL.innodb_sched_priority_master;
-SELECT @@GLOBAL.innodb_sched_priority_master;
-@@GLOBAL.innodb_sched_priority_master
-19
-SELECT @@SESSION.innodb_sched_priority_master;
-ERROR HY000: Variable 'innodb_sched_priority_master' is a GLOBAL variable
-SET GLOBAL innodb_sched_priority_master=19;
-SELECT @@GLOBAL.innodb_sched_priority_master;
-@@GLOBAL.innodb_sched_priority_master
-19
-SET GLOBAL innodb_sched_priority_master=5;
-SELECT @@GLOBAL.innodb_sched_priority_master;
-@@GLOBAL.innodb_sched_priority_master
-5
-SET GLOBAL innodb_sched_priority_master=0;
-SELECT @@GLOBAL.innodb_sched_priority_master;
-@@GLOBAL.innodb_sched_priority_master
-0
-SET GLOBAL innodb_sched_priority_master=-1;
-Warnings:
-Warning 1292 Truncated incorrect innodb_sched_priority_master value: '-1'
-SELECT @@GLOBAL.innodb_sched_priority_master;
-@@GLOBAL.innodb_sched_priority_master
-0
-SET GLOBAL innodb_sched_priority_master=1.1;
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_master'
-SET GLOBAL innodb_sched_priority_master=1e1;
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_master'
-SET GLOBAL innodb_sched_priority_master='foo';
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_master'
diff --git a/mysql-test/suite/sys_vars/r/innodb_sched_priority_purge_basic.result b/mysql-test/suite/sys_vars/r/innodb_sched_priority_purge_basic.result
deleted file mode 100644
index e3b9c627214..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_sched_priority_purge_basic.result
+++ /dev/null
@@ -1,30 +0,0 @@
-SET @start_value = @@GLOBAL.innodb_sched_priority_purge;
-SELECT @@GLOBAL.innodb_sched_priority_purge;
-@@GLOBAL.innodb_sched_priority_purge
-19
-SELECT @@SESSION.innodb_sched_priority_purge;
-ERROR HY000: Variable 'innodb_sched_priority_purge' is a GLOBAL variable
-SET GLOBAL innodb_sched_priority_purge=19;
-SELECT @@GLOBAL.innodb_sched_priority_purge;
-@@GLOBAL.innodb_sched_priority_purge
-19
-SET GLOBAL innodb_sched_priority_purge=5;
-SELECT @@GLOBAL.innodb_sched_priority_purge;
-@@GLOBAL.innodb_sched_priority_purge
-5
-SET GLOBAL innodb_sched_priority_purge=0;
-SELECT @@GLOBAL.innodb_sched_priority_purge;
-@@GLOBAL.innodb_sched_priority_purge
-0
-SET GLOBAL innodb_sched_priority_purge=-1;
-Warnings:
-Warning 1292 Truncated incorrect innodb_sched_priority_purge value: '-1'
-SELECT @@GLOBAL.innodb_sched_priority_purge;
-@@GLOBAL.innodb_sched_priority_purge
-0
-SET GLOBAL innodb_sched_priority_purge=1.1;
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_purge'
-SET GLOBAL innodb_sched_priority_purge=1e1;
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_purge'
-SET GLOBAL innodb_sched_priority_purge='foo';
-ERROR 42000: Incorrect argument type to variable 'innodb_sched_priority_purge'
diff --git a/mysql-test/suite/sys_vars/r/innodb_show_locks_held_basic.result b/mysql-test/suite/sys_vars/r/innodb_show_locks_held_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_show_locks_held_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_show_verbose_locks_basic.result b/mysql-test/suite/sys_vars/r/innodb_show_verbose_locks_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_show_verbose_locks_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result b/mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result
index 88516a854fe..b76ba4933f2 100644
--- a/mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result
@@ -1,28 +1,28 @@
SET @start_global_value = @@global.innodb_spin_wait_delay;
SELECT @start_global_value;
@start_global_value
-6
+4
Valid values are zero or above
select @@global.innodb_spin_wait_delay >=0;
@@global.innodb_spin_wait_delay >=0
1
select @@global.innodb_spin_wait_delay;
@@global.innodb_spin_wait_delay
-6
+4
select @@session.innodb_spin_wait_delay;
ERROR HY000: Variable 'innodb_spin_wait_delay' is a GLOBAL variable
show global variables like 'innodb_spin_wait_delay';
Variable_name Value
-innodb_spin_wait_delay 6
+innodb_spin_wait_delay 4
show session variables like 'innodb_spin_wait_delay';
Variable_name Value
-innodb_spin_wait_delay 6
+innodb_spin_wait_delay 4
select * from information_schema.global_variables where variable_name='innodb_spin_wait_delay';
VARIABLE_NAME VARIABLE_VALUE
-INNODB_SPIN_WAIT_DELAY 6
+INNODB_SPIN_WAIT_DELAY 4
select * from information_schema.session_variables where variable_name='innodb_spin_wait_delay';
VARIABLE_NAME VARIABLE_VALUE
-INNODB_SPIN_WAIT_DELAY 6
+INNODB_SPIN_WAIT_DELAY 4
set global innodb_spin_wait_delay=10;
select @@global.innodb_spin_wait_delay;
@@global.innodb_spin_wait_delay
@@ -38,7 +38,7 @@ ERROR HY000: Variable 'innodb_spin_wait_delay' is a GLOBAL variable and should b
set global innodb_spin_wait_delay=DEFAULT;
select @@global.innodb_spin_wait_delay;
@@global.innodb_spin_wait_delay
-6
+4
set global innodb_spin_wait_delay=0;
select @@global.innodb_spin_wait_delay;
@@global.innodb_spin_wait_delay
@@ -111,4 +111,4 @@ INNODB_SPIN_WAIT_DELAY 0
SET @@global.innodb_spin_wait_delay = @start_global_value;
SELECT @@global.innodb_spin_wait_delay;
@@global.innodb_spin_wait_delay
-6
+4
diff --git a/mysql-test/suite/sys_vars/r/innodb_stats_auto_update_basic.result b/mysql-test/suite/sys_vars/r/innodb_stats_auto_update_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_stats_auto_update_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_stats_update_need_lock_basic.result b/mysql-test/suite/sys_vars/r/innodb_stats_update_need_lock_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_stats_update_need_lock_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_support_xa_basic.result b/mysql-test/suite/sys_vars/r/innodb_support_xa_basic.result
deleted file mode 100644
index 8384ee3d361..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_support_xa_basic.result
+++ /dev/null
@@ -1,227 +0,0 @@
-SET @session_start_value = @@session.innodb_support_xa;
-SELECT @session_start_value;
-@session_start_value
-1
-SET @global_start_value = @@global.innodb_support_xa;
-SELECT @global_start_value;
-@global_start_value
-1
-'#--------------------FN_DYNVARS_046_01------------------------#'
-SET @@session.innodb_support_xa = 0;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SET @@session.innodb_support_xa = DEFAULT;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-SET @@global.innodb_support_xa = 0;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SET @@global.innodb_support_xa = DEFAULT;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-'#---------------------FN_DYNVARS_046_02-------------------------#'
-SET innodb_support_xa = 1;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@innodb_support_xa;
-@@innodb_support_xa
-1
-SELECT session.innodb_support_xa;
-ERROR 42S02: Unknown table 'session' in field list
-SELECT local.innodb_support_xa;
-ERROR 42S02: Unknown table 'local' in field list
-SELECT global.innodb_support_xa;
-ERROR 42S02: Unknown table 'global' in field list
-SET session innodb_support_xa = 0;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-SET global innodb_support_xa = 0;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-'#--------------------FN_DYNVARS_046_03------------------------#'
-SET @@session.innodb_support_xa = 0;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-SET @@session.innodb_support_xa = 1;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-SET @@global.innodb_support_xa = 0;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-SET @@global.innodb_support_xa = 1;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-'#--------------------FN_DYNVARS_046_04-------------------------#'
-SET @@session.innodb_support_xa = -0.6;
-ERROR 42000: Incorrect argument type to variable 'innodb_support_xa'
-SET @@session.innodb_support_xa = 1.6;
-ERROR 42000: Incorrect argument type to variable 'innodb_support_xa'
-SET @@session.innodb_support_xa = "T";
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'T'
-SET @@session.innodb_support_xa = "Y";
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'Y'
-SET @@session.innodb_support_xa = TRÜE;
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'TRÜE'
-SET @@session.innodb_support_xa = ÕN;
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'ÕN'
-SET @@session.innodb_support_xa = OF;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-SET @@session.innodb_support_xa = ÓFF;
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'ÓFF'
-SET @@global.innodb_support_xa = -1;
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of '-1'
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-SET @@global.innodb_support_xa = 2;
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of '2'
-SET @@global.innodb_support_xa = "T";
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'T'
-SET @@global.innodb_support_xa = "Y";
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'Y'
-SET @@global.innodb_support_xa = TRÜE;
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'TRÜE'
-SET @@global.innodb_support_xa = ÕN;
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'ÕN'
-SET @@global.innodb_support_xa = OF;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-SET @@global.innodb_support_xa = ÓFF;
-ERROR 42000: Variable 'innodb_support_xa' can't be set to the value of 'ÓFF'
-'#-------------------FN_DYNVARS_046_05----------------------------#'
-SET @@global.innodb_support_xa = 0;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SET @@session.innodb_support_xa = 1;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@global.innodb_support_xa AS res_is_0;
-res_is_0
-1
-SET @@global.innodb_support_xa = 0;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SELECT @@session.innodb_support_xa AS res_is_1;
-res_is_1
-1
-'#----------------------FN_DYNVARS_046_06------------------------#'
-SELECT IF(@@global.innodb_support_xa, "ON", "OFF") =
-VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_support_xa';
-IF(@@global.innodb_support_xa, "ON", "OFF") =
-VARIABLE_VALUE
-1
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_support_xa';
-VARIABLE_VALUE
-ON
-'#----------------------FN_DYNVARS_046_07------------------------#'
-SELECT IF(@@session.innodb_support_xa, "ON", "OFF") =
-VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
-WHERE VARIABLE_NAME='innodb_support_xa';
-IF(@@session.innodb_support_xa, "ON", "OFF") =
-VARIABLE_VALUE
-1
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
-WHERE VARIABLE_NAME='innodb_support_xa';
-VARIABLE_VALUE
-ON
-'#---------------------FN_DYNVARS_046_08-------------------------#'
-SET @@session.innodb_support_xa = OFF;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-SET @@session.innodb_support_xa = ON;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-SET @@global.innodb_support_xa = OFF;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-SET @@global.innodb_support_xa = ON;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-'#---------------------FN_DYNVARS_046_09----------------------#'
-SET @@session.innodb_support_xa = TRUE;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-SET @@session.innodb_support_xa = FALSE;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-SET @@global.innodb_support_xa = TRUE;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-SET @@global.innodb_support_xa = FALSE;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-SET @@session.innodb_support_xa = @session_start_value;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-SET @@global.innodb_support_xa = @global_start_value;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
diff --git a/mysql-test/suite/sys_vars/r/innodb_support_xa_func.result b/mysql-test/suite/sys_vars/r/innodb_support_xa_func.result
deleted file mode 100644
index 376cc7dd076..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_support_xa_func.result
+++ /dev/null
@@ -1,90 +0,0 @@
-'#--------------------FN_DYNVARS_046_01-------------------------#'
-SET @@global.innodb_support_xa = OFF;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-connect con1,localhost,root,,,,;
-connection con1;
-SELECT @@global.innodb_support_xa;
-@@global.innodb_support_xa
-1
-SELECT @@session.innodb_support_xa;
-@@session.innodb_support_xa
-1
-disconnect con1;
-'#--------------------FN_DYNVARS_046_01-------------------------#'
-connection default;
-SET @@global.innodb_support_xa = 1;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-drop table if exists t1, t2;
-create table t1 (a int) engine=innodb;
-'---check when innodb_support_xa is 1---'
-SET @@innodb_support_xa = 1;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-xa start 'test1';
-INSERT t1 values (10);
-xa end 'test1';
-xa prepare 'test1';
-xa rollback 'test1';
-SELECT * from t1;
-a
-'---check when innodb_support_xa is 0---'
-SET @@innodb_support_xa = 0;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases. Only innodb_support_xa=ON is allowed.
-xa start 'test1';
-INSERT t1 values (10);
-xa end 'test1';
-xa prepare 'test1';
-xa rollback 'test1';
-SELECT * from t1;
-a
-'------general xa testing--------'
-SET @@global.innodb_support_xa = 1;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-SET @@innodb_support_xa = 1;
-Warnings:
-Warning 131 Using innodb_support_xa is deprecated and the parameter may be removed in future releases.
-xa start 'testa','testb';
-INSERT t1 values (30);
-COMMIT;
-ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state
-xa end 'testa','testb';
-BEGIN;
-ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state
-CREATE table t2 (a int);
-ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state
-CONNECT con1,localhost,root,,,,;
-connection con1;
-xa start 'testa','testb';
-ERROR XAE08: XAER_DUPID: The XID already exists
-xa start 'testa','testb', 123;
-ERROR XAE08: XAER_DUPID: The XID already exists
-xa start 0x7465737462, 0x2030405060, 0xb;
-INSERT t1 values (40);
-xa end 'testb',' 0@P`',11;
-xa prepare 'testb',0x2030405060,11;
-START TRANSACTION;
-ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state
-xa recover;
-formatID gtrid_length bqual_length data
-11 5 5 testb 0@P`
-connection default;
-xa prepare 'testa','testb';
-xa recover;
-formatID gtrid_length bqual_length data
-11 5 5 testb 0@P`
-1 5 5 testatestb
-xa commit 'testb',0x2030405060,11;
-ERROR XAE04: XAER_NOTA: Unknown XID
-xa commit 'testa','testb';
-connection con1;
-xa rollback 'testb',0x2030405060,11;
-SELECT * from t1;
-a
-30
-disconnect con1;
-connection default;
-DROP table t1;
diff --git a/mysql-test/suite/sys_vars/r/innodb_thread_concurrency_timer_based_basic.result b/mysql-test/suite/sys_vars/r/innodb_thread_concurrency_timer_based_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_thread_concurrency_timer_based_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_track_changed_pages_basic.result b/mysql-test/suite/sys_vars/r/innodb_track_changed_pages_basic.result
deleted file mode 100644
index f5d94ee0d18..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_track_changed_pages_basic.result
+++ /dev/null
@@ -1,19 +0,0 @@
-SELECT COUNT(@@GLOBAL.innodb_track_changed_pages);
-COUNT(@@GLOBAL.innodb_track_changed_pages)
-1
-SELECT @@GLOBAL.innodb_track_changed_pages = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_track_changed_pages';
-@@GLOBAL.innodb_track_changed_pages = VARIABLE_VALUE
-1
-Warnings:
-Warning 1292 Truncated incorrect DOUBLE value: 'OFF'
-SELECT @@innodb_track_changed_pages = @@GLOBAL.innodb_track_changed_pages;
-@@innodb_track_changed_pages = @@GLOBAL.innodb_track_changed_pages
-1
-SELECT COUNT(@@SESSION.innodb_track_changed_pages);
-ERROR HY000: Variable 'innodb_track_changed_pages' is a GLOBAL variable
-SELECT COUNT(@@LOCAL.innodb_track_changed_pages);
-ERROR HY000: Variable 'innodb_track_changed_pages' is a GLOBAL variable
-SELECT innodb_track_changed_pages = @@SESSION.innodb_track_changed_pages;
-ERROR 42S22: Unknown column 'innodb_track_changed_pages' in 'field list'
diff --git a/mysql-test/suite/sys_vars/r/innodb_track_redo_log_now_basic.result b/mysql-test/suite/sys_vars/r/innodb_track_redo_log_now_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_track_redo_log_now_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_use_global_flush_log_at_trx_commit_basic.result b/mysql-test/suite/sys_vars/r/innodb_use_global_flush_log_at_trx_commit_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_use_global_flush_log_at_trx_commit_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_use_mtflush_basic.result b/mysql-test/suite/sys_vars/r/innodb_use_mtflush_basic.result
deleted file mode 100644
index f77abba7ac9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_use_mtflush_basic.result
+++ /dev/null
@@ -1,21 +0,0 @@
-select @@global.innodb_use_mtflush;
-@@global.innodb_use_mtflush
-0
-select @@session.innodb_use_mtflush;
-ERROR HY000: Variable 'innodb_use_mtflush' is a GLOBAL variable
-show global variables like 'innodb_use_mtflush';
-Variable_name Value
-innodb_use_mtflush OFF
-show session variables like 'innodb_use_mtflush';
-Variable_name Value
-innodb_use_mtflush OFF
-select * from information_schema.global_variables where variable_name='innodb_use_mtflush';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_USE_MTFLUSH OFF
-select * from information_schema.session_variables where variable_name='innodb_use_mtflush';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_USE_MTFLUSH OFF
-set global innodb_use_mtflush=1;
-ERROR HY000: Variable 'innodb_use_mtflush' is a read only variable
-set session innodb_use_mtflush=1;
-ERROR HY000: Variable 'innodb_use_mtflush' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/innodb_use_stacktrace_basic.result b/mysql-test/suite/sys_vars/r/innodb_use_stacktrace_basic.result
deleted file mode 100644
index 5db1880219d..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_use_stacktrace_basic.result
+++ /dev/null
@@ -1,48 +0,0 @@
-SELECT COUNT(@@GLOBAL.innodb_use_stacktrace);
-COUNT(@@GLOBAL.innodb_use_stacktrace)
-1
-1 Expected
-SET @@GLOBAL.innodb_use_stacktrace=1;
-ERROR HY000: Variable 'innodb_use_stacktrace' is a read only variable
-Expected error 'Read only variable'
-SELECT COUNT(@@GLOBAL.innodb_use_stacktrace);
-COUNT(@@GLOBAL.innodb_use_stacktrace)
-1
-1 Expected
-SELECT IF(@@GLOBAL.innodb_use_stacktrace, 'ON', 'OFF') = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_use_stacktrace';
-IF(@@GLOBAL.innodb_use_stacktrace, 'ON', 'OFF') = VARIABLE_VALUE
-1
-1 Expected
-SELECT COUNT(@@GLOBAL.innodb_use_stacktrace);
-COUNT(@@GLOBAL.innodb_use_stacktrace)
-1
-1 Expected
-SELECT COUNT(VARIABLE_VALUE)
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_use_stacktrace';
-COUNT(VARIABLE_VALUE)
-1
-1 Expected
-SELECT @@innodb_use_stacktrace = @@GLOBAL.innodb_use_stacktrace;
-@@innodb_use_stacktrace = @@GLOBAL.innodb_use_stacktrace
-1
-1 Expected
-SELECT COUNT(@@innodb_use_stacktrace);
-COUNT(@@innodb_use_stacktrace)
-1
-1 Expected
-SELECT COUNT(@@local.innodb_use_stacktrace);
-ERROR HY000: Variable 'innodb_use_stacktrace' is a GLOBAL variable
-Expected error 'Variable is a GLOBAL variable'
-SELECT COUNT(@@SESSION.innodb_use_stacktrace);
-ERROR HY000: Variable 'innodb_use_stacktrace' is a GLOBAL variable
-Expected error 'Variable is a GLOBAL variable'
-SELECT COUNT(@@GLOBAL.innodb_use_stacktrace);
-COUNT(@@GLOBAL.innodb_use_stacktrace)
-1
-1 Expected
-SELECT innodb_use_stacktrace = @@SESSION.innodb_use_stacktrace;
-ERROR 42S22: Unknown column 'innodb_use_stacktrace' in 'field list'
-Expected error 'Readonly variable'
diff --git a/mysql-test/suite/sys_vars/r/innodb_use_sys_stats_table_basic.result b/mysql-test/suite/sys_vars/r/innodb_use_sys_stats_table_basic.result
deleted file mode 100644
index d9d067c2cf9..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_use_sys_stats_table_basic.result
+++ /dev/null
@@ -1 +0,0 @@
-XtraDB extension
diff --git a/mysql-test/suite/sys_vars/r/innodb_use_trim_basic.result b/mysql-test/suite/sys_vars/r/innodb_use_trim_basic.result
deleted file mode 100644
index 855bccad522..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_use_trim_basic.result
+++ /dev/null
@@ -1,37 +0,0 @@
-SET @start_use_trim = @@global.innodb_use_trim;
-SELECT @start_use_trim;
-@start_use_trim
-1
-SELECT COUNT(@@GLOBAL.innodb_use_trim);
-COUNT(@@GLOBAL.innodb_use_trim)
-1
-1 Expected
-SET @@GLOBAL.innodb_use_trim=1;
-Warnings:
-Warning 131 Using innodb_use_trim is deprecated and the parameter will be removed in MariaDB 10.3.
-SELECT COUNT(@@GLOBAL.innodb_use_trim);
-COUNT(@@GLOBAL.innodb_use_trim)
-1
-1 Expected
-SELECT IF(@@GLOBAL.innodb_use_trim, 'ON', 'OFF') = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_use_trim';
-IF(@@GLOBAL.innodb_use_trim, 'ON', 'OFF') = VARIABLE_VALUE
-1
-1 Expected
-SELECT COUNT(@@GLOBAL.innodb_use_trim);
-COUNT(@@GLOBAL.innodb_use_trim)
-1
-1 Expected
-SELECT COUNT(VARIABLE_VALUE)
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_use_trim';
-COUNT(VARIABLE_VALUE)
-1
-1 Expected
-SET @@global.innodb_use_trim = @start_use_trim;
-Warnings:
-Warning 131 Using innodb_use_trim is deprecated and the parameter will be removed in MariaDB 10.3.
-SELECT @@global.innodb_use_trim;
-@@global.innodb_use_trim
-1
diff --git a/mysql-test/suite/sys_vars/r/lock_wait_timeout_basic.result b/mysql-test/suite/sys_vars/r/lock_wait_timeout_basic.result
index bc127bf339a..f5d66b7c561 100644
--- a/mysql-test/suite/sys_vars/r/lock_wait_timeout_basic.result
+++ b/mysql-test/suite/sys_vars/r/lock_wait_timeout_basic.result
@@ -54,17 +54,15 @@ SELECT @@session.lock_wait_timeout;
65535
'#------------------FN_DYNVARS_002_05-----------------------#'
SET @@global.lock_wait_timeout = 0;
-Warnings:
-Warning 1292 Truncated incorrect lock_wait_timeout value: '0'
SELECT @@global.lock_wait_timeout;
@@global.lock_wait_timeout
-1
+0
SET @@global.lock_wait_timeout = -1024;
Warnings:
Warning 1292 Truncated incorrect lock_wait_timeout value: '-1024'
SELECT @@global.lock_wait_timeout;
@@global.lock_wait_timeout
-1
+0
SET @@global.lock_wait_timeout = 31536001;
Warnings:
Warning 1292 Truncated incorrect lock_wait_timeout value: '31536001'
@@ -87,17 +85,15 @@ SELECT @@global.lock_wait_timeout;
@@global.lock_wait_timeout
31536000
SET @@session.lock_wait_timeout = 0;
-Warnings:
-Warning 1292 Truncated incorrect lock_wait_timeout value: '0'
SELECT @@session.lock_wait_timeout;
@@session.lock_wait_timeout
-1
+0
SET @@session.lock_wait_timeout = -2;
Warnings:
Warning 1292 Truncated incorrect lock_wait_timeout value: '-2'
SELECT @@session.lock_wait_timeout;
@@session.lock_wait_timeout
-1
+0
SET @@session.lock_wait_timeout = 31537000;
Warnings:
Warning 1292 Truncated incorrect lock_wait_timeout value: '31537000'
@@ -137,11 +133,9 @@ SELECT @@global.lock_wait_timeout;
@@global.lock_wait_timeout
1
SET @@global.lock_wait_timeout = FALSE;
-Warnings:
-Warning 1292 Truncated incorrect lock_wait_timeout value: '0'
SELECT @@global.lock_wait_timeout;
@@global.lock_wait_timeout
-1
+0
'#---------------------FN_DYNVARS_001_09----------------------#'
SET @@global.lock_wait_timeout = 10;
SET @@session.lock_wait_timeout = 11;
diff --git a/mysql-test/suite/sys_vars/r/log_disabled_statements_basic.result b/mysql-test/suite/sys_vars/r/log_disabled_statements_basic.result
new file mode 100644
index 00000000000..72bc8449f13
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/log_disabled_statements_basic.result
@@ -0,0 +1,60 @@
+SET @start_global_value = @@global.log_disabled_statements;
+select @@global.log_disabled_statements;
+@@global.log_disabled_statements
+sp
+select @@session.log_disabled_statements;
+@@session.log_disabled_statements
+sp
+show global variables like 'log_disabled_statements';
+Variable_name Value
+log_disabled_statements sp
+show session variables like 'log_disabled_statements';
+Variable_name Value
+log_disabled_statements sp
+select * from information_schema.global_variables where variable_name='log_disabled_statements';
+VARIABLE_NAME VARIABLE_VALUE
+LOG_DISABLED_STATEMENTS sp
+select * from information_schema.session_variables where variable_name='log_disabled_statements';
+VARIABLE_NAME VARIABLE_VALUE
+LOG_DISABLED_STATEMENTS sp
+set global log_disabled_statements=1;
+select @@global.log_disabled_statements;
+@@global.log_disabled_statements
+slave
+set session log_disabled_statements=1;
+select @@session.log_disabled_statements;
+@@session.log_disabled_statements
+slave
+set session log_disabled_statements=1;
+select @@session.log_disabled_statements;
+@@session.log_disabled_statements
+slave
+set session log_disabled_statements=2;
+select @@session.log_disabled_statements;
+@@session.log_disabled_statements
+sp
+set session log_disabled_statements='slave';
+select @@session.log_disabled_statements;
+@@session.log_disabled_statements
+slave
+set session log_disabled_statements='sp';
+select @@session.log_disabled_statements;
+@@session.log_disabled_statements
+sp
+set session log_disabled_statements='slave,sp';
+select @@session.log_disabled_statements;
+@@session.log_disabled_statements
+slave,sp
+set session log_disabled_statements='';
+select @@session.log_disabled_statements;
+@@session.log_disabled_statements
+
+set session log_disabled_statements=1.1;
+ERROR 42000: Incorrect argument type to variable 'log_disabled_statements'
+set session log_disabled_statements=1e1;
+ERROR 42000: Incorrect argument type to variable 'log_disabled_statements'
+set session log_disabled_statements="foo";
+ERROR 42000: Variable 'log_disabled_statements' can't be set to the value of 'foo'
+set session log_disabled_statements=1024;
+ERROR 42000: Variable 'log_disabled_statements' can't be set to the value of '1024'
+SET @@global.log_disabled_statements = @start_global_value;
diff --git a/mysql-test/suite/sys_vars/r/log_disabled_statements_func.result b/mysql-test/suite/sys_vars/r/log_disabled_statements_func.result
new file mode 100644
index 00000000000..4cfb2adbaac
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/log_disabled_statements_func.result
@@ -0,0 +1,82 @@
+SET @old_log_output= @@global.log_output;
+SET @old_log_disable_statements= @@global.log_disabled_statements;
+CREATE TABLE t1 (i INT PRIMARY KEY AUTO_INCREMENT, j VARCHAR(255) ) ENGINE=MyISAM;
+insert into t1 (j) values ('a'),('b'),('c'),('d');
+SET GLOBAL log_output = 'file,table';
+CREATE PROCEDURE slow()
+BEGIN
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b';
+SELECT count(*) from t1 where j>'a';
+END
+$
+select @@log_disabled_statements;
+@@log_disabled_statements
+sp
+TRUNCATE TABLE mysql.general_log;
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CALL slow();
+count(if(sleep(1) >= 0,0,NULL))
+2
+count(*)
+3
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part2';
+count(if(sleep(1) >= 0,0,NULL))
+2
+-->
+SELECT argument FROM mysql.general_log where command_type <> "Close stmt" and command_type <> "Prepare" and argument not like "%general_log%";
+argument
+check table t1
+CALL slow()
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part2'
+<--
+TRUNCATE TABLE mysql.general_log;
+SET SESSION log_disabled_statements="";
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CALL slow();
+count(if(sleep(1) >= 0,0,NULL))
+2
+count(*)
+3
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part3';
+count(if(sleep(1) >= 0,0,NULL))
+2
+-->
+SELECT argument FROM mysql.general_log where command_type <> "Close stmt" and command_type <> "Prepare" and argument not like "%general_log%";
+argument
+SET SESSION log_disabled_statements=""
+check table t1
+CALL slow()
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b'
+SELECT count(*) from t1 where j>'a'
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part3'
+<--
+TRUNCATE TABLE mysql.general_log;
+SET SESSION log_disabled_statements="sp,slave";
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+CALL slow();
+count(if(sleep(1) >= 0,0,NULL))
+2
+count(*)
+3
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part4';
+count(if(sleep(1) >= 0,0,NULL))
+2
+-->
+SELECT argument FROM mysql.general_log where command_type <> "Close stmt" and command_type <> "Prepare" and argument not like "%general_log%";
+argument
+SET SESSION log_disabled_statements="sp,slave"
+check table t1
+CALL slow()
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part4'
+<--
+DROP TABLE t1;
+DROP PROCEDURE slow;
+TRUNCATE TABLE mysql.general_log;
+SET @@global.log_output= @old_log_output;
+SET @@global.log_disabled_statements= @old_log_disable_statements;
diff --git a/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result b/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result
index fcb5abbcf91..ce0ebb62b46 100644
--- a/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result
+++ b/mysql-test/suite/sys_vars/r/log_queries_not_using_indexes_basic.result
@@ -1,4 +1,9 @@
SET @start_value= @@global.log_queries_not_using_indexes;
+SET @filter_start_value= @@global.log_slow_filter;
+SET @@global.log_queries_not_using_indexes= TRUE;
+SET @@session.log_queries_not_using_indexes= TRUE;
+SET @@global.log_queries_not_using_indexes= FALSE;
+SET @@session.log_queries_not_using_indexes= FALSE;
SET @@global.log_queries_not_using_indexes= DEFAULT;
SELECT @@global.log_queries_not_using_indexes;
@@global.log_queries_not_using_indexes
@@ -61,16 +66,41 @@ SET @@global.log_queries_not_using_indexes= @badvar;
ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of 'true'
SET GLOBAL log_queries_not_using_indexes= 'DEFAULT';
ERROR 42000: Variable 'log_queries_not_using_indexes' can't be set to the value of 'DEFAULT'
-SET log_queries_not_using_indexes= TRUE;
-ERROR HY000: Variable 'log_queries_not_using_indexes' is a GLOBAL variable and should be set with SET GLOBAL
-SET SESSION log_queries_not_using_indexes= TRUE;
-ERROR HY000: Variable 'log_queries_not_using_indexes' is a GLOBAL variable and should be set with SET GLOBAL
-SET @@session.log_queries_not_using_indexes= TRUE;
-ERROR HY000: Variable 'log_queries_not_using_indexes' is a GLOBAL variable and should be set with SET GLOBAL
-SET LOCAL log_queries_not_using_indexes= TRUE;
-ERROR HY000: Variable 'log_queries_not_using_indexes' is a GLOBAL variable and should be set with SET GLOBAL
SET @@global log_queries_not_using_indexes= TRUE;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'log_queries_not_using_indexes= TRUE' at line 1
SET @@SESSION log_queries_not_using_indexes= TRUE;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'log_queries_not_using_indexes= TRUE' at line 1
+SET @@SESSION.log_queries_not_using_indexes= TRUE;
+select @@SESSION.log_slow_filter;
+@@SESSION.log_slow_filter
+admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,not_using_index,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+SET @@SESSION.log_queries_not_using_indexes= FALSE;
+select @@SESSION.log_slow_filter;
+@@SESSION.log_slow_filter
+admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+SET @@GLOBAL.log_queries_not_using_indexes= TRUE;
+select @@GLOBAL.log_slow_filter;
+@@GLOBAL.log_slow_filter
+admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,not_using_index,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+SET @@GLOBAL.log_queries_not_using_indexes= FALSE;
+select @@GLOBAL.log_slow_filter;
+@@GLOBAL.log_slow_filter
+admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+SET @@SESSION.log_slow_filter="";
+select @@SESSION.log_queries_not_using_indexes;
+@@SESSION.log_queries_not_using_indexes
+0
+SET @@SESSION.log_slow_filter="not_using_index";
+select @@SESSION.log_queries_not_using_indexes;
+@@SESSION.log_queries_not_using_indexes
+1
+SET @@GLOBAL.log_slow_filter="";
+select @@GLOBAL.log_queries_not_using_indexes;
+@@GLOBAL.log_queries_not_using_indexes
+0
+SET @@GLOBAL.log_slow_filter="not_using_index";
+select @@GLOBAL.log_queries_not_using_indexes;
+@@GLOBAL.log_queries_not_using_indexes
+1
SET @@global.log_queries_not_using_indexes= @start_value;
+SET @@global.log_slow_filter= @filter_start_value;
diff --git a/mysql-test/suite/sys_vars/r/log_result_errors_basic.result b/mysql-test/suite/sys_vars/r/log_result_errors_basic.result
new file mode 100644
index 00000000000..5d3696901a6
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/log_result_errors_basic.result
@@ -0,0 +1,148 @@
+SET @start_global_value = @@global.log_result_errors;
+SELECT @start_global_value;
+@start_global_value
+0
+SET @start_session_value = @@session.log_result_errors;
+SELECT @start_session_value;
+@start_session_value
+0
+'#--------------------FN_DYNVARS_067_01-------------------------#'
+SET @@global.log_result_errors = 1;
+SET @@global.log_result_errors = DEFAULT;
+SELECT @@global.log_result_errors;
+@@global.log_result_errors
+0
+SET @@session.log_result_errors = 2;
+SET @@session.log_result_errors = DEFAULT;
+SELECT @@session.log_result_errors;
+@@session.log_result_errors
+0
+'#--------------------FN_DYNVARS_067_02-------------------------#'
+SET @@global.log_result_errors = DEFAULT;
+SELECT @@global.log_result_errors = 0;
+@@global.log_result_errors = 0
+1
+SET @@session.log_result_errors = DEFAULT;
+SELECT @@session.log_result_errors = 0;
+@@session.log_result_errors = 0
+1
+'#--------------------FN_DYNVARS_067_03-------------------------#'
+SET @@global.log_result_errors = 0;
+SELECT @@global.log_result_errors;
+@@global.log_result_errors
+0
+SET @@global.log_result_errors = 1;
+SELECT @@global.log_result_errors;
+@@global.log_result_errors
+1
+SET @@global.log_result_errors = 3;
+SELECT @@global.log_result_errors;
+@@global.log_result_errors
+3
+'#--------------------FN_DYNVARS_067_04-------------------------#'
+SET @@session.log_result_errors = 0;
+SELECT @@session.log_result_errors;
+@@session.log_result_errors
+0
+SET @@session.log_result_errors = 1;
+SELECT @@session.log_result_errors;
+@@session.log_result_errors
+1
+SET @@session.log_result_errors = 3;
+SELECT @@session.log_result_errors;
+@@session.log_result_errors
+3
+'#------------------FN_DYNVARS_067_05-----------------------#'
+SET @@global.log_result_errors = 4;
+Warnings:
+Warning 1292 Truncated incorrect log_result_errors value: '4'
+SELECT @@global.log_result_errors;
+@@global.log_result_errors
+3
+SET @@global.log_result_errors = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'log_result_errors'
+SELECT @@global.log_result_errors;
+@@global.log_result_errors
+3
+SET @@global.log_result_errors = test;
+ERROR 42000: Incorrect argument type to variable 'log_result_errors'
+SELECT @@global.log_result_errors;
+@@global.log_result_errors
+3
+SET @@session.log_result_errors = -2;
+Warnings:
+Warning 1292 Truncated incorrect log_result_errors value: '-2'
+SELECT @@session.log_result_errors;
+@@session.log_result_errors
+0
+SET @@session.log_result_errors = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'log_result_errors'
+SET @@session.log_result_errors = test;
+ERROR 42000: Incorrect argument type to variable 'log_result_errors'
+SELECT @@session.log_result_errors;
+@@session.log_result_errors
+0
+'#------------------FN_DYNVARS_067_06-----------------------#'
+SELECT @@global.log_result_errors = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='log_result_errors';
+@@global.log_result_errors = VARIABLE_VALUE
+1
+'#------------------FN_DYNVARS_067_07-----------------------#'
+SELECT @@session.log_result_errors = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+WHERE VARIABLE_NAME='log_result_errors';
+@@session.log_result_errors = VARIABLE_VALUE
+1
+'#------------------FN_DYNVARS_067_08-----------------------#'
+SET @@global.log_result_errors = TRUE;
+SELECT @@global.log_result_errors;
+@@global.log_result_errors
+1
+SET @@global.log_result_errors = FALSE;
+SELECT @@global.log_result_errors;
+@@global.log_result_errors
+0
+'#---------------------FN_DYNVARS_067_09----------------------#'
+SET @@session.log_result_errors = 1;
+SET @@global.log_result_errors = 2;
+SELECT @@log_result_errors = @@global.log_result_errors;
+@@log_result_errors = @@global.log_result_errors
+0
+'#---------------------FN_DYNVARS_067_10----------------------#'
+SET @@session.log_result_errors = 1;
+SET @@global.log_result_errors = 2;
+SELECT @@log_result_errors = @@local.log_result_errors;
+@@log_result_errors = @@local.log_result_errors
+1
+SELECT @@local.log_result_errors = @@session.log_result_errors;
+@@local.log_result_errors = @@session.log_result_errors
+1
+SET @@session.log_result_errors = 1;
+create table t1(a int primary key);
+insert into t1 values(1);
+insert into t1 values(1);
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+insert ignore into t1 values(1);
+Warnings:
+Warning 1062 Duplicate entry '1' for key 'PRIMARY'
+SET @@session.log_result_errors = 3;
+insert ignore into t1 values(1);
+Warnings:
+Warning 1062 Duplicate entry '1' for key 'PRIMARY'
+drop table t1;
+SET @@global.log_result_errors = @start_global_value;
+SELECT @@global.log_result_errors;
+@@global.log_result_errors
+0
+SET @@session.log_result_errors = @start_session_value;
+SELECT @@session.log_result_errors;
+@@session.log_result_errors
+0
+[WARN RESULT] affected_rows: 0 status: 2 warning_count: 1
+[WARN RESULT] Level: Warning Code: 1292 'Truncated incorrect log_result_errors value: '4''
+[ERROR RESULT] Code: 1232 'Incorrect argument type to variable 'log_result_errors''
+[ERROR RESULT] Code: 1232 'Incorrect argument type to variable 'log_result_errors''
+[ERROR RESULT] Code: 1062 'Duplicate entry '1' for key 'PRIMARY''
+[WARN RESULT] affected_rows: 0 status: 2 warning_count: 1
+[WARN RESULT] Level: Warning Code: 1062 'Duplicate entry '1' for key 'PRIMARY''
diff --git a/mysql-test/suite/sys_vars/r/log_slow_admin_statements_func.result b/mysql-test/suite/sys_vars/r/log_slow_admin_statements_func.result
index daddc4af627..95916d8ce15 100644
--- a/mysql-test/suite/sys_vars/r/log_slow_admin_statements_func.result
+++ b/mysql-test/suite/sys_vars/r/log_slow_admin_statements_func.result
@@ -10,7 +10,7 @@ j VARCHAR(255)
SET GLOBAL log_output = 'file,table';
SET GLOBAL slow_query_log = on;
SET SESSION long_query_time = 0;
-SET GLOBAL log_slow_admin_statements = on;
+SET SESSION log_slow_admin_statements = on;
ALTER TABLE log_slow_admin_statements ADD COLUMN k INT DEFAULT 17;
CREATE PROCEDURE add_rows()
BEGIN
@@ -44,3 +44,37 @@ SET @@session.long_query_time= @old_long_query_time;
SET @@global.log_slow_admin_statements= @old_log_slow_admin_statements;
DROP PROCEDURE add_rows;
TRUNCATE TABLE mysql.slow_log;
+SET @save_log_slow_disabled_statements= @@global.log_slow_disabled_statements;
+SET @@SESSION.log_slow_admin_statements= TRUE;
+select @@SESSION.log_slow_disabled_statements;
+@@SESSION.log_slow_disabled_statements
+sp
+SET @@SESSION.log_slow_admin_statements= FALSE;
+select @@SESSION.log_slow_disabled_statements;
+@@SESSION.log_slow_disabled_statements
+admin,sp
+SET @@GLOBAL.log_slow_admin_statements= TRUE;
+select @@GLOBAL.log_slow_disabled_statements;
+@@GLOBAL.log_slow_disabled_statements
+sp
+SET @@GLOBAL.log_slow_admin_statements= FALSE;
+select @@GLOBAL.log_slow_disabled_statements;
+@@GLOBAL.log_slow_disabled_statements
+admin,sp
+SET @@SESSION.log_slow_disabled_statements="";
+select @@SESSION.log_slow_admin_statements;
+@@SESSION.log_slow_admin_statements
+1
+SET @@SESSION.log_slow_disabled_statements="admin";
+select @@SESSION.log_slow_admin_statements;
+@@SESSION.log_slow_admin_statements
+0
+SET @@GLOBAL.log_slow_disabled_statements="";
+select @@GLOBAL.log_slow_admin_statements;
+@@GLOBAL.log_slow_admin_statements
+1
+SET @@GLOBAL.log_slow_disabled_statements="admin";
+select @@GLOBAL.log_slow_admin_statements;
+@@GLOBAL.log_slow_admin_statements
+0
+SET @@global.log_slow_disabled_statements= @save_log_slow_disabled_statements;
diff --git a/mysql-test/suite/sys_vars/r/log_slow_disabled_statements_basic.result b/mysql-test/suite/sys_vars/r/log_slow_disabled_statements_basic.result
new file mode 100644
index 00000000000..7ef4931a288
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/log_slow_disabled_statements_basic.result
@@ -0,0 +1,72 @@
+SET @start_global_value = @@global.log_slow_disabled_statements;
+select @@global.log_slow_disabled_statements;
+@@global.log_slow_disabled_statements
+sp
+select @@session.log_slow_disabled_statements;
+@@session.log_slow_disabled_statements
+sp
+show global variables like 'log_slow_disabled_statements';
+Variable_name Value
+log_slow_disabled_statements sp
+show session variables like 'log_slow_disabled_statements';
+Variable_name Value
+log_slow_disabled_statements sp
+select * from information_schema.global_variables where variable_name='log_slow_disabled_statements';
+VARIABLE_NAME VARIABLE_VALUE
+LOG_SLOW_DISABLED_STATEMENTS sp
+select * from information_schema.session_variables where variable_name='log_slow_disabled_statements';
+VARIABLE_NAME VARIABLE_VALUE
+LOG_SLOW_DISABLED_STATEMENTS sp
+set global log_slow_disabled_statements=1;
+select @@global.log_slow_disabled_statements;
+@@global.log_slow_disabled_statements
+admin
+set session log_slow_disabled_statements=1;
+select @@session.log_slow_disabled_statements;
+@@session.log_slow_disabled_statements
+admin
+set session log_slow_disabled_statements=1;
+select @@session.log_slow_disabled_statements;
+@@session.log_slow_disabled_statements
+admin
+set session log_slow_disabled_statements=2;
+select @@session.log_slow_disabled_statements;
+@@session.log_slow_disabled_statements
+call
+set session log_slow_disabled_statements=5;
+select @@session.log_slow_disabled_statements;
+@@session.log_slow_disabled_statements
+admin,slave
+set session log_slow_disabled_statements='admin';
+select @@session.log_slow_disabled_statements;
+@@session.log_slow_disabled_statements
+admin
+set session log_slow_disabled_statements='slave';
+select @@session.log_slow_disabled_statements;
+@@session.log_slow_disabled_statements
+slave
+set session log_slow_disabled_statements='call';
+select @@session.log_slow_disabled_statements;
+@@session.log_slow_disabled_statements
+call
+set session log_slow_disabled_statements='sp';
+select @@session.log_slow_disabled_statements;
+@@session.log_slow_disabled_statements
+sp
+set session log_slow_disabled_statements='admin,sp,call,slave';
+select @@session.log_slow_disabled_statements;
+@@session.log_slow_disabled_statements
+admin,call,slave,sp
+set session log_slow_disabled_statements='';
+select @@session.log_slow_disabled_statements;
+@@session.log_slow_disabled_statements
+
+set session log_slow_disabled_statements=1.1;
+ERROR 42000: Incorrect argument type to variable 'log_slow_disabled_statements'
+set session log_slow_disabled_statements=1e1;
+ERROR 42000: Incorrect argument type to variable 'log_slow_disabled_statements'
+set session log_slow_disabled_statements="foo";
+ERROR 42000: Variable 'log_slow_disabled_statements' can't be set to the value of 'foo'
+set session log_slow_disabled_statements=1024;
+ERROR 42000: Variable 'log_slow_disabled_statements' can't be set to the value of '1024'
+SET @@global.log_slow_disabled_statements = @start_global_value;
diff --git a/mysql-test/suite/sys_vars/r/log_slow_disabled_statements_func.result b/mysql-test/suite/sys_vars/r/log_slow_disabled_statements_func.result
new file mode 100644
index 00000000000..80a723a305d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/log_slow_disabled_statements_func.result
@@ -0,0 +1,166 @@
+SET @old_log_output= @@global.log_output;
+SET @old_slow_query_log= @@global.slow_query_log;
+SET @old_long_query_time= @@session.long_query_time;
+SET @old_log_slow_disable_statements= @@global.log_slow_disabled_statements;
+SET @@session.log_slow_verbosity="explain,innodb,query_plan";
+CREATE TABLE t1 (i INT PRIMARY KEY AUTO_INCREMENT, j blob) ENGINE=MyISAM;
+insert into t1 (j) values ('a'),('b'),('c'),('d');
+create table t2 (a int auto_increment primary key) engine=myisam;
+SET GLOBAL log_output = 'file,table';
+SET GLOBAL slow_query_log = on;
+CREATE PROCEDURE slow()
+BEGIN
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b';
+SELECT count(*) from t1 where j>'a';
+insert into t2 () values();
+END
+$
+CREATE PROCEDURE slow2()
+BEGIN
+SELECT j,count(*) from t1 group by j;
+create temporary table t3 (a int);
+alter table t3 add column (b int);
+call slow();
+drop temporary table t3;
+SELECT j,count(*)+1 from t1 group by j,i;
+END
+$
+SET SESSION long_query_time = 0;
+SELECT @@log_slow_disabled_statements;
+@@log_slow_disabled_statements
+sp
+TRUNCATE TABLE mysql.slow_log;
+ALTER TABLE t1 add column extra int;
+CALL slow2();
+j count(*)
+a 1
+b 1
+c 1
+d 1
+count(if(sleep(1) >= 0,0,NULL))
+2
+count(*)
+3
+j count(*)+1
+a 2
+b 2
+c 2
+d 2
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part2';
+count(if(sleep(1) >= 0,0,NULL))
+2
+-->
+SELECT sql_text FROM mysql.slow_log where sql_text <> "Close stmt" and sql_text <> "Prepare";
+sql_text
+TRUNCATE TABLE mysql.slow_log
+ALTER TABLE t1 add column extra int
+CALL slow2()
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part2'
+<--
+SET SESSION log_slow_disabled_statements="call,admin";
+TRUNCATE TABLE mysql.slow_log;
+ALTER TABLE t1 add column extra2 int;
+CALL slow2();
+j count(*)
+a 1
+b 1
+c 1
+d 1
+count(if(sleep(1) >= 0,0,NULL))
+2
+count(*)
+3
+j count(*)+1
+a 2
+b 2
+c 2
+d 2
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part3';
+count(if(sleep(1) >= 0,0,NULL))
+2
+-->
+SELECT sql_text FROM mysql.slow_log where sql_text <> "Close stmt" and sql_text <> "Prepare";
+sql_text
+TRUNCATE TABLE mysql.slow_log
+SELECT j,count(*) from t1 group by j
+create temporary table t3 (a int)
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b'
+SELECT count(*) from t1 where j>'a'
+insert into t2 () values()
+drop temporary table t3
+SELECT j,count(*)+1 from t1 group by j,i
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part3'
+<--
+SET SESSION log_slow_disabled_statements="";
+TRUNCATE TABLE mysql.slow_log;
+ALTER TABLE t1 add column extra3 int;
+CALL slow2();
+j count(*)
+a 1
+b 1
+c 1
+d 1
+count(if(sleep(1) >= 0,0,NULL))
+2
+count(*)
+3
+j count(*)+1
+a 2
+b 2
+c 2
+d 2
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part4';
+count(if(sleep(1) >= 0,0,NULL))
+2
+-->
+SELECT sql_text FROM mysql.slow_log where sql_text <> "Close stmt" and sql_text <> "Prepare";
+sql_text
+TRUNCATE TABLE mysql.slow_log
+ALTER TABLE t1 add column extra3 int
+SELECT j,count(*) from t1 group by j
+create temporary table t3 (a int)
+alter table t3 add column (b int)
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b'
+SELECT count(*) from t1 where j>'a'
+insert into t2 () values()
+call slow()
+drop temporary table t3
+SELECT j,count(*)+1 from t1 group by j,i
+CALL slow2()
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part4'
+<--
+SET SESSION log_slow_disabled_statements="call,admin,slave,sp";
+TRUNCATE TABLE mysql.slow_log;
+ALTER TABLE t1 add column extra4 int;
+CALL slow2();
+j count(*)
+a 1
+b 1
+c 1
+d 1
+count(if(sleep(1) >= 0,0,NULL))
+2
+count(*)
+3
+j count(*)+1
+a 2
+b 2
+c 2
+d 2
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part5';
+count(if(sleep(1) >= 0,0,NULL))
+2
+-->
+SELECT sql_text FROM mysql.slow_log where sql_text <> "Close stmt" and sql_text <> "Prepare";
+sql_text
+TRUNCATE TABLE mysql.slow_log
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part5'
+<--
+DROP TABLE t1,t2;
+DROP PROCEDURE slow;
+DROP PROCEDURE slow2;
+SET @@session.long_query_time= @old_long_query_time;
+TRUNCATE TABLE mysql.slow_log;
+SET @@global.log_output= @old_log_output;
+SET @@global.slow_query_log= @old_slow_query_log;
+SET @@global.log_slow_disabled_statements= @old_log_slow_disable_statements;
diff --git a/mysql-test/suite/sys_vars/r/log_slow_filter_basic.result b/mysql-test/suite/sys_vars/r/log_slow_filter_basic.result
index 5b6eccf2185..93558fb6dd9 100644
--- a/mysql-test/suite/sys_vars/r/log_slow_filter_basic.result
+++ b/mysql-test/suite/sys_vars/r/log_slow_filter_basic.result
@@ -1,22 +1,22 @@
SET @start_global_value = @@global.log_slow_filter;
select @@global.log_slow_filter;
@@global.log_slow_filter
-admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
select @@session.log_slow_filter;
@@session.log_slow_filter
-admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
show global variables like 'log_slow_filter';
Variable_name Value
-log_slow_filter admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+log_slow_filter admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
show session variables like 'log_slow_filter';
Variable_name Value
-log_slow_filter admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+log_slow_filter admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
select * from information_schema.global_variables where variable_name='log_slow_filter';
VARIABLE_NAME VARIABLE_VALUE
-LOG_SLOW_FILTER admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+LOG_SLOW_FILTER admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
select * from information_schema.session_variables where variable_name='log_slow_filter';
VARIABLE_NAME VARIABLE_VALUE
-LOG_SLOW_FILTER admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+LOG_SLOW_FILTER admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
set global log_slow_filter=1;
select @@global.log_slow_filter;
@@global.log_slow_filter
@@ -57,6 +57,10 @@ set session log_slow_filter='full_scan';
select @@session.log_slow_filter;
@@session.log_slow_filter
full_scan
+set session log_slow_filter='not_using_index';
+select @@session.log_slow_filter;
+@@session.log_slow_filter
+not_using_index
set session log_slow_filter='query_cache';
select @@session.log_slow_filter;
@@session.log_slow_filter
@@ -77,10 +81,10 @@ set session log_slow_filter='filesort,query_cache';
select @@session.log_slow_filter;
@@session.log_slow_filter
filesort,query_cache
-set session log_slow_filter='admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk';
+set session log_slow_filter='admin,not_using_index,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk';
select @@session.log_slow_filter;
@@session.log_slow_filter
-admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+admin,filesort,filesort_on_disk,full_join,full_scan,not_using_index,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
set session log_slow_filter='';
select @@session.log_slow_filter;
@@session.log_slow_filter
@@ -91,6 +95,6 @@ set session log_slow_filter=1e1;
ERROR 42000: Incorrect argument type to variable 'log_slow_filter'
set session log_slow_filter="foo";
ERROR 42000: Variable 'log_slow_filter' can't be set to the value of 'foo'
-set session log_slow_filter=1024;
-ERROR 42000: Variable 'log_slow_filter' can't be set to the value of '1024'
+set session log_slow_filter=16384;
+ERROR 42000: Variable 'log_slow_filter' can't be set to the value of '16384'
SET @@global.log_slow_filter = @start_global_value;
diff --git a/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result b/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
index cb3291dadea..87c837986ac 100644
--- a/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
+++ b/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
@@ -1,63 +1,63 @@
SET @start_global_value = @@global.optimizer_switch;
SELECT @start_global_value;
@start_global_value
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
select @@session.optimizer_switch;
@@session.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
show global variables like 'optimizer_switch';
Variable_name Value
-optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
show session variables like 'optimizer_switch';
Variable_name Value
-optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+optimizer_switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
select * from information_schema.global_variables where variable_name='optimizer_switch';
VARIABLE_NAME VARIABLE_VALUE
-OPTIMIZER_SWITCH index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+OPTIMIZER_SWITCH index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
select * from information_schema.session_variables where variable_name='optimizer_switch';
VARIABLE_NAME VARIABLE_VALUE
-OPTIMIZER_SWITCH index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+OPTIMIZER_SWITCH index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
set global optimizer_switch=10;
set session optimizer_switch=5;
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=off,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_grouping_derived=off
+index_merge=off,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_materialized=off
select @@session.optimizer_switch;
@@session.optimizer_switch
-index_merge=on,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_grouping_derived=off
+index_merge=on,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_materialized=off
set global optimizer_switch="index_merge_sort_union=on";
set session optimizer_switch="index_merge=off";
select @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_grouping_derived=off
+index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_materialized=off
select @@session.optimizer_switch;
@@session.optimizer_switch
-index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_grouping_derived=off
+index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_materialized=off
show global variables like 'optimizer_switch';
Variable_name Value
-optimizer_switch index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_grouping_derived=off
+optimizer_switch index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_materialized=off
show session variables like 'optimizer_switch';
Variable_name Value
-optimizer_switch index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_grouping_derived=off
+optimizer_switch index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_materialized=off
select * from information_schema.global_variables where variable_name='optimizer_switch';
VARIABLE_NAME VARIABLE_VALUE
-OPTIMIZER_SWITCH index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_grouping_derived=off
+OPTIMIZER_SWITCH index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_materialized=off
select * from information_schema.session_variables where variable_name='optimizer_switch';
VARIABLE_NAME VARIABLE_VALUE
-OPTIMIZER_SWITCH index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_grouping_derived=off
+OPTIMIZER_SWITCH index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_materialized=off
set session optimizer_switch="default";
select @@session.optimizer_switch;
@@session.optimizer_switch
-index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_grouping_derived=off
+index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=off,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=off,split_materialized=off
set optimizer_switch = replace(@@optimizer_switch, '=off', '=on');
Warnings:
Warning 1681 'engine_condition_pushdown=on' is deprecated and will be removed in a future release
select @@optimizer_switch;
@@optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=on,mrr_cost_based=on,mrr_sort_keys=on,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=on,mrr_cost_based=on,mrr_sort_keys=on,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
set global optimizer_switch=1.1;
ERROR 42000: Incorrect argument type to variable 'optimizer_switch'
set global optimizer_switch=1e1;
@@ -69,4 +69,4 @@ ERROR 42000: Variable 'optimizer_switch' can't be set to the value of 'foobar'
SET @@global.optimizer_switch = @start_global_value;
SELECT @@global.optimizer_switch;
@@global.optimizer_switch
-index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
diff --git a/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result b/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result
index 7454f0b0089..0c90462df59 100644
--- a/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result
+++ b/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result
@@ -65,6 +65,12 @@ set global rpl_semi_sync_master_enabled=1e1;
ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_master_enabled'
set global rpl_semi_sync_master_enabled="some text";
ERROR 42000: Variable 'rpl_semi_sync_master_enabled' can't be set to the value of 'some text'
+connect con1,localhost,root,,;
+connect con2,localhost,root,,;
+disconnect con1;
+disconnect con2;
+connection default;
+SET @@global.rpl_semi_sync_master_enabled = 1;
SET @@global.rpl_semi_sync_master_enabled = @start_global_value;
select @@global.rpl_semi_sync_master_enabled;
@@global.rpl_semi_sync_master_enabled
diff --git a/mysql-test/suite/sys_vars/r/session_track_system_variables_basic.result b/mysql-test/suite/sys_vars/r/session_track_system_variables_basic.result
index 7162e40ef6b..78ca8ca4ad1 100644
--- a/mysql-test/suite/sys_vars/r/session_track_system_variables_basic.result
+++ b/mysql-test/suite/sys_vars/r/session_track_system_variables_basic.result
@@ -5,25 +5,25 @@
# Global - default
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
-
+autocommit,character_set_client,character_set_connection,character_set_results,time_zone
# Session - default
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
-
+autocommit,character_set_client,character_set_connection,character_set_results,time_zone
# via INFORMATION_SCHEMA.GLOBAL_VARIABLES
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'session_track%' ORDER BY VARIABLE_NAME;
VARIABLE_NAME VARIABLE_VALUE
SESSION_TRACK_SCHEMA ON
SESSION_TRACK_STATE_CHANGE OFF
-SESSION_TRACK_SYSTEM_VARIABLES
+SESSION_TRACK_SYSTEM_VARIABLES autocommit,character_set_client,character_set_connection,character_set_results,time_zone
SESSION_TRACK_TRANSACTION_INFO OFF
# via INFORMATION_SCHEMA.SESSION_VARIABLES
SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE 'session_track%' ORDER BY VARIABLE_NAME;
VARIABLE_NAME VARIABLE_VALUE
SESSION_TRACK_SCHEMA ON
SESSION_TRACK_STATE_CHANGE OFF
-SESSION_TRACK_SYSTEM_VARIABLES
+SESSION_TRACK_SYSTEM_VARIABLES autocommit,character_set_client,character_set_connection,character_set_results,time_zone
SESSION_TRACK_TRANSACTION_INFO OFF
SET @global_saved_tmp = @@global.session_track_system_variables;
@@ -34,7 +34,7 @@ SELECT @@global.session_track_system_variables;
autocommit
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
-
+autocommit,character_set_client,character_set_connection,character_set_results,time_zone
# Altering session variable's value
SET @@session.session_track_system_variables='autocommit';
@@ -72,25 +72,25 @@ SET @@session.session_track_system_variables = DEFAULT;
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
-
+autocommit,character_set_client,character_set_connection,character_set_results,time_zone
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
-
+autocommit,character_set_client,character_set_connection,character_set_results,time_zone
# Variables' values in a new session (con2).
connect con2,"127.0.0.1",root,,test,$MASTER_MYPORT,;
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
-
+autocommit,character_set_client,character_set_connection,character_set_results,time_zone
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
-
+autocommit,character_set_client,character_set_connection,character_set_results,time_zone
# Altering session should not affect global.
SET @@session.session_track_system_variables = 'sql_mode';
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
-
+autocommit,character_set_client,character_set_connection,character_set_results,time_zone
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
sql_mode
@@ -104,7 +104,7 @@ SELECT @@global.session_track_system_variables;
sql_mode
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
-
+autocommit,character_set_client,character_set_connection,character_set_results,time_zone
# Switching to the default connection.
connection default;
diff --git a/mysql-test/suite/sys_vars/r/slave_transaction_retry_errors.result b/mysql-test/suite/sys_vars/r/slave_transaction_retry_errors.result
new file mode 100644
index 00000000000..a7815bb3f78
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/slave_transaction_retry_errors.result
@@ -0,0 +1,21 @@
+select @@global.slave_transaction_retry_errors;
+@@global.slave_transaction_retry_errors
+1213,1205,10,20,400
+select @@session.slave_transaction_retry_errors;
+ERROR HY000: Variable 'slave_transaction_retry_errors' is a GLOBAL variable
+show global variables like 'slave_transaction_retry_errors';
+Variable_name Value
+slave_transaction_retry_errors 1213,1205,10,20,400
+show session variables like 'slave_transaction_retry_errors';
+Variable_name Value
+slave_transaction_retry_errors 1213,1205,10,20,400
+select * from information_schema.global_variables where variable_name='slave_transaction_retry_errors';
+VARIABLE_NAME VARIABLE_VALUE
+SLAVE_TRANSACTION_RETRY_ERRORS 1213,1205,10,20,400
+select * from information_schema.session_variables where variable_name='slave_transaction_retry_errors';
+VARIABLE_NAME VARIABLE_VALUE
+SLAVE_TRANSACTION_RETRY_ERRORS 1213,1205,10,20,400
+set global slave_transaction_retry_errors=1;
+ERROR HY000: Variable 'slave_transaction_retry_errors' is a read only variable
+set session slave_transaction_retry_errors=1;
+ERROR HY000: Variable 'slave_transaction_retry_errors' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/slave_transaction_retry_interval_basic.result b/mysql-test/suite/sys_vars/r/slave_transaction_retry_interval_basic.result
new file mode 100644
index 00000000000..8be45f83341
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/slave_transaction_retry_interval_basic.result
@@ -0,0 +1,126 @@
+SET @start_global_value = @@global.slave_transaction_retry_interval;
+SELECT @start_global_value;
+@start_global_value
+0
+'#--------------------FN_DYNVARS_149_01-------------------------#'
+SET @@global.slave_transaction_retry_interval = 50;
+SET @@global.slave_transaction_retry_interval = DEFAULT;
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+0
+'#--------------------FN_DYNVARS_149_02-------------------------#'
+SET @@global.slave_transaction_retry_interval = DEFAULT;
+SELECT @@global.slave_transaction_retry_interval = 10;
+@@global.slave_transaction_retry_interval = 10
+0
+'#--------------------FN_DYNVARS_149_03-------------------------#'
+SET @@global.slave_transaction_retry_interval = 0;
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+0
+SET @@global.slave_transaction_retry_interval = 1;
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+1
+SET @@global.slave_transaction_retry_interval = 15;
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+15
+SET @@global.slave_transaction_retry_interval = 1024;
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+1024
+SET @@global.slave_transaction_retry_interval = 2147483648;
+Warnings:
+Warning 1292 Truncated incorrect slave_transaction_retry_interval value: '2147483648'
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+3600
+SET @@global.slave_transaction_retry_interval = 2147483648*2-1;
+Warnings:
+Warning 1292 Truncated incorrect slave_transaction_retry_interval value: '4294967295'
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+3600
+SET @@global.slave_transaction_retry_interval = 2147483649*2;
+Warnings:
+Warning 1292 Truncated incorrect slave_transaction_retry_interval value: '4294967298'
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+3600
+SET @@global.slave_transaction_retry_interval = 4294967295;
+Warnings:
+Warning 1292 Truncated incorrect slave_transaction_retry_interval value: '4294967295'
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+3600
+'#--------------------FN_DYNVARS_149_04-------------------------#'
+SET @@slave_transaction_retry_interval = 2;
+ERROR HY000: Variable 'slave_transaction_retry_interval' is a GLOBAL variable and should be set with SET GLOBAL
+SET @@session.slave_transaction_retry_interval = 3;
+ERROR HY000: Variable 'slave_transaction_retry_interval' is a GLOBAL variable and should be set with SET GLOBAL
+SET @@local.slave_transaction_retry_interval = 4;
+ERROR HY000: Variable 'slave_transaction_retry_interval' is a GLOBAL variable and should be set with SET GLOBAL
+'#------------------FN_DYNVARS_149_05-----------------------#'
+SET @@global.slave_transaction_retry_interval = -1;
+Warnings:
+Warning 1292 Truncated incorrect slave_transaction_retry_interval value: '-1'
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+0
+SET @@global.slave_transaction_retry_interval = 2147483649*2147483649;
+Warnings:
+Warning 1292 Truncated incorrect slave_transaction_retry_interval value: '4611686022722355201'
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+3600
+SET @@global.slave_transaction_retry_interval = 65530.34;
+ERROR 42000: Incorrect argument type to variable 'slave_transaction_retry_interval'
+SET @@global.slave_transaction_retry_interval = '100';
+ERROR 42000: Incorrect argument type to variable 'slave_transaction_retry_interval'
+SET @@global.slave_transaction_retry_interval = 7483649.56;
+ERROR 42000: Incorrect argument type to variable 'slave_transaction_retry_interval'
+SET @@global.slave_transaction_retry_interval = ON;
+ERROR 42000: Incorrect argument type to variable 'slave_transaction_retry_interval'
+SET @@global.slave_transaction_retry_interval = OFF;
+ERROR 42000: Incorrect argument type to variable 'slave_transaction_retry_interval'
+'#------------------FN_DYNVARS_149_06-----------------------#'
+SET @@global.slave_transaction_retry_interval = 3000;
+SELECT @@global.slave_transaction_retry_interval = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='slave_transaction_retry_interval';
+@@global.slave_transaction_retry_interval = VARIABLE_VALUE
+1
+'#------------------FN_DYNVARS_149_07-----------------------#'
+SELECT count(VARIABLE_VALUE)
+FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+WHERE VARIABLE_NAME='slave_transaction_retry_interval';
+count(VARIABLE_VALUE)
+1
+'#------------------FN_DYNVARS_149_08-----------------------#'
+SET @@global.slave_transaction_retry_interval = TRUE;
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+1
+SET @@global.slave_transaction_retry_interval = FALSE;
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+0
+'#---------------------FN_DYNVARS_149_09----------------------#'
+SET @@global.slave_transaction_retry_interval = 60*60;
+SELECT @@slave_transaction_retry_interval = @@global.slave_transaction_retry_interval;
+@@slave_transaction_retry_interval = @@global.slave_transaction_retry_interval
+1
+'#---------------------FN_DYNVARS_149_10----------------------#'
+SET slave_transaction_retry_interval = 2048;
+ERROR HY000: Variable 'slave_transaction_retry_interval' is a GLOBAL variable and should be set with SET GLOBAL
+SELECT slave_transaction_retry_interval;
+ERROR 42S22: Unknown column 'slave_transaction_retry_interval' in 'field list'
+SELECT @@slave_transaction_retry_interval;
+@@slave_transaction_retry_interval
+3600
+SET global slave_transaction_retry_interval = 99;
+SET @@global.slave_transaction_retry_interval = @start_global_value;
+SELECT @@global.slave_transaction_retry_interval;
+@@global.slave_transaction_retry_interval
+0
diff --git a/mysql-test/suite/sys_vars/r/sql_mode_basic.result b/mysql-test/suite/sys_vars/r/sql_mode_basic.result
index 3bd813334eb..a200f620a7c 100644
--- a/mysql-test/suite/sys_vars/r/sql_mode_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_mode_basic.result
@@ -158,7 +158,7 @@ MYSQL40,HIGH_NOT_PRECEDENCE
SET @@global.sql_mode = ORACLE;
SELECT @@global.sql_mode;
@@global.sql_mode
-PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
+PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT
SET @@global.sql_mode = POSTGRESQL;
SELECT @@global.sql_mode;
@@global.sql_mode
@@ -288,7 +288,7 @@ MYSQL40,HIGH_NOT_PRECEDENCE
SET @@session.sql_mode = ORACLE;
SELECT @@session.sql_mode;
@@session.sql_mode
-PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
+PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT
SET @@session.sql_mode = POSTGRESQL;
SELECT @@session.sql_mode;
@@session.sql_mode
@@ -357,17 +357,17 @@ REAL_AS_FLOAT,PIPES_AS_CONCAT
SET @@global.sql_mode = 50000;
SELECT @@global.sql_mode;
@@global.sql_mode
-PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,NO_UNSIGNED_SUBTRACTION,POSTGRESQL,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
+PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,NO_UNSIGNED_SUBTRACTION,POSTGRESQL,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT
SET @@global.sql_mode = 500000;
SELECT @@global.sql_mode;
@@global.sql_mode
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,HIGH_NOT_PRECEDENCE
-SET @@global.sql_mode = 8589934591;
+SET @@global.sql_mode = 17179869183;
SELECT @@global.sql_mode;
@@global.sql_mode
-REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH,EMPTY_STRING_IS_NULL
-SET @@global.sql_mode = 8589934592;
-ERROR 42000: Variable 'sql_mode' can't be set to the value of '8589934592'
+REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH,EMPTY_STRING_IS_NULL,SIMULTANEOUS_ASSIGNMENT
+SET @@global.sql_mode = 17179869184;
+ERROR 42000: Variable 'sql_mode' can't be set to the value of '17179869184'
SET @@global.sql_mode = 0.4;
ERROR 42000: Incorrect argument type to variable 'sql_mode'
'#---------------------FN_DYNVARS_152_08----------------------#'
@@ -397,7 +397,7 @@ ANSI_QUOTES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,A
SET @@global.sql_mode = 'ONLY_FULL_GROUP_BY,PIPES_AS_CONCAT,REAL_AS_FLOAT,ORACLE,POSTGRESQL';
SELECT @@global.sql_mode;
@@global.sql_mode
-REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,POSTGRESQL,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
+REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,POSTGRESQL,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT
SET @@session.sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,FOOBAR,IGNORE_SPACE';
ERROR 42000: Variable 'sql_mode' can't be set to the value of 'FOOBAR'
SET @@sql_mode=',';
diff --git a/mysql-test/suite/sys_vars/r/sysvars_debug,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_debug,32bit.rdiff
index 3164d094528..8adb294db00 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_debug,32bit.rdiff
+++ b/mysql-test/suite/sys_vars/r/sysvars_debug,32bit.rdiff
@@ -1,5 +1,5 @@
---- suite/sys_vars/r/sysvars_debug.result 2014-10-10 13:33:55.000000000 +0300
-+++ suite/sys_vars/r/sysvars_debug,32bit.reject 2014-10-10 19:36:44.000000000 +0300
+--- r\sysvars_debug.result 2017-08-08 10:52:39.036804900 +0300
++++ r\sysvars_debug,32bit.reject 2017-09-10 08:06:38.447122100 +0300
@@ -21,7 +21,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 0
diff --git a/mysql-test/suite/sys_vars/r/sysvars_debug.result b/mysql-test/suite/sys_vars/r/sysvars_debug.result
index f50e796bff4..b544f6b50d9 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_debug.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_debug.result
@@ -1,5 +1,6 @@
select * from information_schema.system_variables
where variable_name like 'debug%'
+ or variable_name = 'in_predicate_conversion_threshold'
order by variable_name;
VARIABLE_NAME DEBUG
SESSION_VALUE
@@ -85,3 +86,17 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME IN_PREDICATE_CONVERSION_THRESHOLD
+SESSION_VALUE 1000
+GLOBAL_VALUE 1000
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 1000
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT The minimum number of scalar elements in the value list of IN predicate that triggers its conversion to IN subquery
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 4294967295
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb,32bit,xtradb.rdiff-disabled b/mysql-test/suite/sys_vars/r/sysvars_innodb,32bit,xtradb.rdiff-disabled
deleted file mode 100644
index f04fd5ed399..00000000000
--- a/mysql-test/suite/sys_vars/r/sysvars_innodb,32bit,xtradb.rdiff-disabled
+++ /dev/null
@@ -1,1257 +0,0 @@
---- suite/sys_vars/r/sysvars_innodb.result
-+++ suite/sys_vars/r/sysvars_innodb,32bit.reject
-@@ -47,13 +47,27 @@
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_ADAPTIVE_HASH_INDEX_PARTITIONS
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 1
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 1
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT Number of InnoDB adaptive hash index partitions (default 1: disable partitioning)
-+NUMERIC_MIN_VALUE 1
-+NUMERIC_MAX_VALUE 32
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY YES
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_ADAPTIVE_MAX_SLEEP_DELAY
- SESSION_VALUE NULL
- GLOBAL_VALUE 150000
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 150000
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT The upper limit of the sleep delay in usec. Value of 0 disables it.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 1000000
-@@ -67,10 +81,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 8388608
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT
-+VARIABLE_TYPE INT
- VARIABLE_COMMENT DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator. Size of a memory pool InnoDB uses to store data dictionary information and other internal data structures.
- NUMERIC_MIN_VALUE 524288
--NUMERIC_MAX_VALUE 9223372036854775807
-+NUMERIC_MAX_VALUE 2147483647
- NUMERIC_BLOCK_SIZE 1024
- ENUM_VALUE_LIST NULL
- READ_ONLY YES
-@@ -81,7 +95,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 5
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Background commit interval in seconds
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 1073741824
-@@ -137,7 +151,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT InnoDB API transaction isolation level
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 3
-@@ -151,7 +165,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 64
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Data file autoextend increment in megabytes
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 1000
-@@ -165,7 +179,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 1
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT
-+VARIABLE_TYPE INT
- VARIABLE_COMMENT The AUTOINC lock modes supported by InnoDB: 0 => Old style AUTOINC locking (for backward compatibility) 1 => New style AUTOINC locking 2 => No AUTOINC locking (unsafe for SBR)
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 2
-@@ -263,7 +277,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 100
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Dump only the hottest N% of each buffer pool, defaults to 100
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 100
-@@ -305,7 +319,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT
-+VARIABLE_TYPE INT
- VARIABLE_COMMENT Number of buffer pool instances, set to higher value on high-end machines to increase scalability
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 64
-@@ -355,6 +369,20 @@
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_BUFFER_POOL_POPULATE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Deprecated. This option has no effect and will be removed in MariaDB 10.2.3.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY YES
-+COMMAND_LINE_ARGUMENT NONE
- VARIABLE_NAME INNODB_BUFFER_POOL_SIZE
- SESSION_VALUE NULL
- GLOBAL_VALUE 8388608
-@@ -375,7 +403,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT A number between [0, 100] that tells how oftern buffer pool dump status in percentages should be printed. E.g. 10 means that buffer pool dump status is printed when every 10% of number of buffer pool pages are dumped. Default is 0 (only start and end status is printed).
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 100
-@@ -446,7 +474,7 @@
- DEFAULT_VALUE ON
- VARIABLE_SCOPE GLOBAL
- VARIABLE_TYPE BOOLEAN
--VARIABLE_COMMENT DEPRECATED. Use innodb_checksum_algorithm=NONE instead of setting this to OFF. Enable InnoDB checksums validation (enabled by default). Disable with --skip-innodb-checksums.
-+VARIABLE_COMMENT DEPRECATED. Use innodb_checksum_algorithm=NONE instead of setting this to OFF
- NUMERIC_MIN_VALUE NULL
- NUMERIC_MAX_VALUE NULL
- NUMERIC_BLOCK_SIZE NULL
-@@ -467,6 +495,104 @@
- ENUM_VALUE_LIST CRC32,STRICT_CRC32,INNODB,STRICT_INNODB,NONE,STRICT_NONE
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CLEANER_EVICTION_FACTOR
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Make page cleaner LRU flushes use evicted instead of flushed page counts for its heuristics
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_CLEANER_FLUSH_CHUNK_SIZE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 100
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 100
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT Divide page cleaner flush list flush batches into chunks of this size
-+NUMERIC_MIN_VALUE 1
-+NUMERIC_MAX_VALUE 4294967295
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CLEANER_FREE_LIST_LWM
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 10
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 10
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT Page cleaner will keep on flushing the same buffer pool instance if its free list length is below this percentage of innodb_lru_scan_depth
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 100
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CLEANER_LRU_CHUNK_SIZE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 100
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 100
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT Divide page cleaner LRU list flush batches into chunks of this size
-+NUMERIC_MIN_VALUE 1
-+NUMERIC_MAX_VALUE 4294967295
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CLEANER_LSN_AGE_FACTOR
-+SESSION_VALUE NULL
-+GLOBAL_VALUE HIGH_CHECKPOINT
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE HIGH_CHECKPOINT
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE ENUM
-+VARIABLE_COMMENT The formula for LSN age factor for page cleaner adaptive flushing. LEGACY: Original Oracle MySQL 5.6 formula. HIGH_CHECKPOINT: (the default) Percona Server 5.6 formula.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST LEGACY,HIGH_CHECKPOINT
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_CLEANER_MAX_FLUSH_TIME
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 1000
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 1000
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT The maximum time limit for a single flush list flush iteration by the page cleaner thread in miliseconds
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 4294967295
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CLEANER_MAX_LRU_TIME
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 1000
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 1000
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT The maximum time limit for a single LRU tail flush iteration by the page cleaner thread in miliseconds
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 4294967295
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_CMP_PER_INDEX_ENABLED
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
-@@ -487,7 +613,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Helps in performance tuning in heavily concurrent environments.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 1000
-@@ -515,7 +641,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 5
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT If the compression failure rate of a table is greater than this number more padding is added to the pages to reduce the failures. A value of zero implies no padding
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 100
-@@ -543,7 +669,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 50
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Percentage of empty space on a data page that can be reserved to make the page compressible.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 75
-@@ -557,14 +683,28 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 5000
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of times a thread is allowed to enter InnoDB within the same SQL query after it has once got the ticket
- NUMERIC_MIN_VALUE 1
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CORRUPT_TABLE_ACTION
-+SESSION_VALUE NULL
-+GLOBAL_VALUE assert
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE assert
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE ENUM
-+VARIABLE_COMMENT Warn corruptions of user tables as 'corrupt table' instead of not crashing itself, when used with file_per_table. All file io for the datafile after detected as corrupt are disabled, except for the deletion.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST assert,warn,salvage
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_DATA_FILE_PATH
- SESSION_VALUE NULL
- GLOBAL_VALUE ibdata1:12M:autoextend
-@@ -767,7 +907,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 120
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of pages reserved in doublewrite buffer for batch flushing
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 127
-@@ -775,6 +915,20 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY YES
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_EMPTY_FREE_LIST_ALGORITHM
-+SESSION_VALUE NULL
-+GLOBAL_VALUE LEGACY
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE BACKOFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE ENUM
-+VARIABLE_COMMENT The algorithm to use for empty free list handling. Allowed values: LEGACY: Original Oracle MySQL 5.6 handling with single page flushes; BACKOFF: (default) Wait until cleaner produces a free page.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST LEGACY,BACKOFF
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_ENCRYPTION_ROTATE_KEY_AGE
- SESSION_VALUE NULL
- GLOBAL_VALUE 1
-@@ -845,13 +999,27 @@
- ENUM_VALUE_LIST OFF,ON,FORCE
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_FAKE_CHANGES
-+SESSION_VALUE OFF
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE SESSION
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT In the transaction after enabled, UPDATE, INSERT and DELETE only move the cursor to the records and do nothing other operations (no changes, no ibuf, no undo, no transaction log) in the transaction. This is to cause replication prefetch IO. ATTENTION: the transaction started after enabled is affected.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_FAST_SHUTDOWN
- SESSION_VALUE NULL
- GLOBAL_VALUE 1
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 1
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Speeds up the shutdown process of the InnoDB storage engine. Possible values are 0, 1 (faster) or 2 (fastest - crash-like).
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 2
-@@ -865,7 +1033,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 600
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Maximum number of seconds that semaphore times out in InnoDB.
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 4294967295
-@@ -935,7 +1103,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Make the first page of the given tablespace dirty.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 4294967295
-@@ -949,7 +1117,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 30
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of iterations over which the background flushing is averaged.
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 1000
-@@ -972,12 +1140,12 @@
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_FLUSH_LOG_AT_TRX_COMMIT
--SESSION_VALUE NULL
-+SESSION_VALUE 1
- GLOBAL_VALUE 1
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 1
--VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_SCOPE SESSION
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Controls the durability/speed trade-off for commits. Set to 0 (write and flush redo log to disk only once per second), 1 (flush to disk at each commit), 2 (write to log at commit but flush to disk only once per second) or 3 (flush to disk at prepare and at commit, slower and usually redundant). 1 and 3 guarantees that after a crash, committed transactions will not be lost and will be consistent with the binlog and other transactional engines. 2 can get inconsistent and lose transactions if there is a power failure or kernel crash but not if mysqld crashes. 0 has no guarantees in case of crash. 0 and 2 can be faster than 1 or 3.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 3
-@@ -1005,7 +1173,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 1
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Set to 0 (don't flush neighbors from buffer pool), 1 (flush contiguous neighbors from buffer pool) or 2 (flush neighbors from buffer pool), when flushing a block
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 2
-@@ -1047,7 +1215,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Helps to save your data in case the disk image of the database becomes corrupt.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 6
-@@ -1055,6 +1223,20 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY YES
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_FOREGROUND_PREFLUSH
-+SESSION_VALUE NULL
-+GLOBAL_VALUE EXPONENTIAL_BACKOFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE EXPONENTIAL_BACKOFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE ENUM
-+VARIABLE_COMMENT The algorithm InnoDB uses for the query threads at sync preflush. Possible values are SYNC_PREFLUSH: perform a sync preflush as Oracle MySQL; EXPONENTIAL_BACKOFF: (default) wait for the page cleaner flush.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST SYNC_PREFLUSH,EXPONENTIAL_BACKOFF
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_FT_AUX_TABLE
- SESSION_VALUE NULL
- GLOBAL_VALUE
-@@ -1075,7 +1257,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 8000000
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT InnoDB Fulltext search cache size in bytes
- NUMERIC_MIN_VALUE 1600000
- NUMERIC_MAX_VALUE 80000000
-@@ -1117,7 +1299,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 84
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT InnoDB Fulltext search maximum token size in characters
- NUMERIC_MIN_VALUE 10
- NUMERIC_MAX_VALUE 84
-@@ -1131,7 +1313,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 3
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT InnoDB Fulltext search minimum token size in characters
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 16
-@@ -1145,7 +1327,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 2000
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT InnoDB Fulltext search number of words to optimize for each optimize table call
- NUMERIC_MIN_VALUE 1000
- NUMERIC_MAX_VALUE 10000
-@@ -1159,7 +1341,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 2000000000
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT InnoDB Fulltext search query result cache limit in bytes
- NUMERIC_MIN_VALUE 1000000
- NUMERIC_MAX_VALUE 4294967295
-@@ -1187,7 +1369,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 2
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT InnoDB Fulltext search parallel sort degree, will round up to nearest power of 2 number
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 16
-@@ -1201,7 +1383,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 640000000
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Total memory allocated for InnoDB Fulltext Search cache
- NUMERIC_MIN_VALUE 32000000
- NUMERIC_MAX_VALUE 1600000000
-@@ -1229,7 +1411,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 100
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Up to what percentage of dirty pages should be flushed when innodb finds it has spare resources to do so.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 100
-@@ -1271,10 +1453,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 200
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of IOPs the server can do. Tunes the background IO rate
- NUMERIC_MIN_VALUE 100
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -1283,12 +1465,26 @@
- SESSION_VALUE NULL
- GLOBAL_VALUE 2000
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
--DEFAULT_VALUE 18446744073709551615
-+DEFAULT_VALUE 4294967295
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Limit to which innodb_io_capacity can be inflated.
- NUMERIC_MIN_VALUE 100
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_KILL_IDLE_TRANSACTION
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 0
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 0
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT
-+VARIABLE_COMMENT No effect for this build.
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 2147483647
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -1321,6 +1517,20 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_LOCKING_FAKE_CHANGES
-+SESSION_VALUE NULL
-+GLOBAL_VALUE ON
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE ON
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT ###EXPERIMENTAL### if enabled, transactions will get S row locks instead of X locks for fake changes. If disabled, fake change transactions will not take any locks at all.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT NONE
- VARIABLE_NAME INNODB_LOCKS_UNSAFE_FOR_BINLOG
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
-@@ -1355,7 +1565,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 50
- VARIABLE_SCOPE SESSION
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Timeout in seconds an InnoDB transaction may wait for a lock before being rolled back. Values above 100000000 disable the timeout.
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 1073741824
-@@ -1363,37 +1573,107 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
--VARIABLE_NAME INNODB_LOG_BUFFER_SIZE
--SESSION_VALUE NULL
--GLOBAL_VALUE 1048576
--GLOBAL_VALUE_ORIGIN CONFIG
--DEFAULT_VALUE 16777216
--VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT
--VARIABLE_COMMENT The size of the buffer which InnoDB uses to write log to the log files on disk.
--NUMERIC_MIN_VALUE 262144
--NUMERIC_MAX_VALUE 9223372036854775807
--NUMERIC_BLOCK_SIZE 1024
--ENUM_VALUE_LIST NULL
--READ_ONLY YES
--COMMAND_LINE_ARGUMENT REQUIRED
--VARIABLE_NAME INNODB_LOG_CHECKPOINT_NOW
-+VARIABLE_NAME INNODB_LOG_ARCHIVE
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE OFF
- VARIABLE_SCOPE GLOBAL
- VARIABLE_TYPE BOOLEAN
--VARIABLE_COMMENT Force checkpoint now
-+VARIABLE_COMMENT Set to 1 if you want to have logs archived.
- NUMERIC_MIN_VALUE NULL
- NUMERIC_MAX_VALUE NULL
- NUMERIC_BLOCK_SIZE NULL
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
--VARIABLE_NAME INNODB_LOG_COMPRESSED_PAGES
-+VARIABLE_NAME INNODB_LOG_ARCH_DIR
- SESSION_VALUE NULL
--GLOBAL_VALUE ON
-+GLOBAL_VALUE PATH
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE VARCHAR
-+VARIABLE_COMMENT Where full logs should be archived.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST NULL
-+READ_ONLY YES
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_LOG_ARCH_EXPIRE_SEC
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 0
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 0
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT Expiration time for archived innodb transaction logs.
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 4294967295
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_LOG_BLOCK_SIZE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 512
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 512
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT ###EXPERIMENTAL###: The log block size of the transaction log file. Changing for created log file is not supported. Use on your own risk!
-+NUMERIC_MIN_VALUE 512
-+NUMERIC_MAX_VALUE 65536
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY YES
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_LOG_BUFFER_SIZE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 1048576
-+GLOBAL_VALUE_ORIGIN CONFIG
-+DEFAULT_VALUE 16777216
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT
-+VARIABLE_COMMENT The size of the buffer which InnoDB uses to write log to the log files on disk.
-+NUMERIC_MIN_VALUE 262144
-+NUMERIC_MAX_VALUE 2147483647
-+NUMERIC_BLOCK_SIZE 1024
-+ENUM_VALUE_LIST NULL
-+READ_ONLY YES
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_LOG_CHECKPOINT_NOW
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Force checkpoint now
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_LOG_CHECKSUM_ALGORITHM
-+SESSION_VALUE NULL
-+GLOBAL_VALUE INNODB
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE INNODB
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE ENUM
-+VARIABLE_COMMENT The algorithm InnoDB uses for log block checksums. Possible values are CRC32 (hardware accelerated if the CPU supports it) write crc32, allow any of the other checksums to match when reading; STRICT_CRC32 write crc32, do not allow other algorithms to match when reading; INNODB write a software calculated checksum, allow any other checksums to match when reading; STRICT_INNODB write a software calculated checksum, do not allow other algorithms to match when reading; NONE write a constant magic number, do not do any checksum verification when reading (same as innodb_checksums=OFF); STRICT_NONE write a constant magic number, do not allow values other than that magic number when reading; Logs created when this option is set to crc32/strict_crc32/none/strict_none will not be readable by any MySQL version or Percona Server versions that donot support this feature
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST CRC32,STRICT_CRC32,INNODB,STRICT_INNODB,NONE,STRICT_NONE
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_LOG_COMPRESSED_PAGES
-+SESSION_VALUE NULL
-+GLOBAL_VALUE ON
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE ON
- VARIABLE_SCOPE GLOBAL
-@@ -1411,7 +1691,7 @@
- GLOBAL_VALUE_ORIGIN CONFIG
- DEFAULT_VALUE 2
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of log files in the log group. InnoDB writes to the files in a circular fashion.
- NUMERIC_MIN_VALUE 2
- NUMERIC_MAX_VALUE 100
-@@ -1453,9 +1733,37 @@
- GLOBAL_VALUE_ORIGIN CONFIG
- DEFAULT_VALUE 1024
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT How deep to scan LRU to keep it clean
- NUMERIC_MIN_VALUE 100
-+NUMERIC_MAX_VALUE 4294967295
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_MAX_BITMAP_FILE_SIZE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 104857600
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 104857600
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT The maximum size of changed page bitmap files
-+NUMERIC_MIN_VALUE 4096
-+NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_MAX_CHANGED_PAGES
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 1000000
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 1000000
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT The maximum number of rows for INFORMATION_SCHEMA.INNODB_CHANGED_PAGES table, 0 - unlimited
-+NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 18446744073709551615
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
-@@ -1495,10 +1803,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Desired maximum length of the purge queue (0 = no limit)
- NUMERIC_MIN_VALUE 0
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -1509,7 +1817,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Maximum delay of user threads in micro-seconds
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 10000000
-@@ -1523,7 +1831,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT
-+VARIABLE_TYPE INT
- VARIABLE_COMMENT Number of identical copies of log groups we keep for the database. Currently this should be set to 1.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 10
-@@ -1593,7 +1901,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 8
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT
-+VARIABLE_TYPE INT
- VARIABLE_COMMENT Number of multi-threaded flush threads
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 64
-@@ -1649,10 +1957,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT
-+VARIABLE_TYPE INT
- VARIABLE_COMMENT How many files at the maximum InnoDB keeps open at the same time.
- NUMERIC_MIN_VALUE 0
--NUMERIC_MAX_VALUE 9223372036854775807
-+NUMERIC_MAX_VALUE 2147483647
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY YES
-@@ -1677,7 +1985,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 16
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of rw_locks protecting buffer pool page_hash. Rounded up to the next power of 2
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 1024
-@@ -1691,7 +1999,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 16384
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Page size to use for all InnoDB tablespaces.
- NUMERIC_MIN_VALUE 4096
- NUMERIC_MAX_VALUE 65536
-@@ -1727,13 +2035,83 @@
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Print lock wait timeout info to MySQL error log (off by default)
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_PRIORITY_CLEANER
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Make buffer pool cleaner and LRU manager threads acquire shared resources with priority
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_PRIORITY_IO
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Make I/O threads acquire shared resources with priority
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_PRIORITY_MASTER
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Make buffer pool cleaner thread acquire shared resources with priority
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_PRIORITY_PURGE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Make purge coordinator and worker threads acquire shared resources with priority
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_PURGE_BATCH_SIZE
- SESSION_VALUE NULL
- GLOBAL_VALUE 300
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 300
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of UNDO log pages to purge in one batch from the history list.
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 5000
-@@ -1775,7 +2139,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 1
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Purge threads can be from 1 to 32. Default is 1.
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 32
-@@ -1803,7 +2167,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 56
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of pages that must be accessed sequentially for InnoDB to trigger a readahead.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 64
-@@ -1817,7 +2181,7 @@
- GLOBAL_VALUE_ORIGIN CONFIG
- DEFAULT_VALUE 4
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of background read I/O threads in InnoDB.
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 64
-@@ -1845,10 +2209,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Replication thread delay (ms) on the slave server if innodb_thread_concurrency is reached (0 by default)
- NUMERIC_MIN_VALUE 0
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -1873,7 +2237,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 128
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of undo logs to use (deprecated).
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 128
-@@ -1887,7 +2251,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT An InnoDB page number.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 4294967295
-@@ -1895,6 +2259,48 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_SCHED_PRIORITY_IO
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 19
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 19
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT Nice value for the I/O handler thread scheduling
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 39
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_SCHED_PRIORITY_MASTER
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 19
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 19
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT Nice value for the master thread scheduling
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 39
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_SCHED_PRIORITY_PURGE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 19
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 19
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT Nice value for the purge thread scheduling
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 39
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_SCRUB_LOG
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
-@@ -1923,6 +2329,34 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_SHOW_LOCKS_HELD
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 10
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 10
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT Number of locks held to print for each InnoDB transaction in SHOW INNODB STATUS.
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 1000
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_SHOW_VERBOSE_LOCKS
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 0
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 0
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE INT UNSIGNED
-+VARIABLE_COMMENT Whether to show records locked in SHOW INNODB STATUS.
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 1
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_SIMULATE_COMP_FAILURES
- SESSION_VALUE NULL
- GLOBAL_VALUE 0
-@@ -1943,7 +2377,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 1048576
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Memory buffer size for index creation
- NUMERIC_MIN_VALUE 65536
- NUMERIC_MAX_VALUE 67108864
-@@ -1957,10 +2391,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 6
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Maximum delay between polling for a spin lock (6 by default)
- NUMERIC_MIN_VALUE 0
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -2000,7 +2434,7 @@
- DEFAULT_VALUE nulls_equal
- VARIABLE_SCOPE GLOBAL
- VARIABLE_TYPE ENUM
--VARIABLE_COMMENT Specifies how InnoDB index statistics collection code should treat NULLs. Possible values are NULLS_EQUAL (default), NULLS_UNEQUAL and NULLS_IGNORED
-+VARIABLE_COMMENT Specifies how InnoDB index statistics collection code should treat NULLs
- NUMERIC_MIN_VALUE NULL
- NUMERIC_MAX_VALUE NULL
- NUMERIC_BLOCK_SIZE NULL
-@@ -2167,7 +2601,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 1
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Size of the mutex/lock wait array.
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 1024
-@@ -2181,10 +2615,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 30
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Count of spin-loop rounds in InnoDB mutexes (30 by default)
- NUMERIC_MIN_VALUE 0
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -2209,7 +2643,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Helps in performance tuning in heavily concurrent environments. Sets the maximum number of threads allowed inside InnoDB. Value 0 will disable the thread throttling.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 1000
-@@ -2223,7 +2657,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 10000
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Time of innodb thread sleeping before joining InnoDB queue (usec). Value 0 disable a sleep
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 1000000
-@@ -2245,6 +2679,34 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_TRACK_CHANGED_PAGES
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Track the redo log for changed pages and output a changed page bitmap
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT NONE
-+VARIABLE_NAME INNODB_TRACK_REDO_LOG_NOW
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Force log tracker to catch up with checkpoint now
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_TRX_PURGE_VIEW_UPDATE_ONLY_DEBUG
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
-@@ -2293,7 +2755,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 128
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of undo logs to use.
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 128
-@@ -2307,7 +2769,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of undo tablespaces to use.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 126
-@@ -2322,7 +2784,7 @@
- DEFAULT_VALUE OFF
- VARIABLE_SCOPE GLOBAL
- VARIABLE_TYPE BOOLEAN
--VARIABLE_COMMENT Prevent partial page writes, via atomic writes.The option is used to prevent partial writes in case of a crash/poweroff, as faster alternative to doublewrite buffer.Currently this option works only on Linux only with FusionIO device, and directFS filesystem.
-+VARIABLE_COMMENT Prevent partial page writes, via atomic writes (beta). The option is used to prevent partial writes in case of a crash/poweroff, as faster alternative to doublewrite buffer. Currently this option works only on Linux only with FusionIO device, and directFS filesystem.
- NUMERIC_MIN_VALUE NULL
- NUMERIC_MAX_VALUE NULL
- NUMERIC_BLOCK_SIZE NULL
-@@ -2343,6 +2805,20 @@
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY YES
- COMMAND_LINE_ARGUMENT NONE
-+VARIABLE_NAME INNODB_USE_GLOBAL_FLUSH_LOG_AT_TRX_COMMIT
-+SESSION_VALUE NULL
-+GLOBAL_VALUE ON
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE ON
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Use global innodb_flush_log_at_trx_commit value. (default: ON).
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT NONE
- VARIABLE_NAME INNODB_USE_MTFLUSH
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
-@@ -2357,6 +2833,20 @@
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY YES
- COMMAND_LINE_ARGUMENT NONE
-+VARIABLE_NAME INNODB_USE_STACKTRACE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Print stacktrace on long semaphore wait (off by default supported only on linux)
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY YES
-+COMMAND_LINE_ARGUMENT NONE
- VARIABLE_NAME INNODB_USE_SYS_MALLOC
- SESSION_VALUE NULL
- GLOBAL_VALUE ON
-@@ -2387,12 +2877,12 @@
- COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_VERSION
- SESSION_VALUE NULL
--GLOBAL_VALUE 5.6.37
-+GLOBAL_VALUE 5.6.38-83.0
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE NULL
- VARIABLE_SCOPE GLOBAL
- VARIABLE_TYPE VARCHAR
--VARIABLE_COMMENT InnoDB version
-+VARIABLE_COMMENT Percona-InnoDB-plugin version
- NUMERIC_MIN_VALUE NULL
- NUMERIC_MAX_VALUE NULL
- NUMERIC_BLOCK_SIZE NULL
-@@ -2405,7 +2895,7 @@
- GLOBAL_VALUE_ORIGIN CONFIG
- DEFAULT_VALUE 4
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of background write I/O threads in InnoDB.
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 64
diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_innodb,32bit.rdiff
index 3122f0a5711..3d9d6d27fb3 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_innodb,32bit.rdiff
+++ b/mysql-test/suite/sys_vars/r/sysvars_innodb,32bit.rdiff
@@ -1,24 +1,15 @@
---- suite/sys_vars/r/sysvars_innodb.result 2017-05-10 10:25:27.196836832 +0200
-+++ suite/sys_vars/r/sysvars_innodb.reject 2017-05-10 17:54:00.922046824 +0200
+--- suite/sys_vars/r/sysvars_innodb.result 2017-09-14 10:37:46.000000000 +0000
++++ suite/sys_vars/r/sysvars_innodb,32bit.reject 2017-09-26 13:13:23.685012523 +0000
@@ -54,7 +54,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8
VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT It is an alias for innodb_adaptive_hash_index_parts; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 512
-@@ -68,7 +68,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 8
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Number of InnoDB Adaptive Hash Index Partitions (default 8)
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 512
-@@ -82,7 +82,7 @@
+@@ -68,7 +68,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 150000
VARIABLE_SCOPE GLOBAL
@@ -27,7 +18,7 @@
VARIABLE_COMMENT The upper limit of the sleep delay in usec. Value of 0 disables it.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1000000
-@@ -96,7 +96,7 @@
+@@ -82,7 +82,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 64
VARIABLE_SCOPE GLOBAL
@@ -36,7 +27,7 @@
VARIABLE_COMMENT Data file autoextend increment in megabytes
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1000
-@@ -110,7 +110,7 @@
+@@ -96,7 +96,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE GLOBAL
@@ -45,7 +36,7 @@
VARIABLE_COMMENT The AUTOINC lock modes supported by InnoDB: 0 => Old style AUTOINC locking (for backward compatibility); 1 => New style AUTOINC locking; 2 => No AUTOINC locking (unsafe for SBR)
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 2
-@@ -194,10 +194,10 @@
+@@ -180,10 +180,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 134217728
VARIABLE_SCOPE GLOBAL
@@ -58,7 +49,7 @@
NUMERIC_BLOCK_SIZE 1048576
ENUM_VALUE_LIST NULL
READ_ONLY YES
-@@ -236,7 +236,7 @@
+@@ -222,7 +222,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 25
VARIABLE_SCOPE GLOBAL
@@ -67,7 +58,7 @@
VARIABLE_COMMENT Dump only the hottest N% of each buffer pool, defaults to 25
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100
-@@ -278,7 +278,7 @@
+@@ -264,7 +264,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -76,7 +67,7 @@
VARIABLE_COMMENT Number of buffer pool instances, set to higher value on high-end machines to increase scalability
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 64
-@@ -362,7 +362,7 @@
+@@ -334,7 +334,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -85,68 +76,7 @@
VARIABLE_COMMENT A number between [0, 100] that tells how oftern buffer pool dump status in percentages should be printed. E.g. 10 means that buffer pool dump status is printed when every 10% of number of buffer pool pages are dumped. Default is 0 (only start and end status is printed).
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100
-@@ -474,10 +474,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -488,7 +488,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 100
-@@ -502,10 +502,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -530,10 +530,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -544,10 +544,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -572,7 +572,7 @@
+@@ -446,7 +446,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -155,7 +85,7 @@
VARIABLE_COMMENT Helps in performance tuning in heavily concurrent environments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1000
-@@ -614,7 +614,7 @@
+@@ -488,7 +488,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 5
VARIABLE_SCOPE GLOBAL
@@ -164,7 +94,7 @@
VARIABLE_COMMENT If the compression failure rate of a table is greater than this number more padding is added to the pages to reduce the failures. A value of zero implies no padding
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100
-@@ -642,7 +642,7 @@
+@@ -516,7 +516,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 50
VARIABLE_SCOPE GLOBAL
@@ -173,7 +103,7 @@
VARIABLE_COMMENT Percentage of empty space on a data page that can be reserved to make the page compressible.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 75
-@@ -656,10 +656,10 @@
+@@ -530,10 +530,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 5000
VARIABLE_SCOPE GLOBAL
@@ -186,7 +116,7 @@
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -936,7 +936,7 @@
+@@ -796,7 +796,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 120
VARIABLE_SCOPE GLOBAL
@@ -195,7 +125,7 @@
VARIABLE_COMMENT Number of pages reserved in doublewrite buffer for batch flushing
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 127
-@@ -1062,7 +1062,7 @@
+@@ -894,7 +894,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 600
VARIABLE_SCOPE GLOBAL
@@ -204,7 +134,7 @@
VARIABLE_COMMENT Maximum number of seconds that semaphore times out in InnoDB.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -1132,7 +1132,7 @@
+@@ -922,7 +922,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -213,7 +143,7 @@
VARIABLE_COMMENT Percentage of B-tree page filled during bulk insert
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 100
-@@ -1146,7 +1146,7 @@
+@@ -936,7 +936,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -222,7 +152,7 @@
VARIABLE_COMMENT Make the first page of the given tablespace dirty.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -1160,7 +1160,7 @@
+@@ -950,7 +950,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 30
VARIABLE_SCOPE GLOBAL
@@ -231,7 +161,7 @@
VARIABLE_COMMENT Number of iterations over which the background flushing is averaged.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1000
-@@ -1188,7 +1188,7 @@
+@@ -978,7 +978,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE GLOBAL
@@ -240,7 +170,7 @@
VARIABLE_COMMENT Controls the durability/speed trade-off for commits. Set to 0 (write and flush redo log to disk only once per second), 1 (flush to disk at each commit), 2 (write to log at commit but flush to disk only once per second) or 3 (flush to disk at prepare and at commit, slower and usually redundant). 1 and 3 guarantees that after a crash, committed transactions will not be lost and will be consistent with the binlog and other transactional engines. 2 can get inconsistent and lose transactions if there is a power failure or kernel crash but not if mysqld crashes. 0 has no guarantees in case of crash. 0 and 2 can be faster than 1 or 3.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 3
-@@ -1216,7 +1216,7 @@
+@@ -1006,7 +1006,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE GLOBAL
@@ -249,7 +179,7 @@
VARIABLE_COMMENT Set to 0 (don't flush neighbors from buffer pool), 1 (flush contiguous neighbors from buffer pool) or 2 (flush neighbors from buffer pool), when flushing a block
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 2
-@@ -1272,7 +1272,7 @@
+@@ -1062,7 +1062,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -258,7 +188,7 @@
VARIABLE_COMMENT Helps to save your data in case the disk image of the database becomes corrupt.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 6
-@@ -1314,7 +1314,7 @@
+@@ -1090,7 +1090,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8000000
VARIABLE_SCOPE GLOBAL
@@ -267,7 +197,7 @@
VARIABLE_COMMENT InnoDB Fulltext search cache size in bytes
NUMERIC_MIN_VALUE 1600000
NUMERIC_MAX_VALUE 80000000
-@@ -1356,7 +1356,7 @@
+@@ -1132,7 +1132,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 84
VARIABLE_SCOPE GLOBAL
@@ -276,7 +206,7 @@
VARIABLE_COMMENT InnoDB Fulltext search maximum token size in characters
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 84
-@@ -1370,7 +1370,7 @@
+@@ -1146,7 +1146,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 3
VARIABLE_SCOPE GLOBAL
@@ -285,7 +215,7 @@
VARIABLE_COMMENT InnoDB Fulltext search minimum token size in characters
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16
-@@ -1384,7 +1384,7 @@
+@@ -1160,7 +1160,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2000
VARIABLE_SCOPE GLOBAL
@@ -294,7 +224,7 @@
VARIABLE_COMMENT InnoDB Fulltext search number of words to optimize for each optimize table call
NUMERIC_MIN_VALUE 1000
NUMERIC_MAX_VALUE 10000
-@@ -1398,7 +1398,7 @@
+@@ -1174,7 +1174,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2000000000
VARIABLE_SCOPE GLOBAL
@@ -303,7 +233,7 @@
VARIABLE_COMMENT InnoDB Fulltext search query result cache limit in bytes
NUMERIC_MIN_VALUE 1000000
NUMERIC_MAX_VALUE 4294967295
-@@ -1426,7 +1426,7 @@
+@@ -1202,7 +1202,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2
VARIABLE_SCOPE GLOBAL
@@ -312,7 +242,7 @@
VARIABLE_COMMENT InnoDB Fulltext search parallel sort degree, will round up to nearest power of 2 number
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 16
-@@ -1440,7 +1440,7 @@
+@@ -1216,7 +1216,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 640000000
VARIABLE_SCOPE GLOBAL
@@ -321,7 +251,7 @@
VARIABLE_COMMENT Total memory allocated for InnoDB Fulltext Search cache
NUMERIC_MIN_VALUE 32000000
NUMERIC_MAX_VALUE 1600000000
-@@ -1468,7 +1468,7 @@
+@@ -1244,7 +1244,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -330,7 +260,7 @@
VARIABLE_COMMENT Up to what percentage of dirty pages should be flushed when innodb finds it has spare resources to do so.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100
-@@ -1510,10 +1510,10 @@
+@@ -1272,10 +1272,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 200
VARIABLE_SCOPE GLOBAL
@@ -343,7 +273,7 @@
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1522,12 +1522,12 @@
+@@ -1284,12 +1284,12 @@
SESSION_VALUE NULL
GLOBAL_VALUE 2000
GLOBAL_VALUE_ORIGIN COMPILE-TIME
@@ -359,47 +289,16 @@
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1541,7 +1541,7 @@
- VARIABLE_TYPE BIGINT
- VARIABLE_COMMENT No effect for this build.
- NUMERIC_MIN_VALUE 0
--NUMERIC_MAX_VALUE 9223372036854775807
-+NUMERIC_MAX_VALUE 2147483647
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -1622,7 +1622,7 @@
+@@ -1342,7 +1342,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 50
VARIABLE_SCOPE SESSION
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Timeout in seconds an InnoDB transaction may wait for a lock before being rolled back. Values above 100000000 disable the timeout.
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 1073741824
-@@ -1664,10 +1664,10 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
--NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_MAX_VALUE 4294967295
- NUMERIC_BLOCK_SIZE 0
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
-@@ -1678,7 +1678,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 65536
-@@ -1692,10 +1692,10 @@
+ NUMERIC_MAX_VALUE 1073741824
+@@ -1356,10 +1356,10 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 16777216
VARIABLE_SCOPE GLOBAL
@@ -412,7 +311,7 @@
NUMERIC_BLOCK_SIZE 1024
ENUM_VALUE_LIST NULL
READ_ONLY YES
-@@ -1762,7 +1762,7 @@
+@@ -1412,7 +1412,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 2
VARIABLE_SCOPE GLOBAL
@@ -421,7 +320,7 @@
VARIABLE_COMMENT Number of log files in the log group. InnoDB writes to the files in a circular fashion.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100
-@@ -1804,7 +1804,7 @@
+@@ -1454,7 +1454,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8192
VARIABLE_SCOPE GLOBAL
@@ -430,7 +329,7 @@
VARIABLE_COMMENT Redo log write ahead unit size to avoid read-on-write, it should match the OS cache block IO size
NUMERIC_MIN_VALUE 512
NUMERIC_MAX_VALUE 16384
-@@ -1818,10 +1818,10 @@
+@@ -1468,10 +1468,10 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 1024
VARIABLE_SCOPE GLOBAL
@@ -443,7 +342,7 @@
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1902,10 +1902,10 @@
+@@ -1524,10 +1524,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -456,7 +355,7 @@
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1916,7 +1916,7 @@
+@@ -1538,7 +1538,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -465,25 +364,7 @@
VARIABLE_COMMENT Maximum delay of user threads in micro-seconds
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 10000000
-@@ -1958,7 +1958,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 10
-@@ -2028,7 +2028,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 8
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT
-+VARIABLE_TYPE INT
- VARIABLE_COMMENT DEPRECATED. Number of multi-threaded flush threads
- NUMERIC_MIN_VALUE 1
- NUMERIC_MAX_VALUE 64
-@@ -2084,10 +2084,10 @@
+@@ -1678,10 +1678,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -496,7 +377,7 @@
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY YES
-@@ -2112,7 +2112,7 @@
+@@ -1706,7 +1706,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4
VARIABLE_SCOPE GLOBAL
@@ -505,7 +386,7 @@
VARIABLE_COMMENT Page cleaner threads can be from 1 to 64. Default is 4.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 64
-@@ -2140,7 +2140,7 @@
+@@ -1734,7 +1734,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16
VARIABLE_SCOPE GLOBAL
@@ -514,7 +395,7 @@
VARIABLE_COMMENT Number of rw_locks protecting buffer pool page_hash. Rounded up to the next power of 2
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1024
-@@ -2154,7 +2154,7 @@
+@@ -1748,7 +1748,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16384
VARIABLE_SCOPE GLOBAL
@@ -523,7 +404,7 @@
VARIABLE_COMMENT Page size to use for all InnoDB tablespaces.
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 65536
-@@ -2252,7 +2252,7 @@
+@@ -1790,7 +1790,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 300
VARIABLE_SCOPE GLOBAL
@@ -532,7 +413,7 @@
VARIABLE_COMMENT Number of UNDO log pages to purge in one batch from the history list.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 5000
-@@ -2266,7 +2266,7 @@
+@@ -1804,7 +1804,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 128
VARIABLE_SCOPE GLOBAL
@@ -541,7 +422,7 @@
VARIABLE_COMMENT Dictates rate at which UNDO records are purged. Value N means purge rollback segment(s) on every Nth iteration of purge invocation
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 128
-@@ -2308,7 +2308,7 @@
+@@ -1846,7 +1846,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4
VARIABLE_SCOPE GLOBAL
@@ -550,7 +431,7 @@
VARIABLE_COMMENT Purge threads can be from 1 to 32. Default is 4.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 32
-@@ -2336,7 +2336,7 @@
+@@ -1874,7 +1874,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 56
VARIABLE_SCOPE GLOBAL
@@ -559,7 +440,7 @@
VARIABLE_COMMENT Number of pages that must be accessed sequentially for InnoDB to trigger a readahead.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 64
-@@ -2350,7 +2350,7 @@
+@@ -1888,7 +1888,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 4
VARIABLE_SCOPE GLOBAL
@@ -568,7 +449,7 @@
VARIABLE_COMMENT Number of background read I/O threads in InnoDB.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 64
-@@ -2378,10 +2378,10 @@
+@@ -1916,10 +1916,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -581,7 +462,7 @@
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2406,7 +2406,7 @@
+@@ -1944,7 +1944,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 128
VARIABLE_SCOPE GLOBAL
@@ -590,7 +471,7 @@
VARIABLE_COMMENT Number of undo logs to use (deprecated).
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 128
-@@ -2420,7 +2420,7 @@
+@@ -1958,7 +1958,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -599,52 +480,7 @@
VARIABLE_COMMENT An InnoDB page number.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2434,7 +2434,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 39
-@@ -2448,7 +2448,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 39
-@@ -2462,7 +2462,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 39
-@@ -2504,7 +2504,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 1000
-@@ -2518,7 +2518,7 @@
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 0
- VARIABLE_SCOPE GLOBAL
--VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
- NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 1
-@@ -2546,7 +2546,7 @@
+@@ -2014,7 +2014,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1048576
VARIABLE_SCOPE GLOBAL
@@ -653,7 +489,7 @@
VARIABLE_COMMENT Memory buffer size for index creation
NUMERIC_MIN_VALUE 65536
NUMERIC_MAX_VALUE 67108864
-@@ -2770,7 +2770,7 @@
+@@ -2224,7 +2224,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE GLOBAL
@@ -662,7 +498,7 @@
VARIABLE_COMMENT Size of the mutex/lock wait array.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1024
-@@ -2798,10 +2798,10 @@
+@@ -2252,10 +2252,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 30
VARIABLE_SCOPE GLOBAL
@@ -675,7 +511,7 @@
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2840,7 +2840,7 @@
+@@ -2294,7 +2294,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -684,7 +520,7 @@
VARIABLE_COMMENT Helps in performance tuning in heavily concurrent environments. Sets the maximum number of threads allowed inside InnoDB. Value 0 will disable the thread throttling.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1000
-@@ -2854,7 +2854,7 @@
+@@ -2308,7 +2308,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10000
VARIABLE_SCOPE GLOBAL
@@ -693,7 +529,7 @@
VARIABLE_COMMENT Time of innodb thread sleeping before joining InnoDB queue (usec). Value 0 disable a sleep
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1000000
-@@ -2952,7 +2952,7 @@
+@@ -2378,7 +2378,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 128
VARIABLE_SCOPE GLOBAL
@@ -702,7 +538,7 @@
VARIABLE_COMMENT Number of undo logs to use.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 128
-@@ -2980,7 +2980,7 @@
+@@ -2406,7 +2406,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -711,7 +547,7 @@
VARIABLE_COMMENT Number of undo tablespaces to use.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 127
-@@ -3092,7 +3092,7 @@
+@@ -2448,7 +2448,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 4
VARIABLE_SCOPE GLOBAL
diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb,xtradb.rdiff-disabled b/mysql-test/suite/sys_vars/r/sysvars_innodb,xtradb.rdiff-disabled
deleted file mode 100644
index 313be8f99f6..00000000000
--- a/mysql-test/suite/sys_vars/r/sysvars_innodb,xtradb.rdiff-disabled
+++ /dev/null
@@ -1,688 +0,0 @@
---- suite/sys_vars/r/sysvars_innodb.result
-+++ suite/sys_vars/r/sysvars_innodb,xtradb.reject
-@@ -47,6 +47,20 @@
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_ADAPTIVE_HASH_INDEX_PARTITIONS
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 1
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 1
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT Number of InnoDB adaptive hash index partitions (default 1: disable partitioning)
-+NUMERIC_MIN_VALUE 1
-+NUMERIC_MAX_VALUE 64
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY YES
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_ADAPTIVE_MAX_SLEEP_DELAY
- SESSION_VALUE NULL
- GLOBAL_VALUE 150000
-@@ -355,6 +369,20 @@
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_BUFFER_POOL_POPULATE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Deprecated. This option has no effect and will be removed in MariaDB 10.2.3.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY YES
-+COMMAND_LINE_ARGUMENT NONE
- VARIABLE_NAME INNODB_BUFFER_POOL_SIZE
- SESSION_VALUE NULL
- GLOBAL_VALUE 8388608
-@@ -446,7 +474,7 @@
- DEFAULT_VALUE ON
- VARIABLE_SCOPE GLOBAL
- VARIABLE_TYPE BOOLEAN
--VARIABLE_COMMENT DEPRECATED. Use innodb_checksum_algorithm=NONE instead of setting this to OFF. Enable InnoDB checksums validation (enabled by default). Disable with --skip-innodb-checksums.
-+VARIABLE_COMMENT DEPRECATED. Use innodb_checksum_algorithm=NONE instead of setting this to OFF
- NUMERIC_MIN_VALUE NULL
- NUMERIC_MAX_VALUE NULL
- NUMERIC_BLOCK_SIZE NULL
-@@ -467,6 +495,104 @@
- ENUM_VALUE_LIST CRC32,STRICT_CRC32,INNODB,STRICT_INNODB,NONE,STRICT_NONE
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CLEANER_EVICTION_FACTOR
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Make page cleaner LRU flushes use evicted instead of flushed page counts for its heuristics
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_CLEANER_FLUSH_CHUNK_SIZE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 100
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 100
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT Divide page cleaner flush list flush batches into chunks of this size
-+NUMERIC_MIN_VALUE 1
-+NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CLEANER_FREE_LIST_LWM
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 10
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 10
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT Page cleaner will keep on flushing the same buffer pool instance if its free list length is below this percentage of innodb_lru_scan_depth
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 100
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CLEANER_LRU_CHUNK_SIZE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 100
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 100
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT Divide page cleaner LRU list flush batches into chunks of this size
-+NUMERIC_MIN_VALUE 1
-+NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CLEANER_LSN_AGE_FACTOR
-+SESSION_VALUE NULL
-+GLOBAL_VALUE HIGH_CHECKPOINT
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE HIGH_CHECKPOINT
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE ENUM
-+VARIABLE_COMMENT The formula for LSN age factor for page cleaner adaptive flushing. LEGACY: Original Oracle MySQL 5.6 formula. HIGH_CHECKPOINT: (the default) Percona Server 5.6 formula.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST LEGACY,HIGH_CHECKPOINT
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_CLEANER_MAX_FLUSH_TIME
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 1000
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 1000
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT The maximum time limit for a single flush list flush iteration by the page cleaner thread in miliseconds
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CLEANER_MAX_LRU_TIME
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 1000
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 1000
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT The maximum time limit for a single LRU tail flush iteration by the page cleaner thread in miliseconds
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_CMP_PER_INDEX_ENABLED
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
-@@ -565,6 +691,20 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_CORRUPT_TABLE_ACTION
-+SESSION_VALUE NULL
-+GLOBAL_VALUE assert
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE assert
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE ENUM
-+VARIABLE_COMMENT Warn corruptions of user tables as 'corrupt table' instead of not crashing itself, when used with file_per_table. All file io for the datafile after detected as corrupt are disabled, except for the deletion.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST assert,warn,salvage
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_DATA_FILE_PATH
- SESSION_VALUE NULL
- GLOBAL_VALUE ibdata1:12M:autoextend
-@@ -775,6 +915,20 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY YES
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_EMPTY_FREE_LIST_ALGORITHM
-+SESSION_VALUE NULL
-+GLOBAL_VALUE LEGACY
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE BACKOFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE ENUM
-+VARIABLE_COMMENT The algorithm to use for empty free list handling. Allowed values: LEGACY: Original Oracle MySQL 5.6 handling with single page flushes; BACKOFF: (default) Wait until cleaner produces a free page.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST LEGACY,BACKOFF
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_ENCRYPTION_ROTATE_KEY_AGE
- SESSION_VALUE NULL
- GLOBAL_VALUE 1
-@@ -845,6 +999,20 @@
- ENUM_VALUE_LIST OFF,ON,FORCE
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_FAKE_CHANGES
-+SESSION_VALUE OFF
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE SESSION
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT In the transaction after enabled, UPDATE, INSERT and DELETE only move the cursor to the records and do nothing other operations (no changes, no ibuf, no undo, no transaction log) in the transaction. This is to cause replication prefetch IO. ATTENTION: the transaction started after enabled is affected.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_FAST_SHUTDOWN
- SESSION_VALUE NULL
- GLOBAL_VALUE 1
-@@ -972,11 +1140,11 @@
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_FLUSH_LOG_AT_TRX_COMMIT
--SESSION_VALUE NULL
-+SESSION_VALUE 1
- GLOBAL_VALUE 1
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 1
--VARIABLE_SCOPE GLOBAL
-+VARIABLE_SCOPE SESSION
- VARIABLE_TYPE BIGINT UNSIGNED
- VARIABLE_COMMENT Controls the durability/speed trade-off for commits. Set to 0 (write and flush redo log to disk only once per second), 1 (flush to disk at each commit), 2 (write to log at commit but flush to disk only once per second) or 3 (flush to disk at prepare and at commit, slower and usually redundant). 1 and 3 guarantees that after a crash, committed transactions will not be lost and will be consistent with the binlog and other transactional engines. 2 can get inconsistent and lose transactions if there is a power failure or kernel crash but not if mysqld crashes. 0 has no guarantees in case of crash. 0 and 2 can be faster than 1 or 3.
- NUMERIC_MIN_VALUE 0
-@@ -1055,6 +1223,20 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY YES
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_FOREGROUND_PREFLUSH
-+SESSION_VALUE NULL
-+GLOBAL_VALUE EXPONENTIAL_BACKOFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE EXPONENTIAL_BACKOFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE ENUM
-+VARIABLE_COMMENT The algorithm InnoDB uses for the query threads at sync preflush. Possible values are SYNC_PREFLUSH: perform a sync preflush as Oracle MySQL; EXPONENTIAL_BACKOFF: (default) wait for the page cleaner flush.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST SYNC_PREFLUSH,EXPONENTIAL_BACKOFF
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_FT_AUX_TABLE
- SESSION_VALUE NULL
- GLOBAL_VALUE
-@@ -1293,6 +1475,20 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_KILL_IDLE_TRANSACTION
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 0
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 0
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT
-+VARIABLE_COMMENT No effect for this build.
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 9223372036854775807
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_LARGE_PREFIX
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
-@@ -1321,6 +1517,20 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_LOCKING_FAKE_CHANGES
-+SESSION_VALUE NULL
-+GLOBAL_VALUE ON
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE ON
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT ###EXPERIMENTAL### if enabled, transactions will get S row locks instead of X locks for fake changes. If disabled, fake change transactions will not take any locks at all.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT NONE
- VARIABLE_NAME INNODB_LOCKS_UNSAFE_FOR_BINLOG
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
-@@ -1363,6 +1573,62 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_LOG_ARCHIVE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Set to 1 if you want to have logs archived.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_LOG_ARCH_DIR
-+SESSION_VALUE NULL
-+GLOBAL_VALUE PATH
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE VARCHAR
-+VARIABLE_COMMENT Where full logs should be archived.
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST NULL
-+READ_ONLY YES
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_LOG_ARCH_EXPIRE_SEC
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 0
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 0
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT Expiration time for archived innodb transaction logs.
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_LOG_BLOCK_SIZE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 512
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 512
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT ###EXPERIMENTAL###: The log block size of the transaction log file. Changing for created log file is not supported. Use on your own risk!
-+NUMERIC_MIN_VALUE 512
-+NUMERIC_MAX_VALUE 65536
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY YES
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_LOG_BUFFER_SIZE
- SESSION_VALUE NULL
- GLOBAL_VALUE 1048576
-@@ -1391,6 +1657,20 @@
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_LOG_CHECKSUM_ALGORITHM
-+SESSION_VALUE NULL
-+GLOBAL_VALUE INNODB
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE INNODB
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE ENUM
-+VARIABLE_COMMENT The algorithm InnoDB uses for log block checksums. Possible values are CRC32 (hardware accelerated if the CPU supports it) write crc32, allow any of the other checksums to match when reading; STRICT_CRC32 write crc32, do not allow other algorithms to match when reading; INNODB write a software calculated checksum, allow any other checksums to match when reading; STRICT_INNODB write a software calculated checksum, do not allow other algorithms to match when reading; NONE write a constant magic number, do not do any checksum verification when reading (same as innodb_checksums=OFF); STRICT_NONE write a constant magic number, do not allow values other than that magic number when reading; Logs created when this option is set to crc32/strict_crc32/none/strict_none will not be readable by any MySQL version or Percona Server versions that donot support this feature
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST CRC32,STRICT_CRC32,INNODB,STRICT_INNODB,NONE,STRICT_NONE
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_LOG_COMPRESSED_PAGES
- SESSION_VALUE NULL
- GLOBAL_VALUE ON
-@@ -1461,6 +1741,34 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_MAX_BITMAP_FILE_SIZE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 104857600
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 104857600
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT The maximum size of changed page bitmap files
-+NUMERIC_MIN_VALUE 4096
-+NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_MAX_CHANGED_PAGES
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 1000000
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 1000000
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT The maximum number of rows for INFORMATION_SCHEMA.INNODB_CHANGED_PAGES table, 0 - unlimited
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 18446744073709551615
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_MAX_DIRTY_PAGES_PCT
- SESSION_VALUE NULL
- GLOBAL_VALUE 75.000000
-@@ -1727,6 +2035,76 @@
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_PRINT_LOCK_WAIT_TIMEOUT_INFO
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Print lock wait timeout info to MySQL error log (off by default)
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_PRIORITY_CLEANER
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Make buffer pool cleaner and LRU manager threads acquire shared resources with priority
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_PRIORITY_IO
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Make I/O threads acquire shared resources with priority
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_PRIORITY_MASTER
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Make buffer pool cleaner thread acquire shared resources with priority
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_PRIORITY_PURGE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Make purge coordinator and worker threads acquire shared resources with priority
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_PURGE_BATCH_SIZE
- SESSION_VALUE NULL
- GLOBAL_VALUE 300
-@@ -1895,6 +2273,48 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_SCHED_PRIORITY_IO
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 19
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 19
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT Nice value for the I/O handler thread scheduling
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 39
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_SCHED_PRIORITY_MASTER
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 19
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 19
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT Nice value for the master thread scheduling
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 39
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_SCHED_PRIORITY_PURGE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 19
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 19
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT Nice value for the purge thread scheduling
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 39
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
- VARIABLE_NAME INNODB_SCRUB_LOG
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
-@@ -1923,6 +2343,34 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_SHOW_LOCKS_HELD
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 10
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 10
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT Number of locks held to print for each InnoDB transaction in SHOW INNODB STATUS.
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 1000
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT REQUIRED
-+VARIABLE_NAME INNODB_SHOW_VERBOSE_LOCKS
-+SESSION_VALUE NULL
-+GLOBAL_VALUE 0
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE 0
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BIGINT UNSIGNED
-+VARIABLE_COMMENT Whether to show records locked in SHOW INNODB STATUS.
-+NUMERIC_MIN_VALUE 0
-+NUMERIC_MAX_VALUE 1
-+NUMERIC_BLOCK_SIZE 0
-+ENUM_VALUE_LIST NULL
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_SIMULATE_COMP_FAILURES
- SESSION_VALUE NULL
- GLOBAL_VALUE 0
-@@ -2000,7 +2448,7 @@
- DEFAULT_VALUE nulls_equal
- VARIABLE_SCOPE GLOBAL
- VARIABLE_TYPE ENUM
--VARIABLE_COMMENT Specifies how InnoDB index statistics collection code should treat NULLs. Possible values are NULLS_EQUAL (default), NULLS_UNEQUAL and NULLS_IGNORED
-+VARIABLE_COMMENT Specifies how InnoDB index statistics collection code should treat NULLs
- NUMERIC_MIN_VALUE NULL
- NUMERIC_MAX_VALUE NULL
- NUMERIC_BLOCK_SIZE NULL
-@@ -2245,6 +2693,34 @@
- ENUM_VALUE_LIST NULL
- READ_ONLY NO
- COMMAND_LINE_ARGUMENT OPTIONAL
-+VARIABLE_NAME INNODB_TRACK_CHANGED_PAGES
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Track the redo log for changed pages and output a changed page bitmap
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT NONE
-+VARIABLE_NAME INNODB_TRACK_REDO_LOG_NOW
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Force log tracker to catch up with checkpoint now
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_TRX_PURGE_VIEW_UPDATE_ONLY_DEBUG
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
-@@ -2322,7 +2798,7 @@
- DEFAULT_VALUE OFF
- VARIABLE_SCOPE GLOBAL
- VARIABLE_TYPE BOOLEAN
--VARIABLE_COMMENT Prevent partial page writes, via atomic writes.The option is used to prevent partial writes in case of a crash/poweroff, as faster alternative to doublewrite buffer.Currently this option works only on Linux only with FusionIO device, and directFS filesystem.
-+VARIABLE_COMMENT Prevent partial page writes, via atomic writes (beta). The option is used to prevent partial writes in case of a crash/poweroff, as faster alternative to doublewrite buffer. Currently this option works only on Linux only with FusionIO device, and directFS filesystem.
- NUMERIC_MIN_VALUE NULL
- NUMERIC_MAX_VALUE NULL
- NUMERIC_BLOCK_SIZE NULL
-@@ -2343,6 +2819,20 @@
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY YES
- COMMAND_LINE_ARGUMENT NONE
-+VARIABLE_NAME INNODB_USE_GLOBAL_FLUSH_LOG_AT_TRX_COMMIT
-+SESSION_VALUE NULL
-+GLOBAL_VALUE ON
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE ON
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Use global innodb_flush_log_at_trx_commit value. (default: ON).
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY NO
-+COMMAND_LINE_ARGUMENT NONE
- VARIABLE_NAME INNODB_USE_MTFLUSH
- SESSION_VALUE NULL
- GLOBAL_VALUE OFF
-@@ -2357,6 +2847,20 @@
- ENUM_VALUE_LIST OFF,ON
- READ_ONLY YES
- COMMAND_LINE_ARGUMENT NONE
-+VARIABLE_NAME INNODB_USE_STACKTRACE
-+SESSION_VALUE NULL
-+GLOBAL_VALUE OFF
-+GLOBAL_VALUE_ORIGIN COMPILE-TIME
-+DEFAULT_VALUE OFF
-+VARIABLE_SCOPE GLOBAL
-+VARIABLE_TYPE BOOLEAN
-+VARIABLE_COMMENT Print stacktrace on long semaphore wait (off by default supported only on linux)
-+NUMERIC_MIN_VALUE NULL
-+NUMERIC_MAX_VALUE NULL
-+NUMERIC_BLOCK_SIZE NULL
-+ENUM_VALUE_LIST OFF,ON
-+READ_ONLY YES
-+COMMAND_LINE_ARGUMENT NONE
- VARIABLE_NAME INNODB_USE_SYS_MALLOC
- SESSION_VALUE NULL
- GLOBAL_VALUE ON
-@@ -2387,12 +2891,12 @@
- COMMAND_LINE_ARGUMENT OPTIONAL
- VARIABLE_NAME INNODB_VERSION
- SESSION_VALUE NULL
--GLOBAL_VALUE 5.6.37
-+GLOBAL_VALUE 5.6.38-83.0
- GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE NULL
- VARIABLE_SCOPE GLOBAL
- VARIABLE_TYPE VARCHAR
--VARIABLE_COMMENT InnoDB version
-+VARIABLE_COMMENT Percona-InnoDB-plugin version
- NUMERIC_MIN_VALUE NULL
- NUMERIC_MAX_VALUE NULL
- NUMERIC_BLOCK_SIZE NULL
diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb.result b/mysql-test/suite/sys_vars/r/sysvars_innodb.result
index 7f606f6f572..ac0d4f27aef 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_innodb.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_innodb.result
@@ -48,20 +48,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_ADAPTIVE_HASH_INDEX_PARTITIONS
-SESSION_VALUE NULL
-GLOBAL_VALUE 8
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 8
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT It is an alias for innodb_adaptive_hash_index_parts; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 1
-NUMERIC_MAX_VALUE 512
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_ADAPTIVE_HASH_INDEX_PARTS
SESSION_VALUE NULL
GLOBAL_VALUE 8
@@ -328,20 +314,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_BUFFER_POOL_POPULATE
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT NONE
VARIABLE_NAME INNODB_BUFFER_POOL_SIZE
SESSION_VALUE NULL
GLOBAL_VALUE 8388608
@@ -454,104 +426,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST crc32,strict_crc32,innodb,strict_innodb,none,strict_none
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_CLEANER_EVICTION_FACTOR
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_CLEANER_FLUSH_CHUNK_SIZE
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 18446744073709551615
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_CLEANER_FREE_LIST_LWM
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 100
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_CLEANER_LRU_CHUNK_SIZE
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 18446744073709551615
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_CLEANER_LSN_AGE_FACTOR
-SESSION_VALUE NULL
-GLOBAL_VALUE DEPRECATED
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE DEPRECATED
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE ENUM
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST LEGACY,HIGH_CHECKPOINT,DEPRECATED
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_CLEANER_MAX_FLUSH_TIME
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 18446744073709551615
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_CLEANER_MAX_LRU_TIME
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 18446744073709551615
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_CMP_PER_INDEX_ENABLED
SESSION_VALUE NULL
GLOBAL_VALUE OFF
@@ -664,20 +538,6 @@ NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_CORRUPT_TABLE_ACTION
-SESSION_VALUE NULL
-GLOBAL_VALUE deprecated
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE deprecated
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE ENUM
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST assert,warn,salvage,deprecated
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_DATA_FILE_PATH
SESSION_VALUE NULL
GLOBAL_VALUE ibdata1:12M:autoextend
@@ -944,20 +804,6 @@ NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_EMPTY_FREE_LIST_ALGORITHM
-SESSION_VALUE NULL
-GLOBAL_VALUE DEPRECATED
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE DEPRECATED
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE ENUM
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST LEGACY,BACKOFF,DEPRECATED
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_ENCRYPTION_ROTATE_KEY_AGE
SESSION_VALUE NULL
GLOBAL_VALUE 1
@@ -1028,20 +874,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON,FORCE
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_FAKE_CHANGES
-SESSION_VALUE OFF
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE SESSION
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_FAST_SHUTDOWN
SESSION_VALUE NULL
GLOBAL_VALUE 1
@@ -1070,48 +902,6 @@ NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_FILE_FORMAT
-SESSION_VALUE NULL
-GLOBAL_VALUE Barracuda
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE Barracuda
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE VARCHAR
-VARIABLE_COMMENT File format to use for new tables in .ibd files.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_FILE_FORMAT_CHECK
-SESSION_VALUE NULL
-GLOBAL_VALUE ON
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE ON
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Whether to perform system file format check.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT NONE
-VARIABLE_NAME INNODB_FILE_FORMAT_MAX
-SESSION_VALUE NULL
-GLOBAL_VALUE Barracuda
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE Antelope
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE VARCHAR
-VARIABLE_COMMENT The highest file format in the tablespace.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_FILE_PER_TABLE
SESSION_VALUE NULL
GLOBAL_VALUE ON
@@ -1280,20 +1070,6 @@ NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_FOREGROUND_PREFLUSH
-SESSION_VALUE NULL
-GLOBAL_VALUE DEPRECATED
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE DEPRECATED
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE ENUM
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST SYNC_PREFLUSH,EXPONENTIAL_BACKOFF,DEPRECATED
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_FT_AUX_TABLE
SESSION_VALUE NULL
GLOBAL_VALUE
@@ -1490,20 +1266,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_INSTRUMENT_SEMAPHORES
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT DEPRECATED. This setting has no effect.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_IO_CAPACITY
SESSION_VALUE NULL
GLOBAL_VALUE 200
@@ -1532,34 +1294,6 @@ NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_KILL_IDLE_TRANSACTION
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT
-VARIABLE_COMMENT No effect for this build.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 9223372036854775807
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_LARGE_PREFIX
-SESSION_VALUE NULL
-GLOBAL_VALUE ON
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE ON
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Support large index prefix length of REC_VERSION_56_MAX_INDEX_COL_LEN (3072) bytes.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT NONE
VARIABLE_NAME INNODB_LIMIT_OPTIMISTIC_INSERT_DEBUG
SESSION_VALUE NULL
GLOBAL_VALUE 0
@@ -1574,20 +1308,6 @@ NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_LOCKING_FAKE_CHANGES
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT NONE
VARIABLE_NAME INNODB_LOCKS_UNSAFE_FOR_BINLOG
SESSION_VALUE NULL
GLOBAL_VALUE OFF
@@ -1624,68 +1344,12 @@ DEFAULT_VALUE 50
VARIABLE_SCOPE SESSION
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Timeout in seconds an InnoDB transaction may wait for a lock before being rolled back. Values above 100000000 disable the timeout.
-NUMERIC_MIN_VALUE 1
+NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1073741824
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_LOG_ARCHIVE
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_LOG_ARCH_DIR
-SESSION_VALUE NULL
-GLOBAL_VALUE
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE VARCHAR
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST NULL
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_LOG_ARCH_EXPIRE_SEC
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 18446744073709551615
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_LOG_BLOCK_SIZE
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 65536
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_LOG_BUFFER_SIZE
SESSION_VALUE NULL
GLOBAL_VALUE 1048576
@@ -1728,20 +1392,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_LOG_CHECKSUM_ALGORITHM
-SESSION_VALUE NULL
-GLOBAL_VALUE DEPRECATED
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE DEPRECATED
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE ENUM
-VARIABLE_COMMENT Deprecated and translated to innodb_log_checksums (NONE to OFF, everything else to ON); only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST CRC32,STRICT_CRC32,INNODB,STRICT_INNODB,NONE,STRICT_NONE,DEPRECATED
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_LOG_COMPRESSED_PAGES
SESSION_VALUE NULL
GLOBAL_VALUE ON
@@ -1840,34 +1490,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_MAX_BITMAP_FILE_SIZE
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 18446744073709551615
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_MAX_CHANGED_PAGES
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 18446744073709551615
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_MAX_DIRTY_PAGES_PCT
SESSION_VALUE NULL
GLOBAL_VALUE 75.000000
@@ -1952,20 +1574,6 @@ NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_MIRRORED_LOG_GROUPS
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 10
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_MONITOR_DISABLE
SESSION_VALUE NULL
GLOBAL_VALUE
@@ -2022,20 +1630,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_MTFLUSH_THREADS
-SESSION_VALUE NULL
-GLOBAL_VALUE 8
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 8
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT
-VARIABLE_COMMENT DEPRECATED. Number of multi-threaded flush threads
-NUMERIC_MIN_VALUE 1
-NUMERIC_MAX_VALUE 64
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_OLD_BLOCKS_PCT
SESSION_VALUE NULL
GLOBAL_VALUE 37
@@ -2118,8 +1712,8 @@ NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 64
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT OPTIONAL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_PAGE_CLEANER_DISABLED_DEBUG
SESSION_VALUE NULL
GLOBAL_VALUE OFF
@@ -2190,62 +1784,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_PRIORITY_CLEANER
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_PRIORITY_IO
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_PRIORITY_MASTER
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_PRIORITY_PURGE
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_PURGE_BATCH_SIZE
SESSION_VALUE NULL
GLOBAL_VALUE 300
@@ -2400,48 +1938,6 @@ NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_SCHED_PRIORITY_IO
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 39
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_SCHED_PRIORITY_MASTER
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 39
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_SCHED_PRIORITY_PURGE
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 39
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_SCRUB_LOG
SESSION_VALUE NULL
GLOBAL_VALUE OFF
@@ -2470,34 +1966,6 @@ NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_SHOW_LOCKS_HELD
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 1000
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME INNODB_SHOW_VERBOSE_LOCKS
-SESSION_VALUE NULL
-GLOBAL_VALUE 0
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 0
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 1
-NUMERIC_BLOCK_SIZE 0
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_SIMULATE_COMP_FAILURES
SESSION_VALUE NULL
GLOBAL_VALUE 0
@@ -2528,12 +1996,12 @@ READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_SPIN_WAIT_DELAY
SESSION_VALUE NULL
-GLOBAL_VALUE 6
+GLOBAL_VALUE 4
GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE 6
+DEFAULT_VALUE 4
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE INT UNSIGNED
-VARIABLE_COMMENT Maximum delay between polling for a spin lock (6 by default)
+VARIABLE_COMMENT Maximum delay between polling for a spin lock (4 by default)
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 6000
NUMERIC_BLOCK_SIZE 0
@@ -2722,20 +2190,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_SUPPORT_XA
-SESSION_VALUE ON
-GLOBAL_VALUE ON
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE ON
-VARIABLE_SCOPE SESSION
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Enable InnoDB support for the XA two-phase commit
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_SYNC_ARRAY_SIZE
SESSION_VALUE NULL
GLOBAL_VALUE 1
@@ -2848,34 +2302,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME INNODB_TRACK_CHANGED_PAGES
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT NONE
-VARIABLE_NAME INNODB_TRACK_REDO_LOG_NOW
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_TRX_PURGE_VIEW_UPDATE_ONLY_DEBUG
SESSION_VALUE NULL
GLOBAL_VALUE OFF
@@ -2967,83 +2393,13 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE ON
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Enable atomic writes, instead of using the doublewrite buffer, for files on devices that supports atomic writes. To use this option one must use file_per_table=1, flush_method=O_DIRECT and use_fallocate=1. This option only works on Linux with either FusionIO cards using the directFS filesystem or with Shannon cards using any file system.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT NONE
-VARIABLE_NAME INNODB_USE_FALLOCATE
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Use posix_fallocate() to allocate files. DEPRECATED, has no effect.
+VARIABLE_COMMENT Enable atomic writes, instead of using the doublewrite buffer, for files on devices that supports atomic writes. To use this option one must use innodb_file_per_table=1, innodb_flush_method=O_DIRECT. This option only works on Linux with either FusionIO cards using the directFS filesystem or with Shannon cards using any file system.
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY YES
COMMAND_LINE_ARGUMENT NONE
-VARIABLE_NAME INNODB_USE_GLOBAL_FLUSH_LOG_AT_TRX_COMMIT
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT NONE
-VARIABLE_NAME INNODB_USE_MTFLUSH
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT DEPRECATED. Use multi-threaded flush. Default FALSE.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT NONE
-VARIABLE_NAME INNODB_USE_STACKTRACE
-SESSION_VALUE NULL
-GLOBAL_VALUE OFF
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deprecated and ignored; only exists to allow easier upgrade from earlier XtraDB versions.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT NONE
-VARIABLE_NAME INNODB_USE_TRIM
-SESSION_VALUE NULL
-GLOBAL_VALUE ON
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE ON
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Deallocate (punch_hole|trim) unused portions of the page compressed page (on by default)
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_VERSION
SESSION_VALUE NULL
GLOBAL_VALUE 5.7.21
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
index 6c94f747005..5d47090a875 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
@@ -1,6 +1,6 @@
---- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
-+++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
-@@ -57,7 +57,7 @@
+--- sysvars_server_embedded.result 2017-11-17 17:00:22.462630239 +0100
++++ sysvars_server_embedded,32bit.reject 2017-11-17 19:09:55.472258411 +0100
+@@ -58,7 +58,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -9,7 +9,7 @@
VARIABLE_COMMENT Auto-increment columns are incremented by this
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 65535
-@@ -71,7 +71,7 @@
+@@ -72,7 +72,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -18,7 +18,7 @@
VARIABLE_COMMENT Offset added to Auto-increment columns. Used when auto-increment-increment != 1
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 65535
-@@ -85,7 +85,7 @@
+@@ -86,7 +86,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 150
VARIABLE_SCOPE GLOBAL
@@ -27,7 +27,7 @@
VARIABLE_COMMENT The number of outstanding connection requests MariaDB can have. This comes into play when the main MariaDB thread gets very many connection requests in a very short time
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65535
-@@ -144,7 +144,7 @@
+@@ -159,7 +159,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the transactional cache for updates to transactional engines for the binary log. If you often use transactions containing many statements, you can increase this to get more performance
NUMERIC_MIN_VALUE 4096
@@ -36,7 +36,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -169,10 +169,10 @@
+@@ -184,10 +184,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -49,7 +49,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -183,10 +183,10 @@
+@@ -198,10 +198,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100000
VARIABLE_SCOPE GLOBAL
@@ -62,7 +62,16 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -256,7 +256,7 @@
+@@ -229,7 +229,7 @@
+ VARIABLE_TYPE BIGINT UNSIGNED
+ VARIABLE_COMMENT The size of file cache for the binary log
+ NUMERIC_MIN_VALUE 8192
+-NUMERIC_MAX_VALUE 18446744073709551615
++NUMERIC_MAX_VALUE 4294967295
+ NUMERIC_BLOCK_SIZE 4096
+ ENUM_VALUE_LIST NULL
+ READ_ONLY NO
+@@ -285,7 +285,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the statement cache for updates to non-transactional engines for the binary log. If you often use statements updating a great number of rows, you can increase this to get more performance.
NUMERIC_MIN_VALUE 4096
@@ -71,7 +80,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -270,7 +270,7 @@
+@@ -299,7 +299,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Size of tree cache used in bulk insert optimisation. Note that this is a limit per thread!
NUMERIC_MIN_VALUE 0
@@ -80,7 +89,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -477,7 +477,7 @@
+@@ -562,7 +562,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 10
VARIABLE_SCOPE GLOBAL
@@ -89,7 +98,7 @@
VARIABLE_COMMENT The number of seconds the mysqld server is waiting for a connect packet before responding with 'Bad handshake'
NUMERIC_MIN_VALUE 2
NUMERIC_MAX_VALUE 31536000
-@@ -533,7 +533,7 @@
+@@ -618,7 +618,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 15
VARIABLE_SCOPE SESSION
@@ -98,7 +107,7 @@
VARIABLE_COMMENT Long search depth for the two-step deadlock detection
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 33
-@@ -547,7 +547,7 @@
+@@ -632,7 +632,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4
VARIABLE_SCOPE SESSION
@@ -107,7 +116,7 @@
VARIABLE_COMMENT Short search depth for the two-step deadlock detection
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 32
-@@ -561,7 +561,7 @@
+@@ -646,7 +646,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 50000000
VARIABLE_SCOPE SESSION
@@ -116,7 +125,7 @@
VARIABLE_COMMENT Long timeout for the two-step deadlock detection (in microseconds)
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -575,7 +575,7 @@
+@@ -660,7 +660,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10000
VARIABLE_SCOPE SESSION
@@ -125,7 +134,7 @@
VARIABLE_COMMENT Short timeout for the two-step deadlock detection (in microseconds)
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -631,7 +631,7 @@
+@@ -716,7 +716,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE SESSION
@@ -134,7 +143,7 @@
VARIABLE_COMMENT The default week format used by WEEK() functions
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 7
-@@ -645,7 +645,7 @@
+@@ -730,7 +730,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -143,7 +152,7 @@
VARIABLE_COMMENT After inserting delayed_insert_limit rows, the INSERT DELAYED handler will check if there are any SELECT statements pending. If so, it allows these to execute before continuing.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -659,7 +659,7 @@
+@@ -744,7 +744,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 300
VARIABLE_SCOPE GLOBAL
@@ -152,7 +161,7 @@
VARIABLE_COMMENT How long a INSERT DELAYED thread should wait for INSERT statements before terminating
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -673,7 +673,7 @@
+@@ -758,7 +758,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1000
VARIABLE_SCOPE GLOBAL
@@ -161,7 +170,7 @@
VARIABLE_COMMENT What size queue (in rows) should be allocated for handling INSERT DELAYED. If the queue becomes full, any client that does INSERT DELAYED will wait until there is room in the queue again
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -701,7 +701,7 @@
+@@ -786,7 +786,7 @@
GLOBAL_VALUE_ORIGIN SQL
DEFAULT_VALUE 4
VARIABLE_SCOPE SESSION
@@ -170,7 +179,7 @@
VARIABLE_COMMENT Precision of the result of '/' operator will be increased on that value
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 38
-@@ -799,7 +799,7 @@
+@@ -884,7 +884,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -179,7 +188,7 @@
VARIABLE_COMMENT If non-zero, binary logs will be purged after expire_logs_days days; possible purges happen at startup and at binary log rotation
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 99
-@@ -841,7 +841,7 @@
+@@ -926,7 +926,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE GLOBAL
@@ -188,7 +197,7 @@
VARIABLE_COMMENT The number of connections on extra-port
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100000
-@@ -883,7 +883,7 @@
+@@ -968,7 +968,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -197,7 +206,7 @@
VARIABLE_COMMENT A dedicated thread is created to flush all tables at the given interval
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -925,7 +925,7 @@
+@@ -1010,7 +1010,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 84
VARIABLE_SCOPE GLOBAL
@@ -206,7 +215,7 @@
VARIABLE_COMMENT The maximum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 84
-@@ -939,7 +939,7 @@
+@@ -1024,7 +1024,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4
VARIABLE_SCOPE GLOBAL
@@ -215,7 +224,7 @@
VARIABLE_COMMENT The minimum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 84
-@@ -953,7 +953,7 @@
+@@ -1038,7 +1038,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 20
VARIABLE_SCOPE GLOBAL
@@ -224,7 +233,7 @@
VARIABLE_COMMENT Number of best matches to use for query expansion
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1000
-@@ -1012,7 +1012,7 @@
+@@ -1097,7 +1097,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The maximum length of the result of function GROUP_CONCAT()
NUMERIC_MIN_VALUE 4
@@ -233,7 +242,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1163,7 +1163,7 @@
+@@ -1248,7 +1248,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE SESSION
@@ -242,7 +251,7 @@
VARIABLE_COMMENT Number of bytes used for a histogram. If set to 0, no histograms are created by ANALYZE.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
-@@ -1191,7 +1191,7 @@
+@@ -1276,7 +1276,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 128
VARIABLE_SCOPE GLOBAL
@@ -251,7 +260,7 @@
VARIABLE_COMMENT How many host names should be cached to avoid resolving.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65536
-@@ -1303,7 +1303,7 @@
+@@ -1430,7 +1430,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 28800
VARIABLE_SCOPE SESSION
@@ -260,7 +269,20 @@
VARIABLE_COMMENT The number of seconds the server waits for activity on an interactive connection before closing it
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -1334,7 +1334,7 @@
+@@ -1444,10 +1444,10 @@
+ GLOBAL_VALUE_ORIGIN COMPILE-TIME
+ DEFAULT_VALUE 1000
+ VARIABLE_SCOPE SESSION
+-VARIABLE_TYPE BIGINT UNSIGNED
++VARIABLE_TYPE INT UNSIGNED
+ VARIABLE_COMMENT The minimum number of scalar elements in the value list of IN predicate that triggers its conversion to IN subquery
+ NUMERIC_MIN_VALUE 0
+-NUMERIC_MAX_VALUE 18446744073709551615
++NUMERIC_MAX_VALUE 4294967295
+ NUMERIC_BLOCK_SIZE 1
+ ENUM_VALUE_LIST NULL
+ READ_ONLY NO
+@@ -1475,7 +1475,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the buffer that is used for joins
NUMERIC_MIN_VALUE 128
@@ -269,7 +291,7 @@
NUMERIC_BLOCK_SIZE 128
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1359,7 +1359,7 @@
+@@ -1500,7 +1500,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2
VARIABLE_SCOPE SESSION
@@ -278,7 +300,7 @@
VARIABLE_COMMENT Controls what join operations can be executed with join buffers. Odd numbers are used for plain join buffers while even numbers are used for linked buffers
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 8
-@@ -1390,7 +1390,7 @@
+@@ -1531,7 +1531,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the buffer used for index blocks for MyISAM tables. Increase this to get better index handling (for all reads and multiple writes) to as much as you can afford
NUMERIC_MIN_VALUE 0
@@ -287,16 +309,16 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1597,7 +1597,7 @@
+@@ -1738,7 +1738,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 86400
VARIABLE_SCOPE SESSION
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Timeout in seconds to wait for a lock before returning an error.
- NUMERIC_MIN_VALUE 1
+ NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -1737,7 +1737,7 @@
+@@ -1906,7 +1906,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -305,7 +327,7 @@
VARIABLE_COMMENT Write to slow log every #th slow query. Set to 1 to log everything. Increase it to reduce the size of the slow or the performance impact of slow logging
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -1779,7 +1779,7 @@
+@@ -1948,7 +1948,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2
VARIABLE_SCOPE SESSION
@@ -314,7 +336,7 @@
VARIABLE_COMMENT Log some not critical warnings to the general log file.Value can be between 0 and 11. Higher values mean more verbosity
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -1821,7 +1821,7 @@
+@@ -1990,7 +1990,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16777216
VARIABLE_SCOPE SESSION
@@ -323,7 +345,7 @@
VARIABLE_COMMENT Max packet length to send to or receive from the server
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -1831,14 +1831,14 @@
+@@ -2000,14 +2000,14 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_BINLOG_CACHE_SIZE
SESSION_VALUE NULL
@@ -341,7 +363,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1849,7 +1849,7 @@
+@@ -2018,7 +2018,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1073741824
VARIABLE_SCOPE GLOBAL
@@ -350,7 +372,7 @@
VARIABLE_COMMENT Binary log will be rotated automatically when the size exceeds this value.
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 1073741824
-@@ -1859,14 +1859,14 @@
+@@ -2028,14 +2028,14 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_BINLOG_STMT_CACHE_SIZE
SESSION_VALUE NULL
@@ -368,7 +390,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1877,7 +1877,7 @@
+@@ -2046,7 +2046,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 151
VARIABLE_SCOPE GLOBAL
@@ -377,7 +399,7 @@
VARIABLE_COMMENT The number of simultaneous clients allowed
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100000
-@@ -1891,7 +1891,7 @@
+@@ -2060,7 +2060,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -386,7 +408,7 @@
VARIABLE_COMMENT If there is more than this number of interrupted connections from a host this host will be blocked from further connections
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -1905,7 +1905,7 @@
+@@ -2074,7 +2074,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 20
VARIABLE_SCOPE SESSION
@@ -395,7 +417,7 @@
VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -1933,7 +1933,7 @@
+@@ -2102,7 +2102,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 64
VARIABLE_SCOPE SESSION
@@ -404,7 +426,7 @@
VARIABLE_COMMENT Max number of errors/warnings to store for a statement
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65535
-@@ -1950,7 +1950,7 @@
+@@ -2119,7 +2119,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Don't allow creation of heap tables bigger than this
NUMERIC_MIN_VALUE 16384
@@ -413,7 +435,7 @@
NUMERIC_BLOCK_SIZE 1024
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1961,7 +1961,7 @@
+@@ -2130,7 +2130,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 20
VARIABLE_SCOPE SESSION
@@ -422,7 +444,7 @@
VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -1989,7 +1989,7 @@
+@@ -2158,7 +2158,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE SESSION
@@ -431,7 +453,7 @@
VARIABLE_COMMENT Max number of bytes in sorted records
NUMERIC_MIN_VALUE 4
NUMERIC_MAX_VALUE 8388608
-@@ -2003,7 +2003,7 @@
+@@ -2172,7 +2172,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 1048576
VARIABLE_SCOPE GLOBAL
@@ -440,7 +462,7 @@
VARIABLE_COMMENT The maximum BLOB length to send to server from mysql_send_long_data API. Deprecated option; use max_allowed_packet instead.
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -2017,7 +2017,7 @@
+@@ -2186,7 +2186,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16382
VARIABLE_SCOPE GLOBAL
@@ -449,7 +471,7 @@
VARIABLE_COMMENT Maximum number of prepared statements in the server
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2031,7 +2031,7 @@
+@@ -2200,7 +2200,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4294967295
VARIABLE_SCOPE SESSION
@@ -458,7 +480,7 @@
VARIABLE_COMMENT Maximum number of iterations when executing recursive queries
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2045,7 +2045,7 @@
+@@ -2214,7 +2214,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4294967295
VARIABLE_SCOPE SESSION
@@ -467,7 +489,7 @@
VARIABLE_COMMENT Limit assumed max number of seeks when looking up rows based on a key
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2073,7 +2073,7 @@
+@@ -2242,7 +2242,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE SESSION
@@ -476,7 +498,7 @@
VARIABLE_COMMENT The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored)
NUMERIC_MIN_VALUE 4
NUMERIC_MAX_VALUE 8388608
-@@ -2087,7 +2087,7 @@
+@@ -2256,7 +2256,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE SESSION
@@ -485,7 +507,7 @@
VARIABLE_COMMENT Maximum stored procedure recursion depth
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
-@@ -2115,7 +2115,7 @@
+@@ -2284,7 +2284,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 32
VARIABLE_SCOPE SESSION
@@ -494,7 +516,7 @@
VARIABLE_COMMENT Unused, will be removed.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2143,7 +2143,7 @@
+@@ -2312,7 +2312,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4294967295
VARIABLE_SCOPE GLOBAL
@@ -503,7 +525,7 @@
VARIABLE_COMMENT After this many write locks, allow some read locks to run in between
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2157,7 +2157,7 @@
+@@ -2326,7 +2326,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE GLOBAL
@@ -512,7 +534,7 @@
VARIABLE_COMMENT Unused
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1048576
-@@ -2171,7 +2171,7 @@
+@@ -2340,7 +2340,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8
VARIABLE_SCOPE GLOBAL
@@ -521,7 +543,7 @@
VARIABLE_COMMENT Unused
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1024
-@@ -2185,7 +2185,7 @@
+@@ -2354,7 +2354,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE SESSION
@@ -530,7 +552,7 @@
VARIABLE_COMMENT Don't write queries to slow log that examine fewer rows than that
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2199,7 +2199,7 @@
+@@ -2368,7 +2368,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 262144
VARIABLE_SCOPE SESSION
@@ -539,7 +561,7 @@
VARIABLE_COMMENT Size of buffer to use when using MRR with range access
NUMERIC_MIN_VALUE 8192
NUMERIC_MAX_VALUE 2147483647
-@@ -2213,10 +2213,10 @@
+@@ -2382,10 +2382,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 256
VARIABLE_SCOPE SESSION
@@ -552,7 +574,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2227,7 +2227,7 @@
+@@ -2396,7 +2396,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE GLOBAL
@@ -561,7 +583,7 @@
VARIABLE_COMMENT Block size to be used for MyISAM index pages
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 16384
-@@ -2241,7 +2241,7 @@
+@@ -2410,7 +2410,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 6
VARIABLE_SCOPE GLOBAL
@@ -570,7 +592,7 @@
VARIABLE_COMMENT Default pointer size to be used for MyISAM tables
NUMERIC_MIN_VALUE 2
NUMERIC_MAX_VALUE 7
-@@ -2251,9 +2251,9 @@
+@@ -2420,9 +2420,9 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MYISAM_MAX_SORT_FILE_SIZE
SESSION_VALUE NULL
@@ -582,7 +604,7 @@
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Don't use the fast sort index method to created index if the temporary file would get bigger than this
-@@ -2265,14 +2265,14 @@
+@@ -2434,14 +2434,14 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MYISAM_MMAP_SIZE
SESSION_VALUE NULL
@@ -600,7 +622,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY YES
-@@ -2297,10 +2297,10 @@
+@@ -2466,10 +2466,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -613,7 +635,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2314,7 +2314,7 @@
+@@ -2483,7 +2483,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The buffer that is allocated when sorting the index when doing a REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE
NUMERIC_MIN_VALUE 4096
@@ -622,7 +644,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2367,7 +2367,7 @@
+@@ -2536,7 +2536,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16384
VARIABLE_SCOPE SESSION
@@ -631,7 +653,7 @@
VARIABLE_COMMENT Buffer length for TCP/IP and socket communication
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1048576
-@@ -2381,7 +2381,7 @@
+@@ -2550,7 +2550,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 30
VARIABLE_SCOPE SESSION
@@ -640,7 +662,7 @@
VARIABLE_COMMENT Number of seconds to wait for more data from a connection before aborting the read
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -2395,7 +2395,7 @@
+@@ -2564,7 +2564,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE SESSION
@@ -649,7 +671,7 @@
VARIABLE_COMMENT If a read on a communication port is interrupted, retry this many times before giving up
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2409,7 +2409,7 @@
+@@ -2578,7 +2578,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 60
VARIABLE_SCOPE SESSION
@@ -658,7 +680,7 @@
VARIABLE_COMMENT Number of seconds to wait for a block to be written to a connection before aborting the write
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -2479,7 +2479,7 @@
+@@ -2648,7 +2648,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -667,7 +689,7 @@
VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1
-@@ -2493,7 +2493,7 @@
+@@ -2662,7 +2662,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 62
VARIABLE_SCOPE SESSION
@@ -676,7 +698,7 @@
VARIABLE_COMMENT Maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to compile a query. Values smaller than the number of tables in a relation result in faster optimization, but may produce very bad query plans. If set to 0, the system will automatically pick a reasonable value.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 62
-@@ -2507,7 +2507,7 @@
+@@ -2676,7 +2676,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE SESSION
@@ -685,7 +707,7 @@
VARIABLE_COMMENT Controls number of record samples to check condition selectivity
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 4294967295
-@@ -2535,7 +2535,7 @@
+@@ -2704,7 +2704,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -694,7 +716,7 @@
VARIABLE_COMMENT Controls selectivity of which conditions the optimizer takes into account to calculate cardinality of a partial join when it searches for the best execution plan Meaning: 1 - use selectivity of index backed range conditions to calculate the cardinality of a partial join if the last joined table is accessed by full table scan or an index scan, 2 - use selectivity of index backed range conditions to calculate the cardinality of a partial join in any case, 3 - additionally always use selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join, 4 - use histograms to calculate selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join.5 - additionally use selectivity of certain non-range predicates calculated on record samples
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 5
-@@ -2563,7 +2563,7 @@
+@@ -2732,7 +2732,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -703,7 +725,7 @@
VARIABLE_COMMENT Maximum number of instrumented user@host accounts. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2577,7 +2577,7 @@
+@@ -2746,7 +2746,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -712,7 +734,7 @@
VARIABLE_COMMENT Size of the statement digest. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 200
-@@ -2591,7 +2591,7 @@
+@@ -2760,7 +2760,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -721,7 +743,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_STAGES_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2605,7 +2605,7 @@
+@@ -2774,7 +2774,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -730,7 +752,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STAGES_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2619,7 +2619,7 @@
+@@ -2788,7 +2788,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -739,7 +761,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_STATEMENTS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2633,7 +2633,7 @@
+@@ -2802,7 +2802,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -748,7 +770,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STATEMENTS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2647,7 +2647,7 @@
+@@ -2816,7 +2816,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -757,7 +779,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_WAITS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2661,7 +2661,7 @@
+@@ -2830,7 +2830,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -766,7 +788,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_WAITS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2675,7 +2675,7 @@
+@@ -2844,7 +2844,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -775,7 +797,7 @@
VARIABLE_COMMENT Maximum number of instrumented hosts. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2689,7 +2689,7 @@
+@@ -2858,7 +2858,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 80
VARIABLE_SCOPE GLOBAL
@@ -784,7 +806,7 @@
VARIABLE_COMMENT Maximum number of condition instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2703,7 +2703,7 @@
+@@ -2872,7 +2872,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -793,7 +815,7 @@
VARIABLE_COMMENT Maximum number of instrumented condition objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2717,7 +2717,7 @@
+@@ -2886,7 +2886,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE GLOBAL
@@ -802,7 +824,7 @@
VARIABLE_COMMENT Maximum length considered for digest text, when stored in performance_schema tables.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2731,7 +2731,7 @@
+@@ -2900,7 +2900,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 50
VARIABLE_SCOPE GLOBAL
@@ -811,7 +833,7 @@
VARIABLE_COMMENT Maximum number of file instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2745,7 +2745,7 @@
+@@ -2914,7 +2914,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 32768
VARIABLE_SCOPE GLOBAL
@@ -820,7 +842,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented files.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2759,7 +2759,7 @@
+@@ -2928,7 +2928,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -829,7 +851,7 @@
VARIABLE_COMMENT Maximum number of instrumented files. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2773,7 +2773,7 @@
+@@ -2942,7 +2942,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 200
VARIABLE_SCOPE GLOBAL
@@ -838,7 +860,7 @@
VARIABLE_COMMENT Maximum number of mutex instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2787,7 +2787,7 @@
+@@ -2956,7 +2956,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -847,7 +869,7 @@
VARIABLE_COMMENT Maximum number of instrumented MUTEX objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -2801,7 +2801,7 @@
+@@ -2970,7 +2970,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 40
VARIABLE_SCOPE GLOBAL
@@ -856,7 +878,7 @@
VARIABLE_COMMENT Maximum number of rwlock instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2815,7 +2815,7 @@
+@@ -2984,7 +2984,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -865,7 +887,7 @@
VARIABLE_COMMENT Maximum number of instrumented RWLOCK objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -2829,7 +2829,7 @@
+@@ -2998,7 +2998,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE GLOBAL
@@ -874,7 +896,7 @@
VARIABLE_COMMENT Maximum number of socket instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2843,7 +2843,7 @@
+@@ -3012,7 +3012,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -883,25 +905,25 @@
VARIABLE_COMMENT Maximum number of opened instrumented sockets. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2857,7 +2857,7 @@
+@@ -3026,7 +3026,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 150
+ DEFAULT_VALUE 160
VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Maximum number of stage instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2871,7 +2871,7 @@
+@@ -3040,7 +3040,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 188
+ DEFAULT_VALUE 191
VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Maximum number of statement instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2885,7 +2885,7 @@
+@@ -3054,7 +3054,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -910,7 +932,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented tables. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2899,7 +2899,7 @@
+@@ -3068,7 +3068,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -919,7 +941,7 @@
VARIABLE_COMMENT Maximum number of instrumented tables. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2913,7 +2913,7 @@
+@@ -3082,7 +3082,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 50
VARIABLE_SCOPE GLOBAL
@@ -928,7 +950,7 @@
VARIABLE_COMMENT Maximum number of thread instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2927,7 +2927,7 @@
+@@ -3096,7 +3096,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -937,7 +959,7 @@
VARIABLE_COMMENT Maximum number of instrumented threads. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2941,7 +2941,7 @@
+@@ -3110,7 +3110,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -946,7 +968,7 @@
VARIABLE_COMMENT Size of session attribute string buffer per thread. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2955,7 +2955,7 @@
+@@ -3124,7 +3124,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -955,7 +977,7 @@
VARIABLE_COMMENT Maximum number of rows in SETUP_ACTORS.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1024
-@@ -2969,7 +2969,7 @@
+@@ -3138,7 +3138,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -964,7 +986,7 @@
VARIABLE_COMMENT Maximum number of rows in SETUP_OBJECTS.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2983,7 +2983,7 @@
+@@ -3152,7 +3152,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -973,7 +995,7 @@
VARIABLE_COMMENT Maximum number of instrumented users. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3053,7 +3053,7 @@
+@@ -3222,7 +3222,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 32768
VARIABLE_SCOPE SESSION
@@ -982,7 +1004,7 @@
VARIABLE_COMMENT The size of the buffer that is allocated when preloading indexes
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -3081,7 +3081,7 @@
+@@ -3250,7 +3250,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 15
VARIABLE_SCOPE SESSION
@@ -991,7 +1013,7 @@
VARIABLE_COMMENT Number of statements about which profiling information is maintained. If set to 0, no profiles are stored. See SHOW PROFILES.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100
-@@ -3095,7 +3095,7 @@
+@@ -3264,7 +3264,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 5
VARIABLE_SCOPE SESSION
@@ -1000,7 +1022,7 @@
VARIABLE_COMMENT Seconds between sending progress reports to the client for time-consuming statements. Set to 0 to disable progress reporting.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3165,7 +3165,7 @@
+@@ -3348,7 +3348,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16384
VARIABLE_SCOPE SESSION
@@ -1009,7 +1031,7 @@
VARIABLE_COMMENT Allocation block size for query parsing and execution
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -3179,7 +3179,7 @@
+@@ -3362,7 +3362,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1048576
VARIABLE_SCOPE GLOBAL
@@ -1018,7 +1040,7 @@
VARIABLE_COMMENT Don't cache results that are bigger than this
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3193,7 +3193,7 @@
+@@ -3376,7 +3376,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4096
VARIABLE_SCOPE GLOBAL
@@ -1027,7 +1049,7 @@
VARIABLE_COMMENT The minimum size for blocks allocated by the query cache
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3210,7 +3210,7 @@
+@@ -3393,7 +3393,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The memory allocated to store results from old queries
NUMERIC_MIN_VALUE 0
@@ -1036,7 +1058,7 @@
NUMERIC_BLOCK_SIZE 1024
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3263,7 +3263,7 @@
+@@ -3446,7 +3446,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 24576
VARIABLE_SCOPE SESSION
@@ -1045,7 +1067,7 @@
VARIABLE_COMMENT Persistent buffer for query parsing and execution
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -3277,7 +3277,7 @@
+@@ -3460,7 +3460,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4096
VARIABLE_SCOPE SESSION
@@ -1054,7 +1076,7 @@
VARIABLE_COMMENT Allocation block size for storing ranges during optimization
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 4294967295
-@@ -3291,7 +3291,7 @@
+@@ -3474,7 +3474,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 131072
VARIABLE_SCOPE SESSION
@@ -1063,7 +1085,7 @@
VARIABLE_COMMENT Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value
NUMERIC_MIN_VALUE 8192
NUMERIC_MAX_VALUE 2147483647
-@@ -3319,7 +3319,7 @@
+@@ -3502,7 +3502,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 262144
VARIABLE_SCOPE SESSION
@@ -1072,7 +1094,7 @@
VARIABLE_COMMENT When reading rows in sorted order after a sort, the rows are read through this buffer to avoid a disk seeks
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 2147483647
-@@ -3333,10 +3333,10 @@
+@@ -3516,10 +3516,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8388608
VARIABLE_SCOPE SESSION
@@ -1085,7 +1107,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3375,7 +3375,7 @@
+@@ -3558,7 +3558,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -1094,7 +1116,7 @@
VARIABLE_COMMENT Uniquely identifies the server instance in the community of replication partners
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -3473,7 +3473,7 @@
+@@ -3656,7 +3656,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1073741824
VARIABLE_SCOPE GLOBAL
@@ -1103,7 +1125,7 @@
VARIABLE_COMMENT The maximum packet length to sent successfully from the master to slave.
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -3487,7 +3487,7 @@
+@@ -3670,7 +3670,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2
VARIABLE_SCOPE GLOBAL
@@ -1112,7 +1134,7 @@
VARIABLE_COMMENT If creating the thread takes longer than this value (in seconds), the Slow_launch_threads counter will be incremented
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -3546,7 +3546,7 @@
+@@ -3729,7 +3729,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Each thread that needs to do a sort allocates a buffer of this size
NUMERIC_MIN_VALUE 1024
@@ -1121,7 +1143,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3837,7 +3837,7 @@
+@@ -4020,7 +4020,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 256
VARIABLE_SCOPE GLOBAL
@@ -1130,7 +1152,7 @@
VARIABLE_COMMENT The soft upper limit for number of cached stored routines for one connection.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 524288
-@@ -3907,7 +3907,7 @@
+@@ -4090,7 +4090,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 400
VARIABLE_SCOPE GLOBAL
@@ -1139,7 +1161,7 @@
VARIABLE_COMMENT The number of cached table definitions
NUMERIC_MIN_VALUE 400
NUMERIC_MAX_VALUE 524288
-@@ -3921,7 +3921,7 @@
+@@ -4104,7 +4104,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2000
VARIABLE_SCOPE GLOBAL
@@ -1148,7 +1170,7 @@
VARIABLE_COMMENT The number of cached open tables
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1048576
-@@ -3949,7 +3949,7 @@
+@@ -4174,7 +4174,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 256
VARIABLE_SCOPE GLOBAL
@@ -1157,7 +1179,7 @@
VARIABLE_COMMENT How many threads we should keep in a cache for reuse. These are freed after 5 minutes of idle time
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -3963,7 +3963,7 @@
+@@ -4188,7 +4188,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE GLOBAL
@@ -1166,7 +1188,7 @@
VARIABLE_COMMENT Permits the application to give the threads system a hint for the desired number of threads that should be run at the same time.This variable has no effect, and is deprecated. It will be removed in a future release.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 512
-@@ -4070,15 +4070,15 @@
+@@ -4295,15 +4295,15 @@
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME TMP_DISK_TABLE_SIZE
@@ -1186,7 +1208,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4092,7 +4092,7 @@
+@@ -4317,7 +4317,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT If an internal in-memory temporary table exceeds this size, MariaDB will automatically convert it to an on-disk MyISAM or Aria table. Same as tmp_table_size.
NUMERIC_MIN_VALUE 1024
@@ -1195,7 +1217,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4106,7 +4106,7 @@
+@@ -4331,7 +4331,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Alias for tmp_memory_table_size. If an internal in-memory temporary table exceeds this size, MariaDB will automatically convert it to an on-disk MyISAM or Aria table.
NUMERIC_MIN_VALUE 1024
@@ -1204,7 +1226,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4117,7 +4117,7 @@
+@@ -4342,7 +4342,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8192
VARIABLE_SCOPE SESSION
@@ -1213,7 +1235,7 @@
VARIABLE_COMMENT Allocation block size for transactions to be stored in binary log
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 134217728
-@@ -4131,7 +4131,7 @@
+@@ -4356,7 +4356,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4096
VARIABLE_SCOPE SESSION
@@ -1222,7 +1244,7 @@
VARIABLE_COMMENT Persistent buffer for transactions to be stored in binary log
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 134217728
-@@ -4229,7 +4229,7 @@
+@@ -4454,7 +4454,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 28800
VARIABLE_SCOPE SESSION
@@ -1231,7 +1253,7 @@
VARIABLE_COMMENT The number of seconds the server waits for activity on a connection before closing it
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -4333,7 +4333,7 @@
+@@ -4559,7 +4559,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME OPEN_FILES_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -1240,7 +1262,7 @@
VARIABLE_COMMENT If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 or autoset then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger) number of file descriptors
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -4346,7 +4346,7 @@
+@@ -4572,7 +4572,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes
NUMERIC_MIN_VALUE 0
@@ -1249,7 +1271,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4356,7 +4356,7 @@
+@@ -4582,7 +4582,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes
NUMERIC_MIN_VALUE 0
@@ -1258,7 +1280,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4441,7 +4441,7 @@
+@@ -4677,7 +4677,7 @@
VARIABLE_NAME LOG_TC_SIZE
GLOBAL_VALUE_ORIGIN AUTO
VARIABLE_SCOPE GLOBAL
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
index 4b8fc41ca14..cd65578d64a 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
@@ -8,6 +8,7 @@ where variable_name not like 'aria%' and
variable_name not like 'debug%' and
variable_name not like 'wsrep%' and
variable_name not in (
+'in_predicate_conversion_threshold',
'have_openssl',
'have_symlink',
'hostname',
@@ -15,6 +16,7 @@ variable_name not in (
'lower_case_file_system',
'lower_case_table_names',
'open_files_limit',
+'plugin_maturity',
'rand_seed1',
'rand_seed2',
'system_time_zone',
@@ -122,6 +124,20 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME BIND_ADDRESS
+SESSION_VALUE NULL
+GLOBAL_VALUE 127.0.0.1
+GLOBAL_VALUE_ORIGIN CONFIG
+DEFAULT_VALUE
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE VARCHAR
+VARIABLE_COMMENT IP address to bind to.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST NULL
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME BINLOG_ANNOTATE_ROW_EVENTS
SESSION_VALUE ON
GLOBAL_VALUE ON
@@ -206,6 +222,20 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME BINLOG_FILE_CACHE_SIZE
+SESSION_VALUE NULL
+GLOBAL_VALUE 16384
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 16384
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_COMMENT The size of file cache for the binary log
+NUMERIC_MIN_VALUE 8192
+NUMERIC_MAX_VALUE 18446744073709551615
+NUMERIC_BLOCK_SIZE 4096
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME BINLOG_FORMAT
SESSION_VALUE MIXED
GLOBAL_VALUE MIXED
@@ -444,6 +474,62 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME COLUMN_COMPRESSION_THRESHOLD
+SESSION_VALUE 100
+GLOBAL_VALUE 100
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 100
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT Minimum column data length eligible for compression
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 4294967295
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME COLUMN_COMPRESSION_ZLIB_LEVEL
+SESSION_VALUE 6
+GLOBAL_VALUE 6
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 6
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT zlib compression level (1 gives best speed, 9 gives best compression)
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 9
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME COLUMN_COMPRESSION_ZLIB_STRATEGY
+SESSION_VALUE DEFAULT_STRATEGY
+GLOBAL_VALUE DEFAULT_STRATEGY
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE DEFAULT_STRATEGY
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE ENUM
+VARIABLE_COMMENT The strategy parameter is used to tune the compression algorithm. Use the value DEFAULT_STRATEGY for normal data, FILTERED for data produced by a filter (or predictor), HUFFMAN_ONLY to force Huffman encoding only (no string match), or RLE to limit match distances to one (run-length encoding). Filtered data consists mostly of small values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress them better. The effect of FILTERED is to force more Huffman coding and less string matching; it is somewhat intermediate between DEFAULT_STRATEGY and HUFFMAN_ONLY. RLE is designed to be almost as fast as HUFFMAN_ONLY, but give better compression for PNG image data. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. FIXED prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST DEFAULT_STRATEGY,FILTERED,HUFFMAN_ONLY,RLE,FIXED
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME COLUMN_COMPRESSION_ZLIB_WRAP
+SESSION_VALUE OFF
+GLOBAL_VALUE OFF
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE OFF
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Generate zlib header and trailer and compute adler32 check value. It can be used with storage engines that don't provide data integrity verification to detect data corruption.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME COMPLETION_TYPE
SESSION_VALUE NO_CHAIN
GLOBAL_VALUE NO_CHAIN
@@ -815,7 +901,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE OFF
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT This option causes CREATE TABLE to create all TIMESTAMP columns as NULL with DEFAULT NULL attribute, Without this option, TIMESTAMP columns are NOT NULL and have implicit DEFAULT clauses. The old behavior is deprecated.
+VARIABLE_COMMENT This option causes CREATE TABLE to create all TIMESTAMP columns as NULL with DEFAULT NULL attribute, Without this option, TIMESTAMP columns are NOT NULL and have implicit DEFAULT clauses.
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
@@ -1214,6 +1300,48 @@ NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME IDLE_READONLY_TRANSACTION_TIMEOUT
+SESSION_VALUE 0
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT The number of seconds the server waits for read-only idle transaction
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 31536000
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME IDLE_TRANSACTION_TIMEOUT
+SESSION_VALUE 0
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT The number of seconds the server waits for idle transaction
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 31536000
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME IDLE_WRITE_TRANSACTION_TIMEOUT
+SESSION_VALUE 0
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT The number of seconds the server waits for write idle transaction
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 31536000
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME IGNORE_BUILTIN_INNODB
SESSION_VALUE NULL
GLOBAL_VALUE OFF
@@ -1600,7 +1728,7 @@ DEFAULT_VALUE 86400
VARIABLE_SCOPE SESSION
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Timeout in seconds to wait for a lock before returning an error.
-NUMERIC_MIN_VALUE 1
+NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
@@ -1662,6 +1790,20 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME LOG_DISABLED_STATEMENTS
+SESSION_VALUE sp
+GLOBAL_VALUE sp
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE sp
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE SET
+VARIABLE_COMMENT Don't log certain types of statements to general log
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST slave,sp
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_ERROR
SESSION_VALUE NULL
GLOBAL_VALUE
@@ -1691,13 +1833,13 @@ ENUM_VALUE_LIST NONE,FILE,TABLE
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_QUERIES_NOT_USING_INDEXES
-SESSION_VALUE NULL
+SESSION_VALUE OFF
GLOBAL_VALUE OFF
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
+VARIABLE_SCOPE SESSION
VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Log queries that are executed without benefit of any index to the slow log if it is open
+VARIABLE_COMMENT Log queries that are executed without benefit of any index to the slow log if it is open. Same as log_slow_filter='not_using_index'
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
@@ -1705,31 +1847,45 @@ ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME LOG_SLOW_ADMIN_STATEMENTS
-SESSION_VALUE NULL
+SESSION_VALUE ON
GLOBAL_VALUE ON
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE ON
-VARIABLE_SCOPE GLOBAL
+VARIABLE_SCOPE SESSION
VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Log slow OPTIMIZE, ANALYZE, ALTER and other administrative statements to the slow log if it is open.
+VARIABLE_COMMENT Log slow OPTIMIZE, ANALYZE, ALTER and other administrative statements to the slow log if it is open. Resets or sets the option 'admin' in log_slow_disabled_statements
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME LOG_SLOW_DISABLED_STATEMENTS
+SESSION_VALUE sp
+GLOBAL_VALUE sp
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE sp
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE SET
+VARIABLE_COMMENT Don't log certain types of statements to slow log
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST admin,call,slave,sp
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_SLOW_FILTER
-SESSION_VALUE admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
-GLOBAL_VALUE admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+SESSION_VALUE admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+GLOBAL_VALUE admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+DEFAULT_VALUE admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
VARIABLE_SCOPE SESSION
VARIABLE_TYPE SET
-VARIABLE_COMMENT Log only certain types of queries
+VARIABLE_COMMENT Log only certain types of queries to the slow log. If variable empty alll kind of queries are logged. All types are bound by slow_query_time, except 'not_using_index' which is always logged if enabled
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+ENUM_VALUE_LIST admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,not_using_index,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_SLOW_RATE_LIMIT
@@ -1747,13 +1903,13 @@ ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_SLOW_SLAVE_STATEMENTS
-SESSION_VALUE NULL
+SESSION_VALUE ON
GLOBAL_VALUE ON
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE ON
-VARIABLE_SCOPE GLOBAL
+VARIABLE_SCOPE SESSION
VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Log slow statements executed by slave thread to the slow log if it is open.
+VARIABLE_COMMENT Log slow statements executed by slave thread to the slow log if it is open. Resets or sets the option 'slave' in log_slow_disabled_statements
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
@@ -2517,17 +2673,17 @@ ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_SWITCH
-SESSION_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
-GLOBAL_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+SESSION_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
+GLOBAL_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+DEFAULT_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
VARIABLE_SCOPE SESSION
VARIABLE_TYPE FLAGSET
VARIABLE_COMMENT Fine-tune the optimizer behavior
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST index_merge,index_merge_union,index_merge_sort_union,index_merge_intersection,index_merge_sort_intersection,engine_condition_pushdown,index_condition_pushdown,derived_merge,derived_with_keys,firstmatch,loosescan,materialization,in_to_exists,semijoin,partial_match_rowid_merge,partial_match_table_scan,subquery_cache,mrr,mrr_cost_based,mrr_sort_keys,outer_join_with_cache,semijoin_with_cache,join_cache_incremental,join_cache_hashed,join_cache_bka,optimize_join_buffer_size,table_elimination,extended_keys,exists_to_in,orderby_uses_equalities,condition_pushdown_for_derived,split_grouping_derived,default
+ENUM_VALUE_LIST index_merge,index_merge_union,index_merge_sort_union,index_merge_intersection,index_merge_sort_intersection,engine_condition_pushdown,index_condition_pushdown,derived_merge,derived_with_keys,firstmatch,loosescan,materialization,in_to_exists,semijoin,partial_match_rowid_merge,partial_match_table_scan,subquery_cache,mrr,mrr_cost_based,mrr_sort_keys,outer_join_with_cache,semijoin_with_cache,join_cache_incremental,join_cache_hashed,join_cache_bka,optimize_join_buffer_size,table_elimination,extended_keys,exists_to_in,orderby_uses_equalities,condition_pushdown_for_derived,split_materialized,default
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_USE_CONDITION_SELECTIVITY
@@ -3020,20 +3176,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME PLUGIN_MATURITY
-SESSION_VALUE NULL
-GLOBAL_VALUE unknown
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE unknown
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE ENUM
-VARIABLE_COMMENT The lowest desirable plugin maturity. Plugins less mature than that will not be installed or loaded
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST unknown,experimental,alpha,beta,gamma,stable
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PORT
SESSION_VALUE NULL
GLOBAL_VALUE MASTER_MYPORT
@@ -3118,6 +3260,20 @@ NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME PROXY_PROTOCOL_NETWORKS
+SESSION_VALUE NULL
+GLOBAL_VALUE
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE VARCHAR
+VARIABLE_COMMENT Enable proxy protocol for these source networks. The syntax is a comma separated list of IPv4 and IPv6 networks. If the network doesn't contain mask, it is considered to be a single host. "*" represents all networks and must the only directive on the line. String "localhost" represents non-TCP local connections (Unix domain socket, Windows named pipe or shared memory).
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST NULL
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PROXY_USER
SESSION_VALUE
GLOBAL_VALUE NULL
@@ -3633,7 +3789,7 @@ VARIABLE_COMMENT Sets the sql mode
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH,EMPTY_STRING_IS_NULL
+ENUM_VALUE_LIST REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH,EMPTY_STRING_IS_NULL,SIMULTANEOUS_ASSIGNMENT
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SQL_NOTES
@@ -3902,6 +4058,48 @@ NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME SYSTEM_VERSIONING_ALTER_HISTORY
+SESSION_VALUE ERROR
+GLOBAL_VALUE ERROR
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE ERROR
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE ENUM
+VARIABLE_COMMENT Versioning ALTER TABLE mode. ERROR: Fail ALTER with error; KEEP: Keep historical system rows and subject them to ALTER;
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST ERROR,KEEP
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME SYSTEM_VERSIONING_ASOF
+SESSION_VALUE DEFAULT
+GLOBAL_VALUE DEFAULT
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE DEFAULT
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE VARCHAR
+VARIABLE_COMMENT Default value for the FOR SYSTEM_TIME AS OF clause
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST DEFAULT
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME SYSTEM_VERSIONING_INNODB_ALGORITHM_SIMPLE
+SESSION_VALUE ON
+GLOBAL_VALUE ON
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE ON
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Use simple algorithm of timestamp handling in InnoDB instead of TRX_SEES
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME TABLE_DEFINITION_CACHE
SESSION_VALUE NULL
GLOBAL_VALUE 400
@@ -3944,6 +4142,48 @@ NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME TCP_KEEPALIVE_INTERVAL
+SESSION_VALUE NULL
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE INT
+VARIABLE_COMMENT The interval, in seconds, between when successive keep-alive packets are sent if no acknowledgement is received.If set to 0, system dependent default is used.
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 2147483
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME TCP_KEEPALIVE_PROBES
+SESSION_VALUE NULL
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE INT
+VARIABLE_COMMENT The number of unacknowledged probes to send before considering the connection dead and notifying the application layer.If set to 0, system dependent default is used.
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 2147483
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME TCP_KEEPALIVE_TIME
+SESSION_VALUE NULL
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE INT
+VARIABLE_COMMENT Timeout, in milliseconds, with no activity until the first TCP keep-alive packet is sent.If set to 0, system dependent default is used.
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 2147483
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME THREAD_CACHE_SIZE
SESSION_VALUE NULL
GLOBAL_VALUE 151
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff
index 200b9283618..cb9e84b81c8 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff
@@ -1,6 +1,6 @@
---- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
-+++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
-@@ -57,7 +57,7 @@
+--- sysvars_server_notembedded.result 2017-12-15 20:57:40.174654761 +0200
++++ sysvars_server_notembedded,32bit.reject 2017-12-15 21:02:20.476044700 +0200
+@@ -58,7 +58,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -9,7 +9,7 @@
VARIABLE_COMMENT Auto-increment columns are incremented by this
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 65535
-@@ -71,7 +71,7 @@
+@@ -72,7 +72,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -18,7 +18,7 @@
VARIABLE_COMMENT Offset added to Auto-increment columns. Used when auto-increment-increment != 1
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 65535
-@@ -85,7 +85,7 @@
+@@ -86,7 +86,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 150
VARIABLE_SCOPE GLOBAL
@@ -27,7 +27,7 @@
VARIABLE_COMMENT The number of outstanding connection requests MariaDB can have. This comes into play when the main MariaDB thread gets very many connection requests in a very short time
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65535
-@@ -144,7 +144,7 @@
+@@ -159,7 +159,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the transactional cache for updates to transactional engines for the binary log. If you often use transactions containing many statements, you can increase this to get more performance
NUMERIC_MIN_VALUE 4096
@@ -36,7 +36,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -169,10 +169,10 @@
+@@ -184,10 +184,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -49,7 +49,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -183,10 +183,10 @@
+@@ -198,10 +198,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100000
VARIABLE_SCOPE GLOBAL
@@ -62,7 +62,16 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -256,7 +256,7 @@
+@@ -229,7 +229,7 @@
+ VARIABLE_TYPE BIGINT UNSIGNED
+ VARIABLE_COMMENT The size of file cache for the binary log
+ NUMERIC_MIN_VALUE 8192
+-NUMERIC_MAX_VALUE 18446744073709551615
++NUMERIC_MAX_VALUE 4294967295
+ NUMERIC_BLOCK_SIZE 4096
+ ENUM_VALUE_LIST NULL
+ READ_ONLY NO
+@@ -285,7 +285,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the statement cache for updates to non-transactional engines for the binary log. If you often use statements updating a great number of rows, you can increase this to get more performance.
NUMERIC_MIN_VALUE 4096
@@ -71,7 +80,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -270,7 +270,7 @@
+@@ -299,7 +299,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Size of tree cache used in bulk insert optimisation. Note that this is a limit per thread!
NUMERIC_MIN_VALUE 0
@@ -80,7 +89,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -477,7 +477,7 @@
+@@ -562,7 +562,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 10
VARIABLE_SCOPE GLOBAL
@@ -89,7 +98,7 @@
VARIABLE_COMMENT The number of seconds the mysqld server is waiting for a connect packet before responding with 'Bad handshake'
NUMERIC_MIN_VALUE 2
NUMERIC_MAX_VALUE 31536000
-@@ -533,7 +533,7 @@
+@@ -618,7 +618,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 15
VARIABLE_SCOPE SESSION
@@ -98,7 +107,7 @@
VARIABLE_COMMENT Long search depth for the two-step deadlock detection
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 33
-@@ -547,7 +547,7 @@
+@@ -632,7 +632,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4
VARIABLE_SCOPE SESSION
@@ -107,7 +116,7 @@
VARIABLE_COMMENT Short search depth for the two-step deadlock detection
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 32
-@@ -561,7 +561,7 @@
+@@ -646,7 +646,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 50000000
VARIABLE_SCOPE SESSION
@@ -116,7 +125,7 @@
VARIABLE_COMMENT Long timeout for the two-step deadlock detection (in microseconds)
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -575,7 +575,7 @@
+@@ -660,7 +660,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10000
VARIABLE_SCOPE SESSION
@@ -125,7 +134,7 @@
VARIABLE_COMMENT Short timeout for the two-step deadlock detection (in microseconds)
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -645,7 +645,7 @@
+@@ -730,7 +730,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE SESSION
@@ -134,7 +143,7 @@
VARIABLE_COMMENT The default week format used by WEEK() functions
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 7
-@@ -659,7 +659,7 @@
+@@ -744,7 +744,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -143,7 +152,7 @@
VARIABLE_COMMENT After inserting delayed_insert_limit rows, the INSERT DELAYED handler will check if there are any SELECT statements pending. If so, it allows these to execute before continuing.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -673,7 +673,7 @@
+@@ -758,7 +758,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 300
VARIABLE_SCOPE GLOBAL
@@ -152,7 +161,7 @@
VARIABLE_COMMENT How long a INSERT DELAYED thread should wait for INSERT statements before terminating
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -687,7 +687,7 @@
+@@ -772,7 +772,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1000
VARIABLE_SCOPE GLOBAL
@@ -161,7 +170,7 @@
VARIABLE_COMMENT What size queue (in rows) should be allocated for handling INSERT DELAYED. If the queue becomes full, any client that does INSERT DELAYED will wait until there is room in the queue again
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -715,7 +715,7 @@
+@@ -800,7 +800,7 @@
GLOBAL_VALUE_ORIGIN SQL
DEFAULT_VALUE 4
VARIABLE_SCOPE SESSION
@@ -170,7 +179,7 @@
VARIABLE_COMMENT Precision of the result of '/' operator will be increased on that value
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 38
-@@ -827,7 +827,7 @@
+@@ -912,7 +912,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -179,7 +188,7 @@
VARIABLE_COMMENT If non-zero, binary logs will be purged after expire_logs_days days; possible purges happen at startup and at binary log rotation
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 99
-@@ -869,7 +869,7 @@
+@@ -954,7 +954,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE GLOBAL
@@ -188,7 +197,7 @@
VARIABLE_COMMENT The number of connections on extra-port
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100000
-@@ -911,7 +911,7 @@
+@@ -996,7 +996,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -197,7 +206,7 @@
VARIABLE_COMMENT A dedicated thread is created to flush all tables at the given interval
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -953,7 +953,7 @@
+@@ -1038,7 +1038,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 84
VARIABLE_SCOPE GLOBAL
@@ -206,7 +215,7 @@
VARIABLE_COMMENT The maximum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 84
-@@ -967,7 +967,7 @@
+@@ -1052,7 +1052,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4
VARIABLE_SCOPE GLOBAL
@@ -215,7 +224,7 @@
VARIABLE_COMMENT The minimum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 84
-@@ -981,7 +981,7 @@
+@@ -1066,7 +1066,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 20
VARIABLE_SCOPE GLOBAL
@@ -224,7 +233,7 @@
VARIABLE_COMMENT Number of best matches to use for query expansion
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1000
-@@ -1040,7 +1040,7 @@
+@@ -1125,7 +1125,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The maximum length of the result of function GROUP_CONCAT()
NUMERIC_MIN_VALUE 4
@@ -233,7 +242,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1275,7 +1275,7 @@
+@@ -1374,7 +1374,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE SESSION
@@ -242,7 +251,7 @@
VARIABLE_COMMENT Number of bytes used for a histogram. If set to 0, no histograms are created by ANALYZE.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
-@@ -1303,7 +1303,7 @@
+@@ -1402,7 +1402,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 128
VARIABLE_SCOPE GLOBAL
@@ -251,7 +260,7 @@
VARIABLE_COMMENT How many host names should be cached to avoid resolving.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65536
-@@ -1415,7 +1415,7 @@
+@@ -1556,7 +1556,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 28800
VARIABLE_SCOPE SESSION
@@ -260,7 +269,20 @@
VARIABLE_COMMENT The number of seconds the server waits for activity on an interactive connection before closing it
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -1446,7 +1446,7 @@
+@@ -1570,10 +1570,10 @@
+ GLOBAL_VALUE_ORIGIN COMPILE-TIME
+ DEFAULT_VALUE 1000
+ VARIABLE_SCOPE SESSION
+-VARIABLE_TYPE BIGINT UNSIGNED
++VARIABLE_TYPE INT UNSIGNED
+ VARIABLE_COMMENT The minimum number of scalar elements in the value list of IN predicate that triggers its conversion to IN subquery
+ NUMERIC_MIN_VALUE 0
+-NUMERIC_MAX_VALUE 18446744073709551615
++NUMERIC_MAX_VALUE 4294967295
+ NUMERIC_BLOCK_SIZE 1
+ ENUM_VALUE_LIST NULL
+ READ_ONLY NO
+@@ -1601,7 +1601,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the buffer that is used for joins
NUMERIC_MIN_VALUE 128
@@ -269,7 +291,7 @@
NUMERIC_BLOCK_SIZE 128
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1471,7 +1471,7 @@
+@@ -1626,7 +1626,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2
VARIABLE_SCOPE SESSION
@@ -278,7 +300,7 @@
VARIABLE_COMMENT Controls what join operations can be executed with join buffers. Odd numbers are used for plain join buffers while even numbers are used for linked buffers
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 8
-@@ -1502,7 +1502,7 @@
+@@ -1657,7 +1657,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the buffer used for index blocks for MyISAM tables. Increase this to get better index handling (for all reads and multiple writes) to as much as you can afford
NUMERIC_MIN_VALUE 0
@@ -287,16 +309,16 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1723,7 +1723,7 @@
+@@ -1878,7 +1878,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 86400
VARIABLE_SCOPE SESSION
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Timeout in seconds to wait for a lock before returning an error.
- NUMERIC_MIN_VALUE 1
+ NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -1905,7 +1905,7 @@
+@@ -2088,7 +2088,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -305,7 +327,7 @@
VARIABLE_COMMENT Write to slow log every #th slow query. Set to 1 to log everything. Increase it to reduce the size of the slow or the performance impact of slow logging
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -1947,7 +1947,7 @@
+@@ -2130,7 +2130,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2
VARIABLE_SCOPE SESSION
@@ -314,7 +336,7 @@
VARIABLE_COMMENT Log some not critical warnings to the general log file.Value can be between 0 and 11. Higher values mean more verbosity
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2003,7 +2003,7 @@
+@@ -2186,7 +2186,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16777216
VARIABLE_SCOPE SESSION
@@ -323,7 +345,7 @@
VARIABLE_COMMENT Max packet length to send to or receive from the server
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -2013,14 +2013,14 @@
+@@ -2196,14 +2196,14 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_BINLOG_CACHE_SIZE
SESSION_VALUE NULL
@@ -341,7 +363,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2031,7 +2031,7 @@
+@@ -2214,7 +2214,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1073741824
VARIABLE_SCOPE GLOBAL
@@ -350,7 +372,7 @@
VARIABLE_COMMENT Binary log will be rotated automatically when the size exceeds this value.
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 1073741824
-@@ -2041,14 +2041,14 @@
+@@ -2224,14 +2224,14 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_BINLOG_STMT_CACHE_SIZE
SESSION_VALUE NULL
@@ -368,7 +390,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2059,7 +2059,7 @@
+@@ -2242,7 +2242,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 151
VARIABLE_SCOPE GLOBAL
@@ -377,7 +399,7 @@
VARIABLE_COMMENT The number of simultaneous clients allowed
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100000
-@@ -2073,7 +2073,7 @@
+@@ -2256,7 +2256,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -386,7 +408,7 @@
VARIABLE_COMMENT If there is more than this number of interrupted connections from a host this host will be blocked from further connections
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2087,7 +2087,7 @@
+@@ -2270,7 +2270,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 20
VARIABLE_SCOPE SESSION
@@ -395,7 +417,7 @@
VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -2115,7 +2115,7 @@
+@@ -2298,7 +2298,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 64
VARIABLE_SCOPE SESSION
@@ -404,7 +426,7 @@
VARIABLE_COMMENT Max number of errors/warnings to store for a statement
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65535
-@@ -2132,7 +2132,7 @@
+@@ -2315,7 +2315,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Don't allow creation of heap tables bigger than this
NUMERIC_MIN_VALUE 16384
@@ -413,7 +435,7 @@
NUMERIC_BLOCK_SIZE 1024
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2143,7 +2143,7 @@
+@@ -2326,7 +2326,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 20
VARIABLE_SCOPE SESSION
@@ -422,7 +444,7 @@
VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -2171,7 +2171,7 @@
+@@ -2354,7 +2354,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE SESSION
@@ -431,7 +453,7 @@
VARIABLE_COMMENT Max number of bytes in sorted records
NUMERIC_MIN_VALUE 4
NUMERIC_MAX_VALUE 8388608
-@@ -2185,7 +2185,7 @@
+@@ -2368,7 +2368,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 1048576
VARIABLE_SCOPE GLOBAL
@@ -440,7 +462,7 @@
VARIABLE_COMMENT The maximum BLOB length to send to server from mysql_send_long_data API. Deprecated option; use max_allowed_packet instead.
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -2199,7 +2199,7 @@
+@@ -2382,7 +2382,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16382
VARIABLE_SCOPE GLOBAL
@@ -449,7 +471,7 @@
VARIABLE_COMMENT Maximum number of prepared statements in the server
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2213,7 +2213,7 @@
+@@ -2396,7 +2396,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4294967295
VARIABLE_SCOPE SESSION
@@ -458,7 +480,7 @@
VARIABLE_COMMENT Maximum number of iterations when executing recursive queries
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2241,7 +2241,7 @@
+@@ -2424,7 +2424,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4294967295
VARIABLE_SCOPE SESSION
@@ -467,7 +489,7 @@
VARIABLE_COMMENT Limit assumed max number of seeks when looking up rows based on a key
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2269,7 +2269,7 @@
+@@ -2452,7 +2452,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE SESSION
@@ -476,7 +498,7 @@
VARIABLE_COMMENT The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored)
NUMERIC_MIN_VALUE 4
NUMERIC_MAX_VALUE 8388608
-@@ -2283,7 +2283,7 @@
+@@ -2466,7 +2466,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE SESSION
@@ -485,7 +507,7 @@
VARIABLE_COMMENT Maximum stored procedure recursion depth
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
-@@ -2311,7 +2311,7 @@
+@@ -2494,7 +2494,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 32
VARIABLE_SCOPE SESSION
@@ -494,7 +516,7 @@
VARIABLE_COMMENT Unused, will be removed.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2339,7 +2339,7 @@
+@@ -2522,7 +2522,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4294967295
VARIABLE_SCOPE GLOBAL
@@ -503,7 +525,7 @@
VARIABLE_COMMENT After this many write locks, allow some read locks to run in between
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2353,7 +2353,7 @@
+@@ -2536,7 +2536,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE GLOBAL
@@ -512,7 +534,7 @@
VARIABLE_COMMENT Unused
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1048576
-@@ -2367,7 +2367,7 @@
+@@ -2550,7 +2550,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8
VARIABLE_SCOPE GLOBAL
@@ -521,7 +543,7 @@
VARIABLE_COMMENT Unused
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1024
-@@ -2381,7 +2381,7 @@
+@@ -2564,7 +2564,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE SESSION
@@ -530,7 +552,7 @@
VARIABLE_COMMENT Don't write queries to slow log that examine fewer rows than that
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2395,7 +2395,7 @@
+@@ -2578,7 +2578,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 262144
VARIABLE_SCOPE SESSION
@@ -539,7 +561,7 @@
VARIABLE_COMMENT Size of buffer to use when using MRR with range access
NUMERIC_MIN_VALUE 8192
NUMERIC_MAX_VALUE 2147483647
-@@ -2409,10 +2409,10 @@
+@@ -2592,10 +2592,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 256
VARIABLE_SCOPE SESSION
@@ -552,7 +574,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2423,7 +2423,7 @@
+@@ -2606,7 +2606,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE GLOBAL
@@ -561,7 +583,7 @@
VARIABLE_COMMENT Block size to be used for MyISAM index pages
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 16384
-@@ -2437,7 +2437,7 @@
+@@ -2620,7 +2620,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 6
VARIABLE_SCOPE GLOBAL
@@ -570,7 +592,7 @@
VARIABLE_COMMENT Default pointer size to be used for MyISAM tables
NUMERIC_MIN_VALUE 2
NUMERIC_MAX_VALUE 7
-@@ -2447,9 +2447,9 @@
+@@ -2630,9 +2630,9 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MYISAM_MAX_SORT_FILE_SIZE
SESSION_VALUE NULL
@@ -582,7 +604,7 @@
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Don't use the fast sort index method to created index if the temporary file would get bigger than this
-@@ -2461,14 +2461,14 @@
+@@ -2644,14 +2644,14 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MYISAM_MMAP_SIZE
SESSION_VALUE NULL
@@ -600,7 +622,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY YES
-@@ -2493,10 +2493,10 @@
+@@ -2676,10 +2676,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -613,7 +635,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2510,7 +2510,7 @@
+@@ -2693,7 +2693,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The buffer that is allocated when sorting the index when doing a REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE
NUMERIC_MIN_VALUE 4096
@@ -622,7 +644,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2563,7 +2563,7 @@
+@@ -2746,7 +2746,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16384
VARIABLE_SCOPE SESSION
@@ -631,7 +653,7 @@
VARIABLE_COMMENT Buffer length for TCP/IP and socket communication
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1048576
-@@ -2577,7 +2577,7 @@
+@@ -2760,7 +2760,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 30
VARIABLE_SCOPE SESSION
@@ -640,7 +662,7 @@
VARIABLE_COMMENT Number of seconds to wait for more data from a connection before aborting the read
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -2591,7 +2591,7 @@
+@@ -2774,7 +2774,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE SESSION
@@ -649,7 +671,7 @@
VARIABLE_COMMENT If a read on a communication port is interrupted, retry this many times before giving up
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2605,7 +2605,7 @@
+@@ -2788,7 +2788,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 60
VARIABLE_SCOPE SESSION
@@ -658,7 +680,7 @@
VARIABLE_COMMENT Number of seconds to wait for a block to be written to a connection before aborting the write
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -2675,7 +2675,7 @@
+@@ -2858,7 +2858,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -667,7 +689,7 @@
VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1
-@@ -2689,7 +2689,7 @@
+@@ -2872,7 +2872,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 62
VARIABLE_SCOPE SESSION
@@ -676,7 +698,7 @@
VARIABLE_COMMENT Maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to compile a query. Values smaller than the number of tables in a relation result in faster optimization, but may produce very bad query plans. If set to 0, the system will automatically pick a reasonable value.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 62
-@@ -2703,7 +2703,7 @@
+@@ -2886,7 +2886,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE SESSION
@@ -685,7 +707,7 @@
VARIABLE_COMMENT Controls number of record samples to check condition selectivity
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 4294967295
-@@ -2731,7 +2731,7 @@
+@@ -2914,7 +2914,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -694,7 +716,7 @@
VARIABLE_COMMENT Controls selectivity of which conditions the optimizer takes into account to calculate cardinality of a partial join when it searches for the best execution plan Meaning: 1 - use selectivity of index backed range conditions to calculate the cardinality of a partial join if the last joined table is accessed by full table scan or an index scan, 2 - use selectivity of index backed range conditions to calculate the cardinality of a partial join in any case, 3 - additionally always use selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join, 4 - use histograms to calculate selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join.5 - additionally use selectivity of certain non-range predicates calculated on record samples
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 5
-@@ -2759,7 +2759,7 @@
+@@ -2942,7 +2942,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -703,7 +725,7 @@
VARIABLE_COMMENT Maximum number of instrumented user@host accounts. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2773,7 +2773,7 @@
+@@ -2956,7 +2956,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -712,7 +734,7 @@
VARIABLE_COMMENT Size of the statement digest. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 200
-@@ -2787,7 +2787,7 @@
+@@ -2970,7 +2970,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -721,7 +743,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_STAGES_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2801,7 +2801,7 @@
+@@ -2984,7 +2984,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -730,7 +752,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STAGES_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2815,7 +2815,7 @@
+@@ -2998,7 +2998,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -739,7 +761,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_STATEMENTS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2829,7 +2829,7 @@
+@@ -3012,7 +3012,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -748,7 +770,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STATEMENTS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2843,7 +2843,7 @@
+@@ -3026,7 +3026,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -757,7 +779,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_WAITS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2857,7 +2857,7 @@
+@@ -3040,7 +3040,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -766,7 +788,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_WAITS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2871,7 +2871,7 @@
+@@ -3054,7 +3054,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -775,7 +797,7 @@
VARIABLE_COMMENT Maximum number of instrumented hosts. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2885,7 +2885,7 @@
+@@ -3068,7 +3068,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 80
VARIABLE_SCOPE GLOBAL
@@ -784,7 +806,7 @@
VARIABLE_COMMENT Maximum number of condition instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2899,7 +2899,7 @@
+@@ -3082,7 +3082,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -793,7 +815,7 @@
VARIABLE_COMMENT Maximum number of instrumented condition objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2913,7 +2913,7 @@
+@@ -3096,7 +3096,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1024
VARIABLE_SCOPE GLOBAL
@@ -802,7 +824,7 @@
VARIABLE_COMMENT Maximum length considered for digest text, when stored in performance_schema tables.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2927,7 +2927,7 @@
+@@ -3110,7 +3110,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 50
VARIABLE_SCOPE GLOBAL
@@ -811,7 +833,7 @@
VARIABLE_COMMENT Maximum number of file instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2941,7 +2941,7 @@
+@@ -3124,7 +3124,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 32768
VARIABLE_SCOPE GLOBAL
@@ -820,7 +842,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented files.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2955,7 +2955,7 @@
+@@ -3138,7 +3138,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -829,7 +851,7 @@
VARIABLE_COMMENT Maximum number of instrumented files. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2969,7 +2969,7 @@
+@@ -3152,7 +3152,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 200
VARIABLE_SCOPE GLOBAL
@@ -838,7 +860,7 @@
VARIABLE_COMMENT Maximum number of mutex instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2983,7 +2983,7 @@
+@@ -3166,7 +3166,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -847,7 +869,7 @@
VARIABLE_COMMENT Maximum number of instrumented MUTEX objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -2997,7 +2997,7 @@
+@@ -3180,7 +3180,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 40
VARIABLE_SCOPE GLOBAL
@@ -856,7 +878,7 @@
VARIABLE_COMMENT Maximum number of rwlock instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -3011,7 +3011,7 @@
+@@ -3194,7 +3194,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -865,7 +887,7 @@
VARIABLE_COMMENT Maximum number of instrumented RWLOCK objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -3025,7 +3025,7 @@
+@@ -3208,7 +3208,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE GLOBAL
@@ -874,7 +896,7 @@
VARIABLE_COMMENT Maximum number of socket instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -3039,7 +3039,7 @@
+@@ -3222,7 +3222,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -883,25 +905,25 @@
VARIABLE_COMMENT Maximum number of opened instrumented sockets. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3053,7 +3053,7 @@
+@@ -3236,7 +3236,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 150
+ DEFAULT_VALUE 160
VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Maximum number of stage instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -3067,7 +3067,7 @@
+@@ -3250,7 +3250,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
- DEFAULT_VALUE 188
+ DEFAULT_VALUE 191
VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Maximum number of statement instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -3081,7 +3081,7 @@
+@@ -3264,7 +3264,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -910,7 +932,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented tables. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3095,7 +3095,7 @@
+@@ -3278,7 +3278,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -919,7 +941,7 @@
VARIABLE_COMMENT Maximum number of instrumented tables. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3109,7 +3109,7 @@
+@@ -3292,7 +3292,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 50
VARIABLE_SCOPE GLOBAL
@@ -928,7 +950,7 @@
VARIABLE_COMMENT Maximum number of thread instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -3123,7 +3123,7 @@
+@@ -3306,7 +3306,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -937,7 +959,7 @@
VARIABLE_COMMENT Maximum number of instrumented threads. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3137,7 +3137,7 @@
+@@ -3320,7 +3320,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -946,7 +968,7 @@
VARIABLE_COMMENT Size of session attribute string buffer per thread. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3151,7 +3151,7 @@
+@@ -3334,7 +3334,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -955,7 +977,7 @@
VARIABLE_COMMENT Maximum number of rows in SETUP_ACTORS.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1024
-@@ -3165,7 +3165,7 @@
+@@ -3348,7 +3348,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
@@ -964,7 +986,7 @@
VARIABLE_COMMENT Maximum number of rows in SETUP_OBJECTS.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -3179,7 +3179,7 @@
+@@ -3362,7 +3362,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE -1
VARIABLE_SCOPE GLOBAL
@@ -973,7 +995,7 @@
VARIABLE_COMMENT Maximum number of instrumented users. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -3249,7 +3249,7 @@
+@@ -3432,7 +3432,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 32768
VARIABLE_SCOPE SESSION
@@ -982,7 +1004,7 @@
VARIABLE_COMMENT The size of the buffer that is allocated when preloading indexes
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -3277,7 +3277,7 @@
+@@ -3460,7 +3460,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 15
VARIABLE_SCOPE SESSION
@@ -991,7 +1013,7 @@
VARIABLE_COMMENT Number of statements about which profiling information is maintained. If set to 0, no profiles are stored. See SHOW PROFILES.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100
-@@ -3291,7 +3291,7 @@
+@@ -3474,7 +3474,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 5
VARIABLE_SCOPE SESSION
@@ -1000,7 +1022,7 @@
VARIABLE_COMMENT Seconds between sending progress reports to the client for time-consuming statements. Set to 0 to disable progress reporting.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3361,7 +3361,7 @@
+@@ -3558,7 +3558,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 16384
VARIABLE_SCOPE SESSION
@@ -1009,7 +1031,7 @@
VARIABLE_COMMENT Allocation block size for query parsing and execution
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -3375,7 +3375,7 @@
+@@ -3572,7 +3572,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1048576
VARIABLE_SCOPE GLOBAL
@@ -1018,7 +1040,7 @@
VARIABLE_COMMENT Don't cache results that are bigger than this
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3389,7 +3389,7 @@
+@@ -3586,7 +3586,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4096
VARIABLE_SCOPE GLOBAL
@@ -1027,7 +1049,7 @@
VARIABLE_COMMENT The minimum size for blocks allocated by the query cache
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3406,7 +3406,7 @@
+@@ -3603,7 +3603,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The memory allocated to store results from old queries
NUMERIC_MIN_VALUE 0
@@ -1036,7 +1058,7 @@
NUMERIC_BLOCK_SIZE 1024
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3459,7 +3459,7 @@
+@@ -3656,7 +3656,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 24576
VARIABLE_SCOPE SESSION
@@ -1045,7 +1067,7 @@
VARIABLE_COMMENT Persistent buffer for query parsing and execution
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -3473,7 +3473,7 @@
+@@ -3670,7 +3670,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4096
VARIABLE_SCOPE SESSION
@@ -1054,7 +1076,7 @@
VARIABLE_COMMENT Allocation block size for storing ranges during optimization
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 4294967295
-@@ -3490,7 +3490,7 @@
+@@ -3687,7 +3687,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Maximum speed(KB/s) to read binlog from master (0 = no limit)
NUMERIC_MIN_VALUE 0
@@ -1063,7 +1085,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3501,7 +3501,7 @@
+@@ -3698,7 +3698,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 131072
VARIABLE_SCOPE SESSION
@@ -1072,7 +1094,7 @@
VARIABLE_COMMENT Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value
NUMERIC_MIN_VALUE 8192
NUMERIC_MAX_VALUE 2147483647
-@@ -3529,7 +3529,7 @@
+@@ -3726,7 +3726,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 262144
VARIABLE_SCOPE SESSION
@@ -1081,7 +1103,7 @@
VARIABLE_COMMENT When reading rows in sorted order after a sort, the rows are read through this buffer to avoid a disk seeks
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 2147483647
-@@ -3809,10 +3809,10 @@
+@@ -4006,10 +4006,10 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8388608
VARIABLE_SCOPE SESSION
@@ -1094,7 +1116,46 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3851,7 +3851,7 @@
+@@ -4034,10 +4034,10 @@
+ GLOBAL_VALUE_ORIGIN COMPILE-TIME
+ DEFAULT_VALUE 10000
+ VARIABLE_SCOPE GLOBAL
+-VARIABLE_TYPE BIGINT UNSIGNED
++VARIABLE_TYPE INT UNSIGNED
+ VARIABLE_COMMENT The timeout value (in ms) for semi-synchronous replication in the master
+ NUMERIC_MIN_VALUE 0
+-NUMERIC_MAX_VALUE 18446744073709551615
++NUMERIC_MAX_VALUE 4294967295
+ NUMERIC_BLOCK_SIZE 1
+ ENUM_VALUE_LIST NULL
+ READ_ONLY NO
+@@ -4048,10 +4048,10 @@
+ GLOBAL_VALUE_ORIGIN COMPILE-TIME
+ DEFAULT_VALUE 32
+ VARIABLE_SCOPE GLOBAL
+-VARIABLE_TYPE BIGINT UNSIGNED
++VARIABLE_TYPE INT UNSIGNED
+ VARIABLE_COMMENT The tracing level for semi-sync replication.
+ NUMERIC_MIN_VALUE 0
+-NUMERIC_MAX_VALUE 18446744073709551615
++NUMERIC_MAX_VALUE 4294967295
+ NUMERIC_BLOCK_SIZE 1
+ ENUM_VALUE_LIST NULL
+ READ_ONLY NO
+@@ -4132,10 +4132,10 @@
+ GLOBAL_VALUE_ORIGIN COMPILE-TIME
+ DEFAULT_VALUE 32
+ VARIABLE_SCOPE GLOBAL
+-VARIABLE_TYPE BIGINT UNSIGNED
++VARIABLE_TYPE INT UNSIGNED
+ VARIABLE_COMMENT The tracing level for semi-sync replication.
+ NUMERIC_MIN_VALUE 0
+-NUMERIC_MAX_VALUE 18446744073709551615
++NUMERIC_MAX_VALUE 4294967295
+ NUMERIC_BLOCK_SIZE 1
+ ENUM_VALUE_LIST NULL
+ READ_ONLY NO
+@@ -4174,7 +4174,7 @@
GLOBAL_VALUE_ORIGIN CONFIG
DEFAULT_VALUE 1
VARIABLE_SCOPE SESSION
@@ -1103,7 +1164,7 @@
VARIABLE_COMMENT Uniquely identifies the server instance in the community of replication partners
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -4033,7 +4033,7 @@
+@@ -4356,7 +4356,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -1112,7 +1173,7 @@
VARIABLE_COMMENT Maximum number of parallel threads to use on slave for events in a single replication domain. When using multiple domains, this can be used to limit a single domain from grabbing all threads and thus stalling other domains. The default of 0 means to allow a domain to grab as many threads as it wants, up to the value of slave_parallel_threads.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16383
-@@ -4075,7 +4075,7 @@
+@@ -4398,7 +4398,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 1073741824
VARIABLE_SCOPE GLOBAL
@@ -1121,7 +1182,7 @@
VARIABLE_COMMENT The maximum packet length to sent successfully from the master to slave.
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -4103,7 +4103,7 @@
+@@ -4426,7 +4426,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 131072
VARIABLE_SCOPE GLOBAL
@@ -1130,7 +1191,7 @@
VARIABLE_COMMENT Limit on how much memory SQL threads should use per parallel replication thread when reading ahead in the relay log looking for opportunities for parallel replication. Only used when --slave-parallel-threads > 0.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 2147483647
-@@ -4131,7 +4131,7 @@
+@@ -4454,7 +4454,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -1139,7 +1200,7 @@
VARIABLE_COMMENT If non-zero, number of threads to spawn to apply in parallel events on the slave that were group-committed on the master or were logged with GTID in different replication domains. Note that these threads are in addition to the IO and SQL threads, which are always created by a replication slave
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16383
-@@ -4145,7 +4145,7 @@
+@@ -4468,7 +4468,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL
@@ -1148,16 +1209,25 @@
VARIABLE_COMMENT Alias for slave_parallel_threads
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16383
-@@ -4201,7 +4201,7 @@
+@@ -4524,7 +4524,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Number of times the slave SQL thread will retry a transaction in case it failed with a deadlock or elapsed lock wait timeout, before giving up and stopping
+ VARIABLE_COMMENT Number of times the slave SQL thread will retry a transaction in case it failed with a deadlock, elapsed lock wait timeout or listed in slave_transaction_retry_errors, before giving up and stopping
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -4229,7 +4229,7 @@
+@@ -4552,7 +4552,7 @@
+ GLOBAL_VALUE_ORIGIN COMPILE-TIME
+ DEFAULT_VALUE 0
+ VARIABLE_SCOPE GLOBAL
+-VARIABLE_TYPE BIGINT UNSIGNED
++VARIABLE_TYPE INT UNSIGNED
+ VARIABLE_COMMENT Interval of the slave SQL thread will retry a transaction in case it failed with a deadlock or elapsed lock wait timeout or listed in slave_transaction_retry_errors
+ NUMERIC_MIN_VALUE 0
+ NUMERIC_MAX_VALUE 3600
+@@ -4580,7 +4580,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2
VARIABLE_SCOPE GLOBAL
@@ -1166,7 +1236,7 @@
VARIABLE_COMMENT If creating the thread takes longer than this value (in seconds), the Slow_launch_threads counter will be incremented
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -4288,7 +4288,7 @@
+@@ -4639,7 +4639,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Each thread that needs to do a sort allocates a buffer of this size
NUMERIC_MIN_VALUE 1024
@@ -1175,7 +1245,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4593,7 +4593,7 @@
+@@ -4944,7 +4944,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 256
VARIABLE_SCOPE GLOBAL
@@ -1184,7 +1254,7 @@
VARIABLE_COMMENT The soft upper limit for number of cached stored routines for one connection.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 524288
-@@ -4691,7 +4691,7 @@
+@@ -5042,7 +5042,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 400
VARIABLE_SCOPE GLOBAL
@@ -1193,7 +1263,7 @@
VARIABLE_COMMENT The number of cached table definitions
NUMERIC_MIN_VALUE 400
NUMERIC_MAX_VALUE 524288
-@@ -4705,7 +4705,7 @@
+@@ -5056,7 +5056,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 2000
VARIABLE_SCOPE GLOBAL
@@ -1202,7 +1272,7 @@
VARIABLE_COMMENT The number of cached open tables
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1048576
-@@ -4733,7 +4733,7 @@
+@@ -5126,7 +5126,7 @@
GLOBAL_VALUE_ORIGIN AUTO
DEFAULT_VALUE 256
VARIABLE_SCOPE GLOBAL
@@ -1211,7 +1281,7 @@
VARIABLE_COMMENT How many threads we should keep in a cache for reuse. These are freed after 5 minutes of idle time
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -4747,7 +4747,7 @@
+@@ -5140,7 +5140,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE GLOBAL
@@ -1220,7 +1290,7 @@
VARIABLE_COMMENT Permits the application to give the threads system a hint for the desired number of threads that should be run at the same time.This variable has no effect, and is deprecated. It will be removed in a future release.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 512
-@@ -4952,15 +4952,15 @@
+@@ -5345,15 +5345,15 @@
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME TMP_DISK_TABLE_SIZE
@@ -1240,7 +1310,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4974,7 +4974,7 @@
+@@ -5367,7 +5367,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT If an internal in-memory temporary table exceeds this size, MariaDB will automatically convert it to an on-disk MyISAM or Aria table. Same as tmp_table_size.
NUMERIC_MIN_VALUE 1024
@@ -1249,7 +1319,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4988,7 +4988,7 @@
+@@ -5381,7 +5381,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Alias for tmp_memory_table_size. If an internal in-memory temporary table exceeds this size, MariaDB will automatically convert it to an on-disk MyISAM or Aria table.
NUMERIC_MIN_VALUE 1024
@@ -1258,7 +1328,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4999,7 +4999,7 @@
+@@ -5392,7 +5392,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 8192
VARIABLE_SCOPE SESSION
@@ -1267,7 +1337,7 @@
VARIABLE_COMMENT Allocation block size for transactions to be stored in binary log
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 134217728
-@@ -5013,7 +5013,7 @@
+@@ -5406,7 +5406,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 4096
VARIABLE_SCOPE SESSION
@@ -1276,7 +1346,7 @@
VARIABLE_COMMENT Persistent buffer for transactions to be stored in binary log
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 134217728
-@@ -5111,7 +5111,7 @@
+@@ -5504,7 +5504,7 @@
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 28800
VARIABLE_SCOPE SESSION
@@ -1285,7 +1355,7 @@
VARIABLE_COMMENT The number of seconds the server waits for activity on a connection before closing it
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -5215,7 +5215,7 @@
+@@ -5609,7 +5609,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME OPEN_FILES_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -1294,7 +1364,7 @@
VARIABLE_COMMENT If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 or autoset then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger) number of file descriptors
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -5228,7 +5228,7 @@
+@@ -5622,7 +5622,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes
NUMERIC_MIN_VALUE 0
@@ -1303,7 +1373,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -5238,7 +5238,7 @@
+@@ -5632,7 +5632,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes
NUMERIC_MIN_VALUE 0
@@ -1312,7 +1382,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -5323,7 +5323,7 @@
+@@ -5727,7 +5727,7 @@
VARIABLE_NAME LOG_TC_SIZE
GLOBAL_VALUE_ORIGIN AUTO
VARIABLE_SCOPE GLOBAL
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
index fd3a852f602..920796404b6 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
@@ -8,6 +8,7 @@ where variable_name not like 'aria%' and
variable_name not like 'debug%' and
variable_name not like 'wsrep%' and
variable_name not in (
+'in_predicate_conversion_threshold',
'have_openssl',
'have_symlink',
'hostname',
@@ -15,6 +16,7 @@ variable_name not in (
'lower_case_file_system',
'lower_case_table_names',
'open_files_limit',
+'plugin_maturity',
'rand_seed1',
'rand_seed2',
'system_time_zone',
@@ -122,6 +124,20 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME BIND_ADDRESS
+SESSION_VALUE NULL
+GLOBAL_VALUE 127.0.0.1
+GLOBAL_VALUE_ORIGIN CONFIG
+DEFAULT_VALUE
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE VARCHAR
+VARIABLE_COMMENT IP address to bind to.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST NULL
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME BINLOG_ANNOTATE_ROW_EVENTS
SESSION_VALUE ON
GLOBAL_VALUE ON
@@ -206,6 +222,20 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME BINLOG_FILE_CACHE_SIZE
+SESSION_VALUE NULL
+GLOBAL_VALUE 16384
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 16384
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_COMMENT The size of file cache for the binary log
+NUMERIC_MIN_VALUE 8192
+NUMERIC_MAX_VALUE 18446744073709551615
+NUMERIC_BLOCK_SIZE 4096
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME BINLOG_FORMAT
SESSION_VALUE MIXED
GLOBAL_VALUE MIXED
@@ -444,6 +474,62 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME COLUMN_COMPRESSION_THRESHOLD
+SESSION_VALUE 100
+GLOBAL_VALUE 100
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 100
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT Minimum column data length eligible for compression
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 4294967295
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME COLUMN_COMPRESSION_ZLIB_LEVEL
+SESSION_VALUE 6
+GLOBAL_VALUE 6
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 6
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT zlib compression level (1 gives best speed, 9 gives best compression)
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 9
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME COLUMN_COMPRESSION_ZLIB_STRATEGY
+SESSION_VALUE DEFAULT_STRATEGY
+GLOBAL_VALUE DEFAULT_STRATEGY
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE DEFAULT_STRATEGY
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE ENUM
+VARIABLE_COMMENT The strategy parameter is used to tune the compression algorithm. Use the value DEFAULT_STRATEGY for normal data, FILTERED for data produced by a filter (or predictor), HUFFMAN_ONLY to force Huffman encoding only (no string match), or RLE to limit match distances to one (run-length encoding). Filtered data consists mostly of small values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress them better. The effect of FILTERED is to force more Huffman coding and less string matching; it is somewhat intermediate between DEFAULT_STRATEGY and HUFFMAN_ONLY. RLE is designed to be almost as fast as HUFFMAN_ONLY, but give better compression for PNG image data. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. FIXED prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST DEFAULT_STRATEGY,FILTERED,HUFFMAN_ONLY,RLE,FIXED
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME COLUMN_COMPRESSION_ZLIB_WRAP
+SESSION_VALUE OFF
+GLOBAL_VALUE OFF
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE OFF
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Generate zlib header and trailer and compute adler32 check value. It can be used with storage engines that don't provide data integrity verification to detect data corruption.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME COMPLETION_TYPE
SESSION_VALUE NO_CHAIN
GLOBAL_VALUE NO_CHAIN
@@ -843,7 +929,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE OFF
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT This option causes CREATE TABLE to create all TIMESTAMP columns as NULL with DEFAULT NULL attribute, Without this option, TIMESTAMP columns are NOT NULL and have implicit DEFAULT clauses. The old behavior is deprecated.
+VARIABLE_COMMENT This option causes CREATE TABLE to create all TIMESTAMP columns as NULL with DEFAULT NULL attribute, Without this option, TIMESTAMP columns are NOT NULL and have implicit DEFAULT clauses.
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
@@ -1116,6 +1202,20 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME GTID_POS_AUTO_ENGINES
+SESSION_VALUE NULL
+GLOBAL_VALUE
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE VARCHAR
+VARIABLE_COMMENT List of engines for which to automatically create a mysql.gtid_slave_pos_ENGINE table, if a transaction using that engine is replicated. This can be used to avoid introducing cross-engine transactions, if engines are used different from that used by table mysql.gtid_slave_pos
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME GTID_SEQ_NO
SESSION_VALUE 0
GLOBAL_VALUE NULL
@@ -1326,6 +1426,48 @@ NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME IDLE_READONLY_TRANSACTION_TIMEOUT
+SESSION_VALUE 0
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT The number of seconds the server waits for read-only idle transaction
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 31536000
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME IDLE_TRANSACTION_TIMEOUT
+SESSION_VALUE 0
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT The number of seconds the server waits for idle transaction
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 31536000
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME IDLE_WRITE_TRANSACTION_TIMEOUT
+SESSION_VALUE 0
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT The number of seconds the server waits for write idle transaction
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 31536000
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME IGNORE_BUILTIN_INNODB
SESSION_VALUE NULL
GLOBAL_VALUE OFF
@@ -1726,7 +1868,7 @@ DEFAULT_VALUE 86400
VARIABLE_SCOPE SESSION
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Timeout in seconds to wait for a lock before returning an error.
-NUMERIC_MIN_VALUE 1
+NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
@@ -1816,6 +1958,20 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME LOG_DISABLED_STATEMENTS
+SESSION_VALUE sp
+GLOBAL_VALUE sp
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE sp
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE SET
+VARIABLE_COMMENT Don't log certain types of statements to general log
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST slave,sp
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_ERROR
SESSION_VALUE NULL
GLOBAL_VALUE PATH
@@ -1845,13 +2001,13 @@ ENUM_VALUE_LIST NONE,FILE,TABLE
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_QUERIES_NOT_USING_INDEXES
-SESSION_VALUE NULL
+SESSION_VALUE OFF
GLOBAL_VALUE OFF
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE OFF
-VARIABLE_SCOPE GLOBAL
+VARIABLE_SCOPE SESSION
VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Log queries that are executed without benefit of any index to the slow log if it is open
+VARIABLE_COMMENT Log queries that are executed without benefit of any index to the slow log if it is open. Same as log_slow_filter='not_using_index'
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
@@ -1873,31 +2029,45 @@ ENUM_VALUE_LIST OFF,ON
READ_ONLY YES
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME LOG_SLOW_ADMIN_STATEMENTS
-SESSION_VALUE NULL
+SESSION_VALUE ON
GLOBAL_VALUE ON
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE ON
-VARIABLE_SCOPE GLOBAL
+VARIABLE_SCOPE SESSION
VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Log slow OPTIMIZE, ANALYZE, ALTER and other administrative statements to the slow log if it is open.
+VARIABLE_COMMENT Log slow OPTIMIZE, ANALYZE, ALTER and other administrative statements to the slow log if it is open. Resets or sets the option 'admin' in log_slow_disabled_statements
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME LOG_SLOW_DISABLED_STATEMENTS
+SESSION_VALUE sp
+GLOBAL_VALUE sp
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE sp
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE SET
+VARIABLE_COMMENT Don't log certain types of statements to slow log
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST admin,call,slave,sp
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_SLOW_FILTER
-SESSION_VALUE admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
-GLOBAL_VALUE admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+SESSION_VALUE admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+GLOBAL_VALUE admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+DEFAULT_VALUE admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
VARIABLE_SCOPE SESSION
VARIABLE_TYPE SET
-VARIABLE_COMMENT Log only certain types of queries
+VARIABLE_COMMENT Log only certain types of queries to the slow log. If variable empty alll kind of queries are logged. All types are bound by slow_query_time, except 'not_using_index' which is always logged if enabled
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
+ENUM_VALUE_LIST admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,not_using_index,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_SLOW_RATE_LIMIT
@@ -1915,13 +2085,13 @@ ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_SLOW_SLAVE_STATEMENTS
-SESSION_VALUE NULL
+SESSION_VALUE ON
GLOBAL_VALUE ON
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE ON
-VARIABLE_SCOPE GLOBAL
+VARIABLE_SCOPE SESSION
VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Log slow statements executed by slave thread to the slow log if it is open.
+VARIABLE_COMMENT Log slow statements executed by slave thread to the slow log if it is open. Resets or sets the option 'slave' in log_slow_disabled_statements
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
@@ -2713,17 +2883,17 @@ ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_SWITCH
-SESSION_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
-GLOBAL_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+SESSION_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
+GLOBAL_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on
+DEFAULT_VALUE index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on
VARIABLE_SCOPE SESSION
VARIABLE_TYPE FLAGSET
VARIABLE_COMMENT Fine-tune the optimizer behavior
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST index_merge,index_merge_union,index_merge_sort_union,index_merge_intersection,index_merge_sort_intersection,engine_condition_pushdown,index_condition_pushdown,derived_merge,derived_with_keys,firstmatch,loosescan,materialization,in_to_exists,semijoin,partial_match_rowid_merge,partial_match_table_scan,subquery_cache,mrr,mrr_cost_based,mrr_sort_keys,outer_join_with_cache,semijoin_with_cache,join_cache_incremental,join_cache_hashed,join_cache_bka,optimize_join_buffer_size,table_elimination,extended_keys,exists_to_in,orderby_uses_equalities,condition_pushdown_for_derived,split_grouping_derived,default
+ENUM_VALUE_LIST index_merge,index_merge_union,index_merge_sort_union,index_merge_intersection,index_merge_sort_intersection,engine_condition_pushdown,index_condition_pushdown,derived_merge,derived_with_keys,firstmatch,loosescan,materialization,in_to_exists,semijoin,partial_match_rowid_merge,partial_match_table_scan,subquery_cache,mrr,mrr_cost_based,mrr_sort_keys,outer_join_with_cache,semijoin_with_cache,join_cache_incremental,join_cache_hashed,join_cache_bka,optimize_join_buffer_size,table_elimination,extended_keys,exists_to_in,orderby_uses_equalities,condition_pushdown_for_derived,split_materialized,default
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_USE_CONDITION_SELECTIVITY
@@ -3216,20 +3386,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME PLUGIN_MATURITY
-SESSION_VALUE NULL
-GLOBAL_VALUE unknown
-GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE unknown
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE ENUM
-VARIABLE_COMMENT The lowest desirable plugin maturity. Plugins less mature than that will not be installed or loaded
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST unknown,experimental,alpha,beta,gamma,stable
-READ_ONLY YES
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PORT
SESSION_VALUE NULL
GLOBAL_VALUE MASTER_MYPORT
@@ -3314,6 +3470,20 @@ NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME PROXY_PROTOCOL_NETWORKS
+SESSION_VALUE NULL
+GLOBAL_VALUE
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE VARCHAR
+VARIABLE_COMMENT Enable proxy protocol for these source networks. The syntax is a comma separated list of IPv4 and IPv6 networks. If the network doesn't contain mask, it is considered to be a single host. "*" represents all networks and must the only directive on the line. String "localhost" represents non-TCP local connections (Unix domain socket, Windows named pipe or shared memory).
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST NULL
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PROXY_USER
SESSION_VALUE
GLOBAL_VALUE NULL
@@ -3818,6 +3988,132 @@ NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME RPL_SEMI_SYNC_MASTER_ENABLED
+SESSION_VALUE NULL
+GLOBAL_VALUE OFF
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE OFF
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Enable semi-synchronous replication master (disabled by default).
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME RPL_SEMI_SYNC_MASTER_TIMEOUT
+SESSION_VALUE NULL
+GLOBAL_VALUE 10000
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 10000
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_COMMENT The timeout value (in ms) for semi-synchronous replication in the master
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 18446744073709551615
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME RPL_SEMI_SYNC_MASTER_TRACE_LEVEL
+SESSION_VALUE NULL
+GLOBAL_VALUE 32
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 32
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_COMMENT The tracing level for semi-sync replication.
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 18446744073709551615
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME RPL_SEMI_SYNC_MASTER_WAIT_NO_SLAVE
+SESSION_VALUE NULL
+GLOBAL_VALUE ON
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE ON
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Wait until timeout when no semi-synchronous replication slave available (enabled by default).
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME RPL_SEMI_SYNC_MASTER_WAIT_POINT
+SESSION_VALUE NULL
+GLOBAL_VALUE AFTER_COMMIT
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE AFTER_COMMIT
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE ENUM
+VARIABLE_COMMENT Should transaction wait for semi-sync ack after having synced binlog, or after having committed in storage engine.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST AFTER_SYNC,AFTER_COMMIT
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME RPL_SEMI_SYNC_SLAVE_DELAY_MASTER
+SESSION_VALUE NULL
+GLOBAL_VALUE OFF
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE OFF
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Only write master info file when ack is needed.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME RPL_SEMI_SYNC_SLAVE_ENABLED
+SESSION_VALUE NULL
+GLOBAL_VALUE OFF
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE OFF
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Enable semi-synchronous replication slave (disabled by default).
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME RPL_SEMI_SYNC_SLAVE_KILL_CONN_TIMEOUT
+SESSION_VALUE NULL
+GLOBAL_VALUE 5
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 5
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE INT UNSIGNED
+VARIABLE_COMMENT Timeout for the mysql connection used to kill the slave io_thread's connection on master. This timeout comes into play when stop slave is executed.
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 4294967295
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
+VARIABLE_NAME RPL_SEMI_SYNC_SLAVE_TRACE_LEVEL
+SESSION_VALUE NULL
+GLOBAL_VALUE 32
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 32
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_COMMENT The tracing level for semi-sync replication.
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 18446744073709551615
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SECURE_AUTH
SESSION_VALUE NULL
GLOBAL_VALUE ON
@@ -3889,13 +4185,13 @@ ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME SESSION_TRACK_SYSTEM_VARIABLES
-SESSION_VALUE
-GLOBAL_VALUE
+SESSION_VALUE autocommit,character_set_client,character_set_connection,character_set_results,time_zone
+GLOBAL_VALUE autocommit,character_set_client,character_set_connection,character_set_results,time_zone
GLOBAL_VALUE_ORIGIN COMPILE-TIME
-DEFAULT_VALUE
+DEFAULT_VALUE autocommit,character_set_client,character_set_connection,character_set_results,time_zone
VARIABLE_SCOPE SESSION
VARIABLE_TYPE VARCHAR
-VARIABLE_COMMENT Track changes in registered system variables. For compatibility with MySQL defaults this variable should be set to "autocommit, character_set_client, character_set_connection, character_set_results, time_zone"
+VARIABLE_COMMENT Track changes in registered system variables.
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
@@ -4203,13 +4499,41 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE 10
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Number of times the slave SQL thread will retry a transaction in case it failed with a deadlock or elapsed lock wait timeout, before giving up and stopping
+VARIABLE_COMMENT Number of times the slave SQL thread will retry a transaction in case it failed with a deadlock, elapsed lock wait timeout or listed in slave_transaction_retry_errors, before giving up and stopping
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME SLAVE_TRANSACTION_RETRY_ERRORS
+SESSION_VALUE NULL
+GLOBAL_VALUE 1213,1205
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE VARCHAR
+VARIABLE_COMMENT Tells the slave thread to retry transaction for replication when a query event returns an error from the provided list. Deadlock and elapsed lock wait timeout errors are automatically added to this list
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST NULL
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME SLAVE_TRANSACTION_RETRY_INTERVAL
+SESSION_VALUE NULL
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_COMMENT Interval of the slave SQL thread will retry a transaction in case it failed with a deadlock or elapsed lock wait timeout or listed in slave_transaction_retry_errors
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 3600
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SLAVE_TYPE_CONVERSIONS
SESSION_VALUE NULL
GLOBAL_VALUE
@@ -4375,7 +4699,7 @@ VARIABLE_COMMENT Sets the sql mode
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH,EMPTY_STRING_IS_NULL
+ENUM_VALUE_LIST REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH,EMPTY_STRING_IS_NULL,SIMULTANEOUS_ASSIGNMENT
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SQL_NOTES
@@ -4686,6 +5010,48 @@ NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME SYSTEM_VERSIONING_ALTER_HISTORY
+SESSION_VALUE ERROR
+GLOBAL_VALUE ERROR
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE ERROR
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE ENUM
+VARIABLE_COMMENT Versioning ALTER TABLE mode. ERROR: Fail ALTER with error; KEEP: Keep historical system rows and subject them to ALTER;
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST ERROR,KEEP
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME SYSTEM_VERSIONING_ASOF
+SESSION_VALUE DEFAULT
+GLOBAL_VALUE DEFAULT
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE DEFAULT
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE VARCHAR
+VARIABLE_COMMENT Default value for the FOR SYSTEM_TIME AS OF clause
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST DEFAULT
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME SYSTEM_VERSIONING_INNODB_ALGORITHM_SIMPLE
+SESSION_VALUE ON
+GLOBAL_VALUE ON
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE ON
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Use simple algorithm of timestamp handling in InnoDB instead of TRX_SEES
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME TABLE_DEFINITION_CACHE
SESSION_VALUE NULL
GLOBAL_VALUE 400
@@ -4728,6 +5094,48 @@ NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME TCP_KEEPALIVE_INTERVAL
+SESSION_VALUE NULL
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE INT
+VARIABLE_COMMENT The interval, in seconds, between when successive keep-alive packets are sent if no acknowledgement is received.If set to 0, system dependent default is used.
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 2147483
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME TCP_KEEPALIVE_PROBES
+SESSION_VALUE NULL
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE INT
+VARIABLE_COMMENT The number of unacknowledged probes to send before considering the connection dead and notifying the application layer.If set to 0, system dependent default is used.
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 2147483
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME TCP_KEEPALIVE_TIME
+SESSION_VALUE NULL
+GLOBAL_VALUE 0
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE 0
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE INT
+VARIABLE_COMMENT Timeout, in milliseconds, with no activity until the first TCP keep-alive packet is sent.If set to 0, system dependent default is used.
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 2147483
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME THREAD_CACHE_SIZE
SESSION_VALUE NULL
GLOBAL_VALUE 151
diff --git a/mysql-test/suite/sys_vars/r/tcp_keepalive_time.result b/mysql-test/suite/sys_vars/r/tcp_keepalive_time.result
new file mode 100644
index 00000000000..410fceb7294
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/tcp_keepalive_time.result
@@ -0,0 +1,9 @@
+set global tcp_keepalive_time = 1;
+set global tcp_keepalive_interval =1;
+set global tcp_keepalive_probes=1;
+connect con1,"127.0.0.1",root,,test,$MASTER_MYPORT,;
+disconnect con1;
+connection default;
+set global tcp_keepalive_time= default;
+set global tcp_keepalive_interval= default;
+set global tcp_keepalive_probes=default;
diff --git a/mysql-test/suite/sys_vars/t/all_vars.test b/mysql-test/suite/sys_vars/t/all_vars.test
index 7b9f69bd7d1..c0127e1ef12 100644
--- a/mysql-test/suite/sys_vars/t/all_vars.test
+++ b/mysql-test/suite/sys_vars/t/all_vars.test
@@ -12,7 +12,7 @@ eval INSTALL PLUGIN blackhole SONAME "$HA_BLACKHOLE_SO";
eval INSTALL PLUGIN federated SONAME "$HA_FEDERATEDX_SO";
eval INSTALL PLUGIN oqgraph SONAME "$HA_OQGRAPH_SO";
eval INSTALL PLUGIN sphinx SONAME "$HA_SPHINX_SO";
-eval INSTALL PLUGIN innodb SONAME "$HA_XTRADB_SO";
+eval INSTALL PLUGIN innodb SONAME "$HA_INNODB_SO";
eval INSTALL PLUGIN rpl_semi_sync_master SONAME "$SEMISYNC_MASTER_SO";
eval INSTALL PLUGIN rpl_semi_sync_slave SONAME "$SEMISYNC_SLAVE_SO";
--enable_abort_on_error
diff --git a/mysql-test/suite/sys_vars/t/bind_address_basic.test b/mysql-test/suite/sys_vars/t/bind_address_basic.test
new file mode 100644
index 00000000000..f7c567b36b8
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/bind_address_basic.test
@@ -0,0 +1,95 @@
+
+
+################## mysql-test\t\bind_address_basic.test ############################
+# #
+# Variable Name: bind_address #
+# Scope: Global #
+# Access Type: Static #
+# Data Type: filename #
+###############################################################################
+
+--source include/not_embedded.inc
+
+--echo '#---------------------BS_STVARS_001_01----------------------#'
+####################################################################
+# Displaying default value #
+####################################################################
+SELECT COUNT(@@GLOBAL.bind_address);
+--echo 1 Expected
+
+
+--echo '#---------------------BS_STVARS_001_02----------------------#'
+####################################################################
+# Check if Value can set #
+####################################################################
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@GLOBAL.bind_address=1;
+--echo Expected error 'Read only variable'
+
+SELECT COUNT(@@GLOBAL.bind_address);
+--echo 1 Expected
+
+
+
+
+--echo '#---------------------BS_STVARS_001_03----------------------#'
+#################################################################
+# Check if the value in GLOBAL Table matches value in variable #
+#################################################################
+
+--disable_warnings
+SELECT VARIABLE_VALUE = ''
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='bind_address';
+--enable_warnings
+--echo 0 Expected
+
+SELECT COUNT(@@GLOBAL.bind_address);
+--echo 1 Expected
+
+--disable_warnings
+SELECT COUNT(VARIABLE_VALUE)
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='bind_address';
+--enable_warnings
+--echo 1 Expected
+
+
+
+--echo '#---------------------BS_STVARS_001_04----------------------#'
+################################################################################
+# Check if accessing variable with and without GLOBAL point to same variable #
+################################################################################
+SELECT @@bind_address is NULL AND @@GLOBAL.bind_address is NULL;
+--echo 0 Expected
+
+SELECT @@bind_address is NOT NULL AND @@GLOBAL.bind_address is NOT NULL;
+--echo 1 Expected
+
+
+
+--echo '#---------------------BS_STVARS_001_05----------------------#'
+################################################################################
+# Check if bind_address can be accessed with and without @@ sign #
+################################################################################
+
+SELECT COUNT(@@bind_address);
+--echo 1 Expected
+
+--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SELECT COUNT(@@local.bind_address);
+--echo Expected error 'Variable is a GLOBAL variable'
+
+--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SELECT COUNT(@@SESSION.bind_address);
+--echo Expected error 'Variable is a GLOBAL variable'
+
+SELECT COUNT(@@GLOBAL.bind_address);
+--echo 1 Expected
+
+--Error ER_BAD_FIELD_ERROR
+SELECT bind_address = @@SESSION.bind_address;
+--echo Expected error 'Readonly variable'
+
+
diff --git a/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_basic.test b/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_adaptive_hash_index_partitions_basic.test b/mysql-test/suite/sys_vars/t/innodb_adaptive_hash_index_partitions_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_adaptive_hash_index_partitions_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_blocking_buffer_pool_restore_basic.test b/mysql-test/suite/sys_vars/t/innodb_blocking_buffer_pool_restore_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_blocking_buffer_pool_restore_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_populate_basic.test b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_populate_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_populate_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_restore_at_startup_basic.test b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_restore_at_startup_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_restore_at_startup_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_shm_checksum_basic.test b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_shm_checksum_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_shm_checksum_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_shm_key_basic.test b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_shm_key_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_shm_key_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_checkpoint_age_target_basic.test b/mysql-test/suite/sys_vars/t/innodb_checkpoint_age_target_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_checkpoint_age_target_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_corrupt_table_action_basic.test b/mysql-test/suite/sys_vars/t/innodb_corrupt_table_action_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_corrupt_table_action_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_dict_size_limit_basic.test b/mysql-test/suite/sys_vars/t/innodb_dict_size_limit_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_dict_size_limit_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_doublewrite_file_basic.test b/mysql-test/suite/sys_vars/t/innodb_doublewrite_file_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_doublewrite_file_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_fake_changes_basic.test b/mysql-test/suite/sys_vars/t/innodb_fake_changes_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_fake_changes_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_fast_checksum_basic.test b/mysql-test/suite/sys_vars/t/innodb_fast_checksum_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_fast_checksum_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_file_format_basic.test b/mysql-test/suite/sys_vars/t/innodb_file_format_basic.test
deleted file mode 100644
index 739260c07e5..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_file_format_basic.test
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-# 2010-01-25 - Added
-#
-
---source include/have_innodb.inc
-
-SET @start_global_value = @@global.innodb_file_format;
-SELECT @start_global_value;
-
-#
-# exists as global only
-#
---echo Valid values are 'Antelope' and 'Barracuda'
-select @@global.innodb_file_format in ('Antelope', 'Barracuda');
-select @@global.innodb_file_format;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-select @@session.innodb_file_format;
-show global variables like 'innodb_file_format';
-show session variables like 'innodb_file_format';
---disable_warnings
-select * from information_schema.global_variables where variable_name='innodb_file_format';
-select * from information_schema.session_variables where variable_name='innodb_file_format';
---enable_warnings
-
-#
-# show that it's writable
-#
-set global innodb_file_format='Antelope';
-select @@global.innodb_file_format;
---disable_warnings
-select * from information_schema.global_variables where variable_name='innodb_file_format';
-select * from information_schema.session_variables where variable_name='innodb_file_format';
---enable_warnings
-set @@global.innodb_file_format='Barracuda';
-select @@global.innodb_file_format;
---disable_warnings
-select * from information_schema.global_variables where variable_name='innodb_file_format';
-select * from information_schema.session_variables where variable_name='innodb_file_format';
---enable_warnings
---error ER_GLOBAL_VARIABLE
-set session innodb_file_format='Salmon';
---error ER_GLOBAL_VARIABLE
-set @@session.innodb_file_format='Salmon';
-
-#
-# incorrect types
-#
---error ER_WRONG_TYPE_FOR_VAR
-set global innodb_file_format=1.1;
---error ER_WRONG_TYPE_FOR_VAR
-set global innodb_file_format=1e1;
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format='Salmon';
-
-#
-# Cleanup
-#
-
-SET @@global.innodb_file_format = @start_global_value;
-SELECT @@global.innodb_file_format;
diff --git a/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test b/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test
deleted file mode 100644
index 56afba48e29..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test
+++ /dev/null
@@ -1,101 +0,0 @@
-#
-# 2011-08-02 - Added
-#
-
---source include/not_embedded.inc
---source include/have_innodb.inc
-
-SET @start_global_value = @@global.innodb_file_format_check;
-SELECT @start_global_value;
-
-#
-# exists as global only
-#
---echo Valid values are 'ON' and 'OFF'
-SELECT @@global.innodb_file_format_check in (0, 1);
-SELECT @@global.innodb_file_format_check;
-
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@session.innodb_file_format_check;
-SHOW global variables LIKE 'innodb_file_format_check';
-SHOW session variables LIKE 'innodb_file_format_check';
---disable_warnings
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_file_format_check';
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_file_format_check';
---enable_warnings
-
-#
-# show that it's read only
-#
-
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @@global.innodb_file_format_check='Off';
---echo Expected error 'Read only variable'
-
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @@global.innodb_file_format_check=1;
---echo Expected error 'Read only variable'
-
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @@global.innodb_file_format_check=0;
---echo Expected error 'Read only variable'
-
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @@global.innodb_file_format_check='On';
---echo Expected error 'Read only variable'
-
---error ER_GLOBAL_VARIABLE
-SET session innodb_large_prefix='OFF';
---error ER_GLOBAL_VARIABLE
-SET @@session.innodb_stats_on_metadata='ON';
-
-#
-# Check if the value in GLOBAL Table matches value in variable
-#
-
---disable_warnings
-SELECT IF(@@GLOBAL.innodb_file_format_check, "ON", "OFF") = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_file_format_check';
---enable_warnings
---echo 1 Expected
-
-SELECT COUNT(@@GLOBAL.innodb_file_format_check);
---echo 1 Expected
-
---disable_warnings
-SELECT COUNT(VARIABLE_VALUE)
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_file_format_check';
---enable_warnings
---echo 1 Expected
-
-#
-# Check if accessing variable with and without GLOBAL point to same variable
-#
-SELECT @@innodb_file_format_check = @@GLOBAL.innodb_file_format_check;
---echo 1 Expected
-
-#
-# Check if innodb_doublewrite can be accessed with and without @@ sign
-#
-
-SELECT COUNT(@@innodb_file_format_check);
---echo 1 Expected
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT COUNT(@@local.innodb_file_format_check);
---echo Expected error 'Variable is a GLOBAL variable'
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT COUNT(@@SESSION.innodb_file_format_check);
---echo Expected error 'Variable is a GLOBAL variable'
-
-SELECT COUNT(@@GLOBAL.innodb_file_format_check);
---echo 1 Expected
-
---Error ER_BAD_FIELD_ERROR
-SELECT innodb_file_format_check = @@SESSION.innodb_file_format_check;
---echo Expected error 'Readonly variable'
diff --git a/mysql-test/suite/sys_vars/t/innodb_file_format_max_basic.test b/mysql-test/suite/sys_vars/t/innodb_file_format_max_basic.test
deleted file mode 100644
index 494f3817cb8..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_file_format_max_basic.test
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# 2011-08-02 - Added
-#
---source include/not_embedded.inc
---source include/have_innodb.inc
-
-SET @start_global_value = @@global.innodb_file_format_max;
-SELECT @start_global_value;
-
-#
-# exists as global only
-#
---echo Valid values are 'Antelope' and 'Barracuda'
-SELECT @@global.innodb_file_format_max in ('Antelope', 'Barracuda');
-SELECT @@global.innodb_file_format_max;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@session.innodb_file_format_max;
-SHOW global variables LIKE 'innodb_file_format_max';
-SHOW session variables LIKE 'innodb_file_format_max';
---disable_warnings
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_file_format_max';
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_file_format_max';
---enable_warnings
-
-#
-# show that it's writable
-#
-SET global innodb_file_format_max='Antelope';
-SELECT @@global.innodb_file_format_max;
---disable_warnings
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_file_format_max';
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_file_format_max';
---enable_warnings
-SET @@global.innodb_file_format_max='Barracuda';
-SELECT @@global.innodb_file_format_max;
---disable_warnings
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_file_format_max';
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_file_format_max';
---enable_warnings
---error ER_GLOBAL_VARIABLE
-SET session innodb_file_format_max='Salmon';
---error ER_GLOBAL_VARIABLE
-SET @@session.innodb_file_format_max='Salmon';
-
-#
-# incorrect types
-#
---error ER_WRONG_TYPE_FOR_VAR
-SET global innodb_file_format_max=1.1;
---error ER_WRONG_TYPE_FOR_VAR
-SET global innodb_file_format_max=1e1;
---error ER_WRONG_VALUE_FOR_VAR
-SET global innodb_file_format_max='Salmon';
-
-#
-# Cleanup
-#
-
-SET @@global.innodb_file_format_max = @start_global_value;
-SELECT @@global.innodb_file_format_max;
diff --git a/mysql-test/suite/sys_vars/t/innodb_flush_checkpoint_debug_basic.test b/mysql-test/suite/sys_vars/t/innodb_flush_checkpoint_debug_basic.test
deleted file mode 100644
index 093a765e0e5..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_flush_checkpoint_debug_basic.test
+++ /dev/null
@@ -1,12 +0,0 @@
---source include/have_debug.inc
---source include/have_xtradb.inc
-
-SELECT @@global.innodb_flush_checkpoint_debug;
-SET @@global.innodb_flush_checkpoint_debug=1;
-SELECT @@global.innodb_flush_checkpoint_debug;
-SET @@global.innodb_flush_checkpoint_debug=0;
-SELECT @@global.innodb_flush_checkpoint_debug;
---error ER_GLOBAL_VARIABLE
-SET @@session.innodb_flush_checkpoint_debug=1;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@session.innodb_flush_checkpoint_debug;
diff --git a/mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_basic.test b/mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_ibuf_accel_rate_basic.test b/mysql-test/suite/sys_vars/t/innodb_ibuf_accel_rate_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_ibuf_accel_rate_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_ibuf_active_contract_basic.test b/mysql-test/suite/sys_vars/t/innodb_ibuf_active_contract_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_ibuf_active_contract_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_ibuf_max_size_basic.test b/mysql-test/suite/sys_vars/t/innodb_ibuf_max_size_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_ibuf_max_size_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_import_table_from_xtrabackup_basic.test b/mysql-test/suite/sys_vars/t/innodb_import_table_from_xtrabackup_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_import_table_from_xtrabackup_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_instrument_semaphores_basic.test b/mysql-test/suite/sys_vars/t/innodb_instrument_semaphores_basic.test
deleted file mode 100644
index 9b302be79b5..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_instrument_semaphores_basic.test
+++ /dev/null
@@ -1,42 +0,0 @@
---source include/have_innodb.inc
-
---echo #
---echo # innodb_instrument_semaphores
---echo #
-
---echo # save the initial value
-SET @innodb_instrument_semaphores_global_saved = @@global.innodb_instrument_semaphores;
-
---echo # default
-SELECT @@global.innodb_instrument_semaphores;
-
---echo
---echo # scope
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@session.innodb_instrument_semaphores;
-SET @@global.innodb_instrument_semaphores=OFF;
-SELECT @@global.innodb_instrument_semaphores;
-SET @@global.innodb_instrument_semaphores=ON;
-SELECT @@global.innodb_instrument_semaphores;
-
---echo
---echo # valid values
-SET @@global.innodb_instrument_semaphores='OFF';
-SELECT @@global.innodb_instrument_semaphores;
-SET @@global.innodb_instrument_semaphores=ON;
-SELECT @@global.innodb_instrument_semaphores;
-SET @@global.innodb_instrument_semaphores=default;
-SELECT @@global.innodb_instrument_semaphores;
-
---echo
---echo # invalid values
---error ER_WRONG_VALUE_FOR_VAR
-SET @@global.innodb_instrument_semaphores=NULL;
---error ER_WRONG_VALUE_FOR_VAR
-SET @@global.innodb_instrument_semaphores='junk';
-
---echo
---echo # restore the initial value
-SET @@global.innodb_instrument_semaphores = @innodb_instrument_semaphores_global_saved;
-
---echo # End of test
diff --git a/mysql-test/suite/sys_vars/t/innodb_kill_idle_transaction_basic.test b/mysql-test/suite/sys_vars/t/innodb_kill_idle_transaction_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_kill_idle_transaction_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_large_prefix_basic.test b/mysql-test/suite/sys_vars/t/innodb_large_prefix_basic.test
deleted file mode 100644
index 877fe17b003..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_large_prefix_basic.test
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-# 2010-01-25 - Added
-#
-
---source include/have_innodb.inc
-
-SET @start_global_value = @@global.innodb_large_prefix;
-SELECT @start_global_value;
-
-#
-# exists as global only
-#
---echo Valid values are 'ON' and 'OFF'
-select @@global.innodb_large_prefix in (0, 1);
-select @@global.innodb_large_prefix;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-select @@session.innodb_large_prefix;
-show global variables like 'innodb_large_prefix';
-show session variables like 'innodb_large_prefix';
---disable_warnings
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
---enable_warnings
-
-#
-# show that it's writable
-#
-set global innodb_large_prefix='OFF';
-select @@global.innodb_large_prefix;
---disable_warnings
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
---enable_warnings
-set @@global.innodb_large_prefix=1;
-select @@global.innodb_large_prefix;
---disable_warnings
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
---enable_warnings
-set global innodb_large_prefix=0;
-select @@global.innodb_large_prefix;
---disable_warnings
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
---enable_warnings
-set @@global.innodb_large_prefix='ON';
-select @@global.innodb_large_prefix;
---disable_warnings
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
---enable_warnings
---error ER_GLOBAL_VARIABLE
-set session innodb_large_prefix='OFF';
---error ER_GLOBAL_VARIABLE
-set @@session.innodb_large_prefix='ON';
-
-#
-# incorrect types
-#
---error ER_WRONG_TYPE_FOR_VAR
-set global innodb_large_prefix=1.1;
---error ER_WRONG_TYPE_FOR_VAR
-set global innodb_large_prefix=1e1;
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_large_prefix=2;
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_large_prefix=-3;
-select @@global.innodb_large_prefix;
---disable_warnings
-select * from information_schema.global_variables where variable_name='innodb_large_prefix';
-select * from information_schema.session_variables where variable_name='innodb_large_prefix';
---enable_warnings
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_large_prefix='AUTO';
-
-#
-# Cleanup
-#
-
-SET @@global.innodb_large_prefix = @start_global_value;
-SELECT @@global.innodb_large_prefix;
diff --git a/mysql-test/suite/sys_vars/t/innodb_lazy_drop_table_basic.test b/mysql-test/suite/sys_vars/t/innodb_lazy_drop_table_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_lazy_drop_table_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_locking_fake_changes_basic.test b/mysql-test/suite/sys_vars/t/innodb_locking_fake_changes_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_locking_fake_changes_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_log_block_size_basic.test b/mysql-test/suite/sys_vars/t/innodb_log_block_size_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_log_block_size_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_max_bitmap_file_size_basic.test b/mysql-test/suite/sys_vars/t/innodb_max_bitmap_file_size_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_max_bitmap_file_size_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_max_changed_pages_basic.test b/mysql-test/suite/sys_vars/t/innodb_max_changed_pages_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_max_changed_pages_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_mtflush_threads_basic.test b/mysql-test/suite/sys_vars/t/innodb_mtflush_threads_basic.test
deleted file mode 100644
index c8412f969eb..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_mtflush_threads_basic.test
+++ /dev/null
@@ -1,21 +0,0 @@
---source include/have_innodb.inc
-# bool readonly
-
-#
-# show values;
-#
-select @@global.innodb_mtflush_threads;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-select @@session.innodb_mtflush_threads;
-show global variables like 'innodb_mtflush_threads';
-show session variables like 'innodb_mtflush_threads';
-select * from information_schema.global_variables where variable_name='innodb_mtflush_threads';
-select * from information_schema.session_variables where variable_name='innodb_mtflush_threads';
-
-#
-# show that it's read-only
-#
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set global innodb_mtflush_threads=1;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set session innodb_mtflush_threads=1;
diff --git a/mysql-test/suite/sys_vars/t/innodb_page_cleaners_basic.test b/mysql-test/suite/sys_vars/t/innodb_page_cleaners_basic.test
index 716492ba1b3..367116a7e36 100644
--- a/mysql-test/suite/sys_vars/t/innodb_page_cleaners_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_page_cleaners_basic.test
@@ -1,6 +1,6 @@
# Variable name: innodb_page_cleaners
# Scope: Global
-# Access type: Static
+# Access type: Dynamic
# Data type: numeric
--source include/have_innodb.inc
@@ -8,12 +8,38 @@
SELECT COUNT(@@GLOBAL.innodb_page_cleaners);
--echo 1 Expected
-SELECT COUNT(@@innodb_page_cleaners);
+SELECT @@innodb_page_cleaners;
--echo 1 Expected
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@GLOBAL.innodb_page_cleaners=2;
+--echo Expected to pass
+
+SELECT @@innodb_page_cleaners;
+--echo 2 Expected
+
SET @@GLOBAL.innodb_page_cleaners=1;
---echo Expected error 'Read-only variable'
+--echo Expected to pass
+
+SELECT @@innodb_page_cleaners;
+--echo 1 Expected
+
+SET @@GLOBAL.innodb_page_cleaners=6;
+--echo Expected to pass
+
+SELECT @@innodb_page_cleaners;
+--echo 6 Expected
+
+SET @@GLOBAL.innodb_page_cleaners=4;
+--echo Expected to pass
+
+SELECT @@innodb_page_cleaners;
+--echo 4 Expected
+
+SET @@GLOBAL.innodb_page_cleaners=0;
+--echo Warning expected
+
+SELECT @@innodb_page_cleaners;
+--echo 1 Expected
--Error ER_BAD_FIELD_ERROR
SELECT innodb_page_cleaners = @@SESSION.innodb_page_cleaners;
diff --git a/mysql-test/suite/sys_vars/t/innodb_print_lock_wait_timeout_info_basic.test b/mysql-test/suite/sys_vars/t/innodb_print_lock_wait_timeout_info_basic.test
deleted file mode 100644
index 23d8ba667ce..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_print_lock_wait_timeout_info_basic.test
+++ /dev/null
@@ -1,89 +0,0 @@
---source include/have_xtradb.inc
-
-SET @start_global_value = @@global.innodb_print_lock_wait_timeout_info;
-SELECT @start_global_value;
-
-#
-# exists as global only
-#
---echo Valid values are 'ON' and 'OFF'
-SELECT @@global.innodb_print_lock_wait_timeout_info in (0, 1);
-SELECT @@global.innodb_print_lock_wait_timeout_info;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@session.innodb_print_lock_wait_timeout_info;
-SHOW global variables LIKE 'innodb_print_lock_wait_timeout_info';
-SHOW session variables LIKE 'innodb_print_lock_wait_timeout_info';
---disable_warnings
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
---enable_warnings
-
-#
-# SHOW that it's writable
-#
-SET global innodb_print_lock_wait_timeout_info='OFF';
-SELECT @@global.innodb_print_lock_wait_timeout_info;
---disable_warnings
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
---enable_warnings
-SET @@global.innodb_print_lock_wait_timeout_info=1;
-SELECT @@global.innodb_print_lock_wait_timeout_info;
---disable_warnings
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
---enable_warnings
-SET global innodb_print_lock_wait_timeout_info=0;
-SELECT @@global.innodb_print_lock_wait_timeout_info;
---disable_warnings
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
---enable_warnings
-SET @@global.innodb_print_lock_wait_timeout_info='ON';
-SELECT @@global.innodb_print_lock_wait_timeout_info;
---disable_warnings
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
---enable_warnings
---error ER_GLOBAL_VARIABLE
-SET session innodb_print_lock_wait_timeout_info='OFF';
---error ER_GLOBAL_VARIABLE
-SET @@session.innodb_print_lock_wait_timeout_info='ON';
-
-#
-# incorrect types
-#
---error ER_WRONG_TYPE_FOR_VAR
-SET global innodb_print_lock_wait_timeout_info=1.1;
---error ER_WRONG_TYPE_FOR_VAR
-SET global innodb_print_lock_wait_timeout_info=1e1;
---error ER_WRONG_VALUE_FOR_VAR
-SET global innodb_print_lock_wait_timeout_info=2;
---error ER_WRONG_VALUE_FOR_VAR
-SET global innodb_print_lock_wait_timeout_info=-3;
-SELECT @@global.innodb_print_lock_wait_timeout_info;
---disable_warnings
-SELECT * FROM information_schema.global_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
-SELECT * FROM information_schema.session_variables
-WHERE variable_name='innodb_print_lock_wait_timeout_info';
---enable_warnings
---error ER_WRONG_VALUE_FOR_VAR
-SET global innodb_print_lock_wait_timeout_info='AUTO';
-
-#
-# Cleanup
-#
-
-SET @@global.innodb_print_lock_wait_timeout_info = @start_global_value;
-SELECT @@global.innodb_print_lock_wait_timeout_info;
diff --git a/mysql-test/suite/sys_vars/t/innodb_read_ahead_basic.test b/mysql-test/suite/sys_vars/t/innodb_read_ahead_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_read_ahead_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_recovery_stats_basic.test b/mysql-test/suite/sys_vars/t/innodb_recovery_stats_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_recovery_stats_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_recovery_update_relay_log_basic.test b/mysql-test/suite/sys_vars/t/innodb_recovery_update_relay_log_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_recovery_update_relay_log_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_sched_priority_cleaner_basic.test b/mysql-test/suite/sys_vars/t/innodb_sched_priority_cleaner_basic.test
deleted file mode 100644
index 2c2037f167f..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_sched_priority_cleaner_basic.test
+++ /dev/null
@@ -1,51 +0,0 @@
---source include/have_xtradb.inc
---source include/linux.inc
---source include/not_embedded.inc
-
-# A dynamic, global variable
-
-# Test in read-only mode
---let $restart_parameters= --innodb-read-only
---source include/restart_mysqld.inc
---let $restart_parameters=
-
-# This has no actual effect in innodb_read_only mode
-SET GLOBAL innodb_sched_priority_cleaner=39;
-
---source include/restart_mysqld.inc
-
-# Default value
-SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-
-# Global only
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@SESSION.innodb_sched_priority_cleaner;
-
-# Correct values
-# The high priority values may need permissions, thus do not test them
-# SET GLOBAL innodb_sched_priority_cleaner=39;
-# SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-#SET GLOBAL innodb_sched_priority_cleaner=34;
-# SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-SET GLOBAL innodb_sched_priority_cleaner=19;
-SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-SET GLOBAL innodb_sched_priority_cleaner=5;
-SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-SET GLOBAL innodb_sched_priority_cleaner=0;
-SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-
-# Incorrect values
-SET GLOBAL innodb_sched_priority_cleaner=-1;
-SELECT @@GLOBAL.innodb_sched_priority_cleaner;
-#SET GLOBAL innodb_sched_priority_cleaner=40;
-#SELECT @@GLOBAL.innodb_sched_priority_cleaner;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_cleaner=1.1;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_cleaner=1e1;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_cleaner='foo';
-
-# If we are lacking permissions, then we cannot restore the startup value
-# at the end.
---source include/restart_mysqld.inc
diff --git a/mysql-test/suite/sys_vars/t/innodb_sched_priority_io_basic.test b/mysql-test/suite/sys_vars/t/innodb_sched_priority_io_basic.test
deleted file mode 100644
index f77816e84c2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_sched_priority_io_basic.test
+++ /dev/null
@@ -1,44 +0,0 @@
---source include/have_debug.inc
---source include/have_xtradb.inc
---source include/linux.inc
---source include/not_embedded.inc
-
-# A dynamic, global variable
-
-SET @start_value = @@GLOBAL.innodb_sched_priority_io;
-
-# Default value
-SELECT @@GLOBAL.innodb_sched_priority_io;
-
-# Global only
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@SESSION.innodb_sched_priority_io;
-
-# Correct values
-# The high priority values may need permissions, thus do not test them
-# SET GLOBAL innodb_sched_priority_io=39;
-# SELECT @@GLOBAL.innodb_sched_priority_io;
-#SET GLOBAL innodb_sched_priority_io=34;
-# SELECT @@GLOBAL.innodb_sched_priorit_io;
-SET GLOBAL innodb_sched_priority_io=19;
-SELECT @@GLOBAL.innodb_sched_priority_io;
-SET GLOBAL innodb_sched_priority_io=5;
-SELECT @@GLOBAL.innodb_sched_priority_io;
-SET GLOBAL innodb_sched_priority_io=0;
-SELECT @@GLOBAL.innodb_sched_priority_io;
-
-# Incorrect values
-SET GLOBAL innodb_sched_priority_io=-1;
-SELECT @@GLOBAL.innodb_sched_priority_io;
-#SET GLOBAL innodb_sched_priority_io=40;
-#SELECT @@GLOBAL.innodb_sched_priority_io;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_io=1.1;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_io=1e1;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_io='foo';
-
-# If we are lacking permissions, then we cannot restore the startup value
-# at the end.
---source include/restart_mysqld.inc
diff --git a/mysql-test/suite/sys_vars/t/innodb_sched_priority_master_basic.test b/mysql-test/suite/sys_vars/t/innodb_sched_priority_master_basic.test
deleted file mode 100644
index 150e7e5793d..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_sched_priority_master_basic.test
+++ /dev/null
@@ -1,44 +0,0 @@
---source include/have_debug.inc
---source include/have_xtradb.inc
---source include/linux.inc
---source include/not_embedded.inc
-
-# A dynamic, global variable
-
-SET @start_value = @@GLOBAL.innodb_sched_priority_master;
-
-# Default value
-SELECT @@GLOBAL.innodb_sched_priority_master;
-
-# Global only
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@SESSION.innodb_sched_priority_master;
-
-# Correct values
-# The high priority values may need permissions, thus do not test them
-# SET GLOBAL innodb_sched_priority_master=39;
-# SELECT @@GLOBAL.innodb_sched_priority_master;
-#SET GLOBAL innodb_sched_priority_master=34;
-# SELECT @@GLOBAL.innodb_sched_priority_master;
-SET GLOBAL innodb_sched_priority_master=19;
-SELECT @@GLOBAL.innodb_sched_priority_master;
-SET GLOBAL innodb_sched_priority_master=5;
-SELECT @@GLOBAL.innodb_sched_priority_master;
-SET GLOBAL innodb_sched_priority_master=0;
-SELECT @@GLOBAL.innodb_sched_priority_master;
-
-# Incorrect values
-SET GLOBAL innodb_sched_priority_master=-1;
-SELECT @@GLOBAL.innodb_sched_priority_master;
-#SET GLOBAL innodb_sched_priority_master=40;
-#SELECT @@GLOBAL.innodb_sched_priority_master;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_master=1.1;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_master=1e1;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_master='foo';
-
-# If we are lacking permissions, then we cannot restore the startup value
-# at the end.
---source include/restart_mysqld.inc
diff --git a/mysql-test/suite/sys_vars/t/innodb_sched_priority_purge_basic.test b/mysql-test/suite/sys_vars/t/innodb_sched_priority_purge_basic.test
deleted file mode 100644
index bc37e4ee568..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_sched_priority_purge_basic.test
+++ /dev/null
@@ -1,44 +0,0 @@
---source include/have_debug.inc
---source include/have_xtradb.inc
---source include/linux.inc
---source include/not_embedded.inc
-
-# A dynamic, global variable
-
-SET @start_value = @@GLOBAL.innodb_sched_priority_purge;
-
-# Default value
-SELECT @@GLOBAL.innodb_sched_priority_purge;
-
-# Global only
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT @@SESSION.innodb_sched_priority_purge;
-
-# Correct values
-# The high priority values may need permissions, thus do not test them
-# SET GLOBAL innodb_sched_priority_purge=39;
-# SELECT @@GLOBAL.innodb_sched_priority_purge;
-#SET GLOBAL innodb_sched_priority_purge=34;
-# SELECT @@GLOBAL.innodb_sched_priority_purge;
-SET GLOBAL innodb_sched_priority_purge=19;
-SELECT @@GLOBAL.innodb_sched_priority_purge;
-SET GLOBAL innodb_sched_priority_purge=5;
-SELECT @@GLOBAL.innodb_sched_priority_purge;
-SET GLOBAL innodb_sched_priority_purge=0;
-SELECT @@GLOBAL.innodb_sched_priority_purge;
-
-# Incorrect values
-SET GLOBAL innodb_sched_priority_purge=-1;
-SELECT @@GLOBAL.innodb_sched_priority_purge;
-#SET GLOBAL innodb_sched_priority_purge=40;
-#SELECT @@GLOBAL.innodb_sched_priority_purge;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_purge=1.1;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_purge=1e1;
---error ER_WRONG_TYPE_FOR_VAR
-SET GLOBAL innodb_sched_priority_purge='foo';
-
-# If we are lacking permissions, then we cannot restore the startup value
-# at the end.
---source include/restart_mysqld.inc
diff --git a/mysql-test/suite/sys_vars/t/innodb_show_locks_held_basic.test b/mysql-test/suite/sys_vars/t/innodb_show_locks_held_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_show_locks_held_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_show_verbose_locks_basic.test b/mysql-test/suite/sys_vars/t/innodb_show_verbose_locks_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_show_verbose_locks_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_stats_auto_update_basic.test b/mysql-test/suite/sys_vars/t/innodb_stats_auto_update_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_stats_auto_update_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_stats_update_need_lock_basic.test b/mysql-test/suite/sys_vars/t/innodb_stats_update_need_lock_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_stats_update_need_lock_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_support_xa_basic.test b/mysql-test/suite/sys_vars/t/innodb_support_xa_basic.test
deleted file mode 100644
index 30f3b0ef46b..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_support_xa_basic.test
+++ /dev/null
@@ -1,240 +0,0 @@
-################# mysql-test\t\innodb_support_xa_basic.test ###################
-# #
-# Variable Name: innodb_support_xa #
-# Scope: GLOBAL | SESSION #
-# Access Type: Dynamic #
-# Data Type: boolean #
-# Default Value: 1 #
-# Range: 0,1 #
-# #
-# #
-# Creation Date: 2008-02-20 #
-# Author: Rizwan #
-# #
-# Description: Test Cases of Dynamic System Variable innodb_support_xa #
-# that checks the behavior of this variable in the following ways#
-# * Default Value #
-# * Valid & Invalid values #
-# * Scope & Access method #
-# * Data Integrity #
-# #
-# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
-# server-system-variables.html #
-# #
-###############################################################################
-
---source include/have_innodb.inc
---source include/load_sysvars.inc
-
-########################################################################
-# START OF innodb_support_xa TESTS #
-########################################################################
-
-
-################################################################################
-# Saving initial value of innodb_support_xa in a temporary variable #
-################################################################################
-
-
-SET @session_start_value = @@session.innodb_support_xa;
-SELECT @session_start_value;
-
-
-SET @global_start_value = @@global.innodb_support_xa;
-SELECT @global_start_value;
-
-
-
---echo '#--------------------FN_DYNVARS_046_01------------------------#'
-########################################################################
-# Display the DEFAULT value of innodb_support_xa #
-########################################################################
-
-SET @@session.innodb_support_xa = 0;
-SET @@session.innodb_support_xa = DEFAULT;
-SELECT @@session.innodb_support_xa;
-
-SET @@global.innodb_support_xa = 0;
-SET @@global.innodb_support_xa = DEFAULT;
-SELECT @@global.innodb_support_xa;
-
---echo '#---------------------FN_DYNVARS_046_02-------------------------#'
-##########################################################################
-# Check if innodb_support_xa can be accessed with and without @@ sign #
-##########################################################################
-
-SET innodb_support_xa = 1;
-SELECT @@innodb_support_xa;
-
---Error ER_UNKNOWN_TABLE
-SELECT session.innodb_support_xa;
-
---Error ER_UNKNOWN_TABLE
-SELECT local.innodb_support_xa;
-
---Error ER_UNKNOWN_TABLE
-SELECT global.innodb_support_xa;
-#using another syntax for accessing system variables
-SET session innodb_support_xa = 0;
-SELECT @@session.innodb_support_xa;
-
-SET global innodb_support_xa = 0;
-SELECT @@global.innodb_support_xa;
-
-
---echo '#--------------------FN_DYNVARS_046_03------------------------#'
-##########################################################################
-# change the value of innodb_support_xa to a valid value #
-##########################################################################
-# for session
-SET @@session.innodb_support_xa = 0;
-SELECT @@session.innodb_support_xa;
-SET @@session.innodb_support_xa = 1;
-SELECT @@session.innodb_support_xa;
-
-# for global
-SET @@global.innodb_support_xa = 0;
-SELECT @@global.innodb_support_xa;
-SET @@global.innodb_support_xa = 1;
-SELECT @@global.innodb_support_xa;
-
-
---echo '#--------------------FN_DYNVARS_046_04-------------------------#'
-###########################################################################
-# Change the value of innodb_support_xa to invalid value #
-###########################################################################
-
-# for session
---Error ER_WRONG_TYPE_FOR_VAR
-SET @@session.innodb_support_xa = -0.6;
---Error ER_WRONG_TYPE_FOR_VAR
-SET @@session.innodb_support_xa = 1.6;
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@session.innodb_support_xa = "T";
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@session.innodb_support_xa = "Y";
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@session.innodb_support_xa = TRÜE;
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@session.innodb_support_xa = ÕN;
-
-SET @@session.innodb_support_xa = OF;
-SELECT @@session.innodb_support_xa;
-
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@session.innodb_support_xa = ÓFF;
-
-# for global
-
-
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.innodb_support_xa = -1;
-SELECT @@global.innodb_support_xa;
-
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.innodb_support_xa = 2;
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.innodb_support_xa = "T";
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.innodb_support_xa = "Y";
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.innodb_support_xa = TRÜE;
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.innodb_support_xa = ÕN;
-
-SET @@global.innodb_support_xa = OF;
-SELECT @@global.innodb_support_xa;
-
---Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.innodb_support_xa = ÓFF;
-
-
---echo '#-------------------FN_DYNVARS_046_05----------------------------#'
-###########################################################################
-# Test if changing global variable effects session and vice versa #
-###########################################################################
-
-SET @@global.innodb_support_xa = 0;
-SET @@session.innodb_support_xa = 1;
-SELECT @@global.innodb_support_xa AS res_is_0;
-
-SET @@global.innodb_support_xa = 0;
-SELECT @@session.innodb_support_xa AS res_is_1;
-
---echo '#----------------------FN_DYNVARS_046_06------------------------#'
-#########################################################################
-# Check if the value in GLOBAL Table matches value in variable #
-#########################################################################
-
---disable_warnings
-SELECT IF(@@global.innodb_support_xa, "ON", "OFF") =
- VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
- WHERE VARIABLE_NAME='innodb_support_xa';
---enable_warnings
-SELECT @@global.innodb_support_xa;
---disable_warnings
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
- WHERE VARIABLE_NAME='innodb_support_xa';
---enable_warnings
-
-
---echo '#----------------------FN_DYNVARS_046_07------------------------#'
-#########################################################################
-# Check if the value in SESSION Table matches value in variable #
-#########################################################################
-
---disable_warnings
-SELECT IF(@@session.innodb_support_xa, "ON", "OFF") =
- VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
- WHERE VARIABLE_NAME='innodb_support_xa';
---enable_warnings
-SELECT @@session.innodb_support_xa;
---disable_warnings
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
- WHERE VARIABLE_NAME='innodb_support_xa';
---enable_warnings
-
-
---echo '#---------------------FN_DYNVARS_046_08-------------------------#'
-###################################################################
-# Check if ON and OFF values can be used on variable #
-###################################################################
-
-SET @@session.innodb_support_xa = OFF;
-SELECT @@session.innodb_support_xa;
-SET @@session.innodb_support_xa = ON;
-SELECT @@session.innodb_support_xa;
-
-SET @@global.innodb_support_xa = OFF;
-SELECT @@global.innodb_support_xa;
-SET @@global.innodb_support_xa = ON;
-SELECT @@global.innodb_support_xa;
-
---echo '#---------------------FN_DYNVARS_046_09----------------------#'
-###################################################################
-# Check if TRUE and FALSE values can be used on variable #
-###################################################################
-
-SET @@session.innodb_support_xa = TRUE;
-SELECT @@session.innodb_support_xa;
-SET @@session.innodb_support_xa = FALSE;
-SELECT @@session.innodb_support_xa;
-
-SET @@global.innodb_support_xa = TRUE;
-SELECT @@global.innodb_support_xa;
-SET @@global.innodb_support_xa = FALSE;
-SELECT @@global.innodb_support_xa;
-
-##############################
-# Restore initial value #
-##############################
-
-SET @@session.innodb_support_xa = @session_start_value;
-SELECT @@session.innodb_support_xa;
-
-SET @@global.innodb_support_xa = @global_start_value;
-SELECT @@global.innodb_support_xa;
-
-###############################################################
-# END OF innodb_support_xa TESTS #
-###############################################################
diff --git a/mysql-test/suite/sys_vars/t/innodb_support_xa_func.test b/mysql-test/suite/sys_vars/t/innodb_support_xa_func.test
deleted file mode 100644
index a6875ec780d..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_support_xa_func.test
+++ /dev/null
@@ -1,135 +0,0 @@
-################# mysql-test\t\innodb_support_xa_func.test ###################
-# #
-# Variable Name: innodb_support_xa #
-# Scope: GLOBAL | SESSION #
-# Access Type: Dynamic #
-# Data Type: boolean #
-# Default Value: 1 #
-# Range: 0,1 #
-# #
-# #
-# Creation Date: 2008-03-08 #
-# Author: Rizwan #
-# #
-# Description: Test Cases of Dynamic System Variable innodb_support_xa #
-# that checks the behavior of this variable in the following ways#
-# #
-# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
-# server-system-variables.html #
-# #
-###############################################################################
-
---source include/have_innodb.inc
---source include/count_sessions.inc
---echo '#--------------------FN_DYNVARS_046_01-------------------------#'
-####################################################################
-# Check if setting innodb_support_xa is changed in new connection #
-####################################################################
-
-SET @@global.innodb_support_xa = OFF;
-connect (con1,localhost,root,,,,);
-connection con1;
-SELECT @@global.innodb_support_xa;
-SELECT @@session.innodb_support_xa;
-disconnect con1;
-
-
---echo '#--------------------FN_DYNVARS_046_01-------------------------#'
-###########################################################
-# Begin the functionality Testing of innodb_support_xa #
-###########################################################
-
-connection default;
-SET @@global.innodb_support_xa = 1;
-
---disable_warnings
-drop table if exists t1, t2;
---enable_warnings
-
-create table t1 (a int) engine=innodb;
-
-#====================================================
---echo '---check when innodb_support_xa is 1---'
-#====================================================
-
-
-SET @@innodb_support_xa = 1;
-
-xa start 'test1';
-INSERT t1 values (10);
-xa end 'test1';
-xa prepare 'test1';
-xa rollback 'test1';
-SELECT * from t1;
-
-#====================================================
---echo '---check when innodb_support_xa is 0---'
-#====================================================
-
-SET @@innodb_support_xa = 0;
-#
-xa start 'test1';
-INSERT t1 values (10);
-xa end 'test1';
-xa prepare 'test1';
-xa rollback 'test1';
-SELECT * from t1;
-
-#====================================================
---echo '------general xa testing--------'
-#====================================================
-
-SET @@global.innodb_support_xa = 1;
-SET @@innodb_support_xa = 1;
-
-xa start 'testa','testb';
-INSERT t1 values (30);
---Error ER_XAER_RMFAIL
-COMMIT;
-xa end 'testa','testb';
---Error ER_XAER_RMFAIL
-BEGIN;
---Error ER_XAER_RMFAIL
-CREATE table t2 (a int);
-CONNECT (con1,localhost,root,,,,);
-connection con1;
-
---Error ER_XAER_DUPID
-xa start 'testa','testb';
---Error ER_XAER_DUPID
-xa start 'testa','testb', 123;
-
-# gtrid [ , bqual [ , formatID ] ]
-xa start 0x7465737462, 0x2030405060, 0xb;
-INSERT t1 values (40);
-xa end 'testb',' 0@P`',11;
-xa prepare 'testb',0x2030405060,11;
-
---Error ER_XAER_RMFAIL
-START TRANSACTION;
-xa recover;
-
-# uncomment the line below when binlog will be able to prepare
-#disconnect con1;
-
-CONNECTION default;
-xa prepare 'testa','testb';
-xa recover;
---Error ER_XAER_NOTA
-xa commit 'testb',0x2030405060,11;
-xa commit 'testa','testb';
-
-CONNECTION con1;
-xa rollback 'testb',0x2030405060,11;
-
-SELECT * from t1;
-
-disconnect con1;
-connection default;
-DROP table t1;
---source include/wait_until_count_sessions.inc
-
-########################################################
-# End of functionality Testing for innodb_support_xa #
-########################################################
-
diff --git a/mysql-test/suite/sys_vars/t/innodb_thread_concurrency_timer_based_basic.test b/mysql-test/suite/sys_vars/t/innodb_thread_concurrency_timer_based_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_thread_concurrency_timer_based_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_tmpdir_basic.test b/mysql-test/suite/sys_vars/t/innodb_tmpdir_basic.test
index 3c547152e27..2f9da412a06 100644
--- a/mysql-test/suite/sys_vars/t/innodb_tmpdir_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_tmpdir_basic.test
@@ -1,10 +1,5 @@
--source include/have_innodb.inc
-if (`select plugin_auth_version <= "5.6.28-MariaDB-76.1" from information_schema.plugins where plugin_name='innodb'`)
-{
- --skip Not fixed in XtraDB as of 5.6.28-MariaDB-76.1 or earlier
-}
-
SET @start_global_value = @@global.innodb_tmpdir;
SELECT @start_global_value;
diff --git a/mysql-test/suite/sys_vars/t/innodb_track_changed_pages_basic.test b/mysql-test/suite/sys_vars/t/innodb_track_changed_pages_basic.test
deleted file mode 100644
index daf15922498..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_track_changed_pages_basic.test
+++ /dev/null
@@ -1,18 +0,0 @@
-# Tests for innodb_track_changed_pages variable
-
---source include/have_xtradb.inc
-
-SELECT COUNT(@@GLOBAL.innodb_track_changed_pages);
-
-SELECT @@GLOBAL.innodb_track_changed_pages = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_track_changed_pages';
-
-SELECT @@innodb_track_changed_pages = @@GLOBAL.innodb_track_changed_pages;
-
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT COUNT(@@SESSION.innodb_track_changed_pages);
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT COUNT(@@LOCAL.innodb_track_changed_pages);
---error ER_BAD_FIELD_ERROR
-SELECT innodb_track_changed_pages = @@SESSION.innodb_track_changed_pages;
diff --git a/mysql-test/suite/sys_vars/t/innodb_track_redo_log_now_basic.test b/mysql-test/suite/sys_vars/t/innodb_track_redo_log_now_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_track_redo_log_now_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_use_global_flush_log_at_trx_commit_basic.test b/mysql-test/suite/sys_vars/t/innodb_use_global_flush_log_at_trx_commit_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_use_global_flush_log_at_trx_commit_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_use_mtflush_basic.test b/mysql-test/suite/sys_vars/t/innodb_use_mtflush_basic.test
deleted file mode 100644
index a9c40b9e522..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_use_mtflush_basic.test
+++ /dev/null
@@ -1,22 +0,0 @@
---source include/have_innodb.inc
-# bool readonly
-
-#
-# show values;
-#
-select @@global.innodb_use_mtflush;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-select @@session.innodb_use_mtflush;
-show global variables like 'innodb_use_mtflush';
-show session variables like 'innodb_use_mtflush';
-select * from information_schema.global_variables where variable_name='innodb_use_mtflush';
-select * from information_schema.session_variables where variable_name='innodb_use_mtflush';
-
-#
-# show that it's read-only
-#
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set global innodb_use_mtflush=1;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set session innodb_use_mtflush=1;
-
diff --git a/mysql-test/suite/sys_vars/t/innodb_use_stacktrace_basic.test b/mysql-test/suite/sys_vars/t/innodb_use_stacktrace_basic.test
deleted file mode 100644
index b7da1dae3d4..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_use_stacktrace_basic.test
+++ /dev/null
@@ -1,56 +0,0 @@
---source include/have_xtradb.inc
-
-SELECT COUNT(@@GLOBAL.innodb_use_stacktrace);
---echo 1 Expected
-
-####################################################################
-# Check if Value can set #
-####################################################################
-
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SET @@GLOBAL.innodb_use_stacktrace=1;
---echo Expected error 'Read only variable'
-
-SELECT COUNT(@@GLOBAL.innodb_use_stacktrace);
---echo 1 Expected
-
-#################################################################
-# Check if the value in GLOBAL Table matches value in variable #
-#################################################################
-
-SELECT IF(@@GLOBAL.innodb_use_stacktrace, 'ON', 'OFF') = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_use_stacktrace';
---echo 1 Expected
-
-SELECT COUNT(@@GLOBAL.innodb_use_stacktrace);
---echo 1 Expected
-
-SELECT COUNT(VARIABLE_VALUE)
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_use_stacktrace';
---echo 1 Expected
-
-################################################################################
-# Check if accessing variable with and without GLOBAL point to same variable #
-################################################################################
-SELECT @@innodb_use_stacktrace = @@GLOBAL.innodb_use_stacktrace;
---echo 1 Expected
-
-SELECT COUNT(@@innodb_use_stacktrace);
---echo 1 Expected
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT COUNT(@@local.innodb_use_stacktrace);
---echo Expected error 'Variable is a GLOBAL variable'
-
---Error ER_INCORRECT_GLOBAL_LOCAL_VAR
-SELECT COUNT(@@SESSION.innodb_use_stacktrace);
---echo Expected error 'Variable is a GLOBAL variable'
-
-SELECT COUNT(@@GLOBAL.innodb_use_stacktrace);
---echo 1 Expected
-
---Error ER_BAD_FIELD_ERROR
-SELECT innodb_use_stacktrace = @@SESSION.innodb_use_stacktrace;
---echo Expected error 'Readonly variable'
diff --git a/mysql-test/suite/sys_vars/t/innodb_use_sys_stats_table_basic.test b/mysql-test/suite/sys_vars/t/innodb_use_sys_stats_table_basic.test
deleted file mode 100644
index 00aa476e8d2..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_use_sys_stats_table_basic.test
+++ /dev/null
@@ -1 +0,0 @@
---echo XtraDB extension
diff --git a/mysql-test/suite/sys_vars/t/innodb_use_trim_basic.test b/mysql-test/suite/sys_vars/t/innodb_use_trim_basic.test
deleted file mode 100644
index c1b0f142179..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_use_trim_basic.test
+++ /dev/null
@@ -1,36 +0,0 @@
---source include/have_innodb.inc
-
-SET @start_use_trim = @@global.innodb_use_trim;
-SELECT @start_use_trim;
-
-SELECT COUNT(@@GLOBAL.innodb_use_trim);
---echo 1 Expected
-
-####################################################################
-# Check if Value can set #
-####################################################################
-
-SET @@GLOBAL.innodb_use_trim=1;
-
-SELECT COUNT(@@GLOBAL.innodb_use_trim);
---echo 1 Expected
-
-#################################################################
-# Check if the value in GLOBAL Table matches value in variable #
-#################################################################
-
-SELECT IF(@@GLOBAL.innodb_use_trim, 'ON', 'OFF') = VARIABLE_VALUE
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_use_trim';
---echo 1 Expected
-
-SELECT COUNT(@@GLOBAL.innodb_use_trim);
---echo 1 Expected
-
-SELECT COUNT(VARIABLE_VALUE)
-FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
-WHERE VARIABLE_NAME='innodb_use_trim';
---echo 1 Expected
-
-SET @@global.innodb_use_trim = @start_use_trim;
-SELECT @@global.innodb_use_trim; \ No newline at end of file
diff --git a/mysql-test/suite/sys_vars/t/log_disabled_statements_basic.test b/mysql-test/suite/sys_vars/t/log_disabled_statements_basic.test
new file mode 100644
index 00000000000..f6191629f91
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/log_disabled_statements_basic.test
@@ -0,0 +1,51 @@
+# set session
+
+SET @start_global_value = @@global.log_disabled_statements;
+
+#
+# exists as global only
+#
+select @@global.log_disabled_statements;
+select @@session.log_disabled_statements;
+show global variables like 'log_disabled_statements';
+show session variables like 'log_disabled_statements';
+select * from information_schema.global_variables where variable_name='log_disabled_statements';
+select * from information_schema.session_variables where variable_name='log_disabled_statements';
+
+#
+# show that it's writable
+#
+set global log_disabled_statements=1;
+select @@global.log_disabled_statements;
+set session log_disabled_statements=1;
+select @@session.log_disabled_statements;
+
+#
+# all valid values
+#
+set session log_disabled_statements=1;
+select @@session.log_disabled_statements;
+set session log_disabled_statements=2;
+select @@session.log_disabled_statements;
+set session log_disabled_statements='slave';
+select @@session.log_disabled_statements;
+set session log_disabled_statements='sp';
+select @@session.log_disabled_statements;
+set session log_disabled_statements='slave,sp';
+select @@session.log_disabled_statements;
+set session log_disabled_statements='';
+select @@session.log_disabled_statements;
+
+#
+# incorrect types/values
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set session log_disabled_statements=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session log_disabled_statements=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set session log_disabled_statements="foo";
+--error ER_WRONG_VALUE_FOR_VAR
+set session log_disabled_statements=1024;
+
+SET @@global.log_disabled_statements = @start_global_value;
diff --git a/mysql-test/suite/sys_vars/t/log_disabled_statements_func-master.opt b/mysql-test/suite/sys_vars/t/log_disabled_statements_func-master.opt
new file mode 100644
index 00000000000..c9f62c1ab8a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/log_disabled_statements_func-master.opt
@@ -0,0 +1,2 @@
+--general-log
+--general-log-file=test.log
diff --git a/mysql-test/suite/sys_vars/t/log_disabled_statements_func.test b/mysql-test/suite/sys_vars/t/log_disabled_statements_func.test
new file mode 100644
index 00000000000..a7a088cdcd9
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/log_disabled_statements_func.test
@@ -0,0 +1,61 @@
+SET @old_log_output= @@global.log_output;
+SET @old_log_disable_statements= @@global.log_disabled_statements;
+
+
+CREATE TABLE t1 (i INT PRIMARY KEY AUTO_INCREMENT, j VARCHAR(255) ) ENGINE=MyISAM;
+insert into t1 (j) values ('a'),('b'),('c'),('d');
+
+# enable slow logging to table
+SET GLOBAL log_output = 'file,table';
+
+DELIMITER $;
+CREATE PROCEDURE slow()
+BEGIN
+ SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b';
+ SELECT count(*) from t1 where j>'a';
+END
+$
+
+DELIMITER ;$
+
+select @@log_disabled_statements;
+TRUNCATE TABLE mysql.general_log;
+check table t1;
+CALL slow();
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part2';
+
+--echo -->
+SELECT argument FROM mysql.general_log where command_type <> "Close stmt" and command_type <> "Prepare" and argument not like "%general_log%";
+--echo <--
+
+TRUNCATE TABLE mysql.general_log;
+SET SESSION log_disabled_statements="";
+check table t1;
+CALL slow();
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part3';
+
+--echo -->
+SELECT argument FROM mysql.general_log where command_type <> "Close stmt" and command_type <> "Prepare" and argument not like "%general_log%";
+--echo <--
+
+TRUNCATE TABLE mysql.general_log;
+SET SESSION log_disabled_statements="sp,slave";
+check table t1;
+CALL slow();
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part4';
+
+--echo -->
+SELECT argument FROM mysql.general_log where command_type <> "Close stmt" and command_type <> "Prepare" and argument not like "%general_log%";
+--echo <--
+
+DROP TABLE t1;
+DROP PROCEDURE slow;
+
+#
+# Restore setup
+#
+TRUNCATE TABLE mysql.general_log;
+SET @@global.log_output= @old_log_output;
+SET @@global.log_disabled_statements= @old_log_disable_statements;
+
+
diff --git a/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test b/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test
index a726bff08d7..5710920464f 100644
--- a/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test
+++ b/mysql-test/suite/sys_vars/t/log_queries_not_using_indexes_basic.test
@@ -21,6 +21,16 @@
###############################################################################
SET @start_value= @@global.log_queries_not_using_indexes;
+SET @filter_start_value= @@global.log_slow_filter;
+
+####################################################################
+# Check that variable is both session and global #
+####################################################################
+
+SET @@global.log_queries_not_using_indexes= TRUE;
+SET @@session.log_queries_not_using_indexes= TRUE;
+SET @@global.log_queries_not_using_indexes= FALSE;
+SET @@session.log_queries_not_using_indexes= FALSE;
####################################################################
# Valid values for boolean #
@@ -63,7 +73,7 @@ SET GLOBAL log_queries_not_using_indexes= +0;
SELECT @@global.log_queries_not_using_indexes;
#################################################################
-# Check if the value in GLOBAL Table matches value in variable #
+# Not valid values for the variable #
#################################################################
--error ER_WRONG_VALUE_FOR_VAR
@@ -88,23 +98,38 @@ SET @@global.log_queries_not_using_indexes= @badvar;
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL log_queries_not_using_indexes= 'DEFAULT';
---error ER_GLOBAL_VARIABLE
-SET log_queries_not_using_indexes= TRUE;
-
---error ER_GLOBAL_VARIABLE
-SET SESSION log_queries_not_using_indexes= TRUE;
-
---error ER_GLOBAL_VARIABLE
-SET @@session.log_queries_not_using_indexes= TRUE;
-
---error ER_GLOBAL_VARIABLE
-SET LOCAL log_queries_not_using_indexes= TRUE;
-
--error ER_PARSE_ERROR
SET @@global log_queries_not_using_indexes= TRUE;
--error ER_PARSE_ERROR
SET @@SESSION log_queries_not_using_indexes= TRUE;
-SET @@global.log_queries_not_using_indexes= @start_value;
+####################################################################
+# Ensure that the value matches log_slow_filter #
+####################################################################
+
+SET @@SESSION.log_queries_not_using_indexes= TRUE;
+select @@SESSION.log_slow_filter;
+SET @@SESSION.log_queries_not_using_indexes= FALSE;
+select @@SESSION.log_slow_filter;
+SET @@GLOBAL.log_queries_not_using_indexes= TRUE;
+select @@GLOBAL.log_slow_filter;
+SET @@GLOBAL.log_queries_not_using_indexes= FALSE;
+select @@GLOBAL.log_slow_filter;
+
+SET @@SESSION.log_slow_filter="";
+select @@SESSION.log_queries_not_using_indexes;
+SET @@SESSION.log_slow_filter="not_using_index";
+select @@SESSION.log_queries_not_using_indexes;
+
+SET @@GLOBAL.log_slow_filter="";
+select @@GLOBAL.log_queries_not_using_indexes;
+SET @@GLOBAL.log_slow_filter="not_using_index";
+select @@GLOBAL.log_queries_not_using_indexes;
+####################################################################
+# Restore original value #
+####################################################################
+
+SET @@global.log_queries_not_using_indexes= @start_value;
+SET @@global.log_slow_filter= @filter_start_value;
diff --git a/mysql-test/suite/sys_vars/t/log_slow_admin_statements_func.test b/mysql-test/suite/sys_vars/t/log_slow_admin_statements_func.test
index 78e4d35f69a..97822a0f23a 100644
--- a/mysql-test/suite/sys_vars/t/log_slow_admin_statements_func.test
+++ b/mysql-test/suite/sys_vars/t/log_slow_admin_statements_func.test
@@ -16,7 +16,7 @@ CREATE TABLE log_slow_admin_statements (
SET GLOBAL log_output = 'file,table';
SET GLOBAL slow_query_log = on;
SET SESSION long_query_time = 0;
-SET GLOBAL log_slow_admin_statements = on;
+SET SESSION log_slow_admin_statements = on;
# test ALTER, OPTIMIZE and CHECK against the table shown up
ALTER TABLE log_slow_admin_statements ADD COLUMN k INT DEFAULT 17;
@@ -59,3 +59,30 @@ SET @@global.log_slow_admin_statements= @old_log_slow_admin_statements;
DROP PROCEDURE add_rows;
TRUNCATE TABLE mysql.slow_log;
+
+#
+# Ensure that log_slow_admin_statements maps to log_slow_disable_statements
+#
+
+SET @save_log_slow_disabled_statements= @@global.log_slow_disabled_statements;
+SET @@SESSION.log_slow_admin_statements= TRUE;
+select @@SESSION.log_slow_disabled_statements;
+SET @@SESSION.log_slow_admin_statements= FALSE;
+select @@SESSION.log_slow_disabled_statements;
+SET @@GLOBAL.log_slow_admin_statements= TRUE;
+select @@GLOBAL.log_slow_disabled_statements;
+SET @@GLOBAL.log_slow_admin_statements= FALSE;
+select @@GLOBAL.log_slow_disabled_statements;
+
+SET @@SESSION.log_slow_disabled_statements="";
+select @@SESSION.log_slow_admin_statements;
+SET @@SESSION.log_slow_disabled_statements="admin";
+select @@SESSION.log_slow_admin_statements;
+
+SET @@GLOBAL.log_slow_disabled_statements="";
+select @@GLOBAL.log_slow_admin_statements;
+SET @@GLOBAL.log_slow_disabled_statements="admin";
+select @@GLOBAL.log_slow_admin_statements;
+
+SET @@global.log_slow_disabled_statements= @save_log_slow_disabled_statements;
+
diff --git a/mysql-test/suite/sys_vars/t/log_slow_disabled_statements_basic.test b/mysql-test/suite/sys_vars/t/log_slow_disabled_statements_basic.test
new file mode 100644
index 00000000000..77391df6b3c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/log_slow_disabled_statements_basic.test
@@ -0,0 +1,57 @@
+# set session
+
+SET @start_global_value = @@global.log_slow_disabled_statements;
+
+#
+# exists as global only
+#
+select @@global.log_slow_disabled_statements;
+select @@session.log_slow_disabled_statements;
+show global variables like 'log_slow_disabled_statements';
+show session variables like 'log_slow_disabled_statements';
+select * from information_schema.global_variables where variable_name='log_slow_disabled_statements';
+select * from information_schema.session_variables where variable_name='log_slow_disabled_statements';
+
+#
+# show that it's writable
+#
+set global log_slow_disabled_statements=1;
+select @@global.log_slow_disabled_statements;
+set session log_slow_disabled_statements=1;
+select @@session.log_slow_disabled_statements;
+
+#
+# all valid values
+#
+set session log_slow_disabled_statements=1;
+select @@session.log_slow_disabled_statements;
+set session log_slow_disabled_statements=2;
+select @@session.log_slow_disabled_statements;
+set session log_slow_disabled_statements=5;
+select @@session.log_slow_disabled_statements;
+set session log_slow_disabled_statements='admin';
+select @@session.log_slow_disabled_statements;
+set session log_slow_disabled_statements='slave';
+select @@session.log_slow_disabled_statements;
+set session log_slow_disabled_statements='call';
+select @@session.log_slow_disabled_statements;
+set session log_slow_disabled_statements='sp';
+select @@session.log_slow_disabled_statements;
+set session log_slow_disabled_statements='admin,sp,call,slave';
+select @@session.log_slow_disabled_statements;
+set session log_slow_disabled_statements='';
+select @@session.log_slow_disabled_statements;
+
+#
+# incorrect types/values
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set session log_slow_disabled_statements=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session log_slow_disabled_statements=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set session log_slow_disabled_statements="foo";
+--error ER_WRONG_VALUE_FOR_VAR
+set session log_slow_disabled_statements=1024;
+
+SET @@global.log_slow_disabled_statements = @start_global_value;
diff --git a/mysql-test/suite/sys_vars/t/log_slow_disabled_statements_func.test b/mysql-test/suite/sys_vars/t/log_slow_disabled_statements_func.test
new file mode 100644
index 00000000000..483948c840e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/log_slow_disabled_statements_func.test
@@ -0,0 +1,92 @@
+SET @old_log_output= @@global.log_output;
+SET @old_slow_query_log= @@global.slow_query_log;
+SET @old_long_query_time= @@session.long_query_time;
+SET @old_log_slow_disable_statements= @@global.log_slow_disabled_statements;
+
+# Log everything to slow log
+SET @@session.log_slow_verbosity="explain,innodb,query_plan";
+
+CREATE TABLE t1 (i INT PRIMARY KEY AUTO_INCREMENT, j blob) ENGINE=MyISAM;
+insert into t1 (j) values ('a'),('b'),('c'),('d');
+create table t2 (a int auto_increment primary key) engine=myisam;
+
+# enable slow logging to table
+SET GLOBAL log_output = 'file,table';
+SET GLOBAL slow_query_log = on;
+
+DELIMITER $;
+CREATE PROCEDURE slow()
+BEGIN
+ SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b';
+ SELECT count(*) from t1 where j>'a';
+ insert into t2 () values();
+END
+$
+
+CREATE PROCEDURE slow2()
+BEGIN
+ SELECT j,count(*) from t1 group by j;
+ create temporary table t3 (a int);
+ alter table t3 add column (b int);
+ call slow();
+ drop temporary table t3;
+ SELECT j,count(*)+1 from t1 group by j,i;
+END
+$
+
+DELIMITER ;$
+
+SET SESSION long_query_time = 0;
+
+SELECT @@log_slow_disabled_statements;
+TRUNCATE TABLE mysql.slow_log;
+ALTER TABLE t1 add column extra int;
+CALL slow2();
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part2';
+
+--echo -->
+SELECT sql_text FROM mysql.slow_log where sql_text <> "Close stmt" and sql_text <> "Prepare";
+--echo <--
+
+SET SESSION log_slow_disabled_statements="call,admin";
+TRUNCATE TABLE mysql.slow_log;
+ALTER TABLE t1 add column extra2 int;
+CALL slow2();
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part3';
+
+--echo -->
+SELECT sql_text FROM mysql.slow_log where sql_text <> "Close stmt" and sql_text <> "Prepare";
+--echo <--
+
+SET SESSION log_slow_disabled_statements="";
+TRUNCATE TABLE mysql.slow_log;
+ALTER TABLE t1 add column extra3 int;
+CALL slow2();
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part4';
+
+--echo -->
+SELECT sql_text FROM mysql.slow_log where sql_text <> "Close stmt" and sql_text <> "Prepare";
+--echo <--
+
+SET SESSION log_slow_disabled_statements="call,admin,slave,sp";
+TRUNCATE TABLE mysql.slow_log;
+ALTER TABLE t1 add column extra4 int;
+CALL slow2();
+SELECT count(if(sleep(1) >= 0,0,NULL)) from t1 where j>'b and part5';
+
+--echo -->
+SELECT sql_text FROM mysql.slow_log where sql_text <> "Close stmt" and sql_text <> "Prepare";
+--echo <--
+
+DROP TABLE t1,t2;
+DROP PROCEDURE slow;
+DROP PROCEDURE slow2;
+
+#
+# Restore setup
+#
+SET @@session.long_query_time= @old_long_query_time;
+TRUNCATE TABLE mysql.slow_log;
+SET @@global.log_output= @old_log_output;
+SET @@global.slow_query_log= @old_slow_query_log;
+SET @@global.log_slow_disabled_statements= @old_log_slow_disable_statements;
diff --git a/mysql-test/suite/sys_vars/t/log_slow_filter_basic.test b/mysql-test/suite/sys_vars/t/log_slow_filter_basic.test
index 2891b7ded8b..5309456b3ef 100644
--- a/mysql-test/suite/sys_vars/t/log_slow_filter_basic.test
+++ b/mysql-test/suite/sys_vars/t/log_slow_filter_basic.test
@@ -39,6 +39,8 @@ set session log_slow_filter='full_join';
select @@session.log_slow_filter;
set session log_slow_filter='full_scan';
select @@session.log_slow_filter;
+set session log_slow_filter='not_using_index';
+select @@session.log_slow_filter;
set session log_slow_filter='query_cache';
select @@session.log_slow_filter;
set session log_slow_filter='query_cache_miss';
@@ -49,7 +51,7 @@ set session log_slow_filter='tmp_table_on_disk';
select @@session.log_slow_filter;
set session log_slow_filter='filesort,query_cache';
select @@session.log_slow_filter;
-set session log_slow_filter='admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk';
+set session log_slow_filter='admin,not_using_index,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk';
select @@session.log_slow_filter;
set session log_slow_filter='';
select @@session.log_slow_filter;
@@ -64,6 +66,6 @@ set session log_slow_filter=1e1;
--error ER_WRONG_VALUE_FOR_VAR
set session log_slow_filter="foo";
--error ER_WRONG_VALUE_FOR_VAR
-set session log_slow_filter=1024;
+set session log_slow_filter=16384;
SET @@global.log_slow_filter = @start_global_value;
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test
index 2ff03a53c42..68653d3a9a7 100644
--- a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test
@@ -6,7 +6,6 @@
#
#
source include/not_embedded.inc;
-source include/have_semisync.inc;
select @@global.rpl_semi_sync_master_enabled;
SET @start_global_value = @@global.rpl_semi_sync_master_enabled;
@@ -52,6 +51,35 @@ set global rpl_semi_sync_master_enabled=1e1;
--error ER_WRONG_VALUE_FOR_VAR
set global rpl_semi_sync_master_enabled="some text";
+#
+# Test conflicting concurrent setting
+#
+--let $val_saved= `SELECT @@global.rpl_semi_sync_master_enabled`
+connect (con1,localhost,root,,);
+connect (con2,localhost,root,,);
+--let $iter=100
+--disable_query_log
+while ($iter)
+{
+ --connection con1
+ --send_eval SET @@global.rpl_semi_sync_master_enabled = $iter % 2
+
+ --connection con2
+ --send_eval SET @@global.rpl_semi_sync_master_enabled = ($iter + 1) % 2
+
+ --connection con1
+ reap;
+ --connection con2
+ reap;
+
+ --dec $iter
+}
+--enable_query_log
+disconnect con1;
+disconnect con2;
+
+--connection default
+--eval SET @@global.rpl_semi_sync_master_enabled = $val_saved
#
# Cleanup
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test
index 74d3c41150b..d312fa1c367 100644
--- a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test
@@ -5,7 +5,6 @@
# 2010-01-21 OBN - Added
#
source include/not_embedded.inc;
-source include/have_semisync.inc;
select @@global.rpl_semi_sync_master_timeout;
SET @start_global_value = @@global.rpl_semi_sync_master_timeout;
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test
index c41b53fe5e6..3419254bafd 100644
--- a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test
@@ -5,7 +5,6 @@
# 2010-01-21 OBN - Added
#
source include/not_embedded.inc;
-source include/have_semisync.inc;
select @@global.rpl_semi_sync_master_trace_level;
SET @start_global_value = @@global.rpl_semi_sync_master_trace_level;
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test
index d4a46a08140..60ca4425e5b 100644
--- a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test
@@ -6,7 +6,6 @@
#
#
source include/not_embedded.inc;
-source include/have_semisync.inc;
select @@global.rpl_semi_sync_master_wait_no_slave;
SET @start_global_value = @@global.rpl_semi_sync_master_wait_no_slave;
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_point_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_point_basic.test
index 8125cf8d653..2f8cd8ec160 100644
--- a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_point_basic.test
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_point_basic.test
@@ -1,5 +1,4 @@
source include/not_embedded.inc;
-source include/have_semisync.inc;
select @@global.rpl_semi_sync_master_wait_point;
SET @start_global_value = @@global.rpl_semi_sync_master_wait_point;
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test
index c7ce371970d..71be941cbdc 100644
--- a/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test
@@ -6,7 +6,6 @@
#
#
source include/not_embedded.inc;
-source include/have_semisync.inc;
select @@global.rpl_semi_sync_slave_enabled;
SET @start_global_value = @@global.rpl_semi_sync_slave_enabled;
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test
index d7e001b7322..74b6ac0a6ae 100644
--- a/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test
@@ -5,7 +5,6 @@
# 2010-01-21 OBN - Added
#
source include/not_embedded.inc;
-source include/have_semisync.inc;
select @@global.rpl_semi_sync_slave_trace_level;
SET @start_global_value = @@global.rpl_semi_sync_slave_trace_level;
diff --git a/mysql-test/suite/sys_vars/t/slave_transaction_retry_errors-master.opt b/mysql-test/suite/sys_vars/t/slave_transaction_retry_errors-master.opt
new file mode 100644
index 00000000000..a93f9f02f70
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/slave_transaction_retry_errors-master.opt
@@ -0,0 +1 @@
+--slave_transaction_retry_errors="10,20, 5000, 400"
diff --git a/mysql-test/suite/sys_vars/t/slave_transaction_retry_errors.test b/mysql-test/suite/sys_vars/t/slave_transaction_retry_errors.test
new file mode 100644
index 00000000000..aa2299cf815
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/slave_transaction_retry_errors.test
@@ -0,0 +1,19 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+select @@global.slave_transaction_retry_errors;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.slave_transaction_retry_errors;
+show global variables like 'slave_transaction_retry_errors';
+show session variables like 'slave_transaction_retry_errors';
+select * from information_schema.global_variables where variable_name='slave_transaction_retry_errors';
+select * from information_schema.session_variables where variable_name='slave_transaction_retry_errors';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global slave_transaction_retry_errors=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session slave_transaction_retry_errors=1;
diff --git a/mysql-test/suite/sys_vars/t/slave_transaction_retry_interval_basic.test b/mysql-test/suite/sys_vars/t/slave_transaction_retry_interval_basic.test
new file mode 100644
index 00000000000..4d8d55901d1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/slave_transaction_retry_interval_basic.test
@@ -0,0 +1,190 @@
+--source include/not_embedded.inc
+#
+# only global
+#
+####### mysql-test\t\slave_transaction_retry_interval_basic.test ##############
+# #
+# Variable Name: slave_transaction_retry_interval #
+# Scope: GLOBAL #
+# Access Type: Dynamic #
+# Data Type: numeric #
+# Default Value: 10 #
+# Range: #
+# #
+# #
+# Creation Date: 2008-02-07 #
+# Author: Rizwan #
+# #
+# Description: Test Cases of Dynamic System Variable #
+# slave_transaction_retry_interval #
+# that checks the behavior of this variable in the following ways#
+# * Default Value #
+# * Valid & Invalid values #
+# * Scope & Access method #
+# * Data Integrity #
+# #
+# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
+# server-system-variables.html #
+# #
+###############################################################################
+
+--source include/not_embedded.inc
+--source include/load_sysvars.inc
+
+###################################################################
+# START OF slave_transaction_retry_interval TESTS #
+###################################################################
+
+
+#############################################################
+# Save initial value #
+#############################################################
+
+SET @start_global_value = @@global.slave_transaction_retry_interval;
+SELECT @start_global_value;
+
+--echo '#--------------------FN_DYNVARS_149_01-------------------------#'
+###################################################################
+# Display the DEFAULT value of slave_transaction_retry_interval #
+###################################################################
+
+SET @@global.slave_transaction_retry_interval = 50;
+SET @@global.slave_transaction_retry_interval = DEFAULT;
+SELECT @@global.slave_transaction_retry_interval;
+
+--echo '#--------------------FN_DYNVARS_149_02-------------------------#'
+###################################################################
+# Check the DEFAULT value of slave_transaction_retry_interval #
+###################################################################
+
+SET @@global.slave_transaction_retry_interval = DEFAULT;
+SELECT @@global.slave_transaction_retry_interval = 10;
+
+--echo '#--------------------FN_DYNVARS_149_03-------------------------#'
+###############################################################################
+# Change the value of slave_transaction_retry_interval to a valid value for
+# GLOBAL Scope
+###############################################################################
+
+SET @@global.slave_transaction_retry_interval = 0;
+SELECT @@global.slave_transaction_retry_interval;
+SET @@global.slave_transaction_retry_interval = 1;
+SELECT @@global.slave_transaction_retry_interval;
+SET @@global.slave_transaction_retry_interval = 15;
+SELECT @@global.slave_transaction_retry_interval;
+SET @@global.slave_transaction_retry_interval = 1024;
+SELECT @@global.slave_transaction_retry_interval;
+SET @@global.slave_transaction_retry_interval = 2147483648;
+SELECT @@global.slave_transaction_retry_interval;
+SET @@global.slave_transaction_retry_interval = 2147483648*2-1;
+SELECT @@global.slave_transaction_retry_interval;
+SET @@global.slave_transaction_retry_interval = 2147483649*2;
+SELECT @@global.slave_transaction_retry_interval;
+SET @@global.slave_transaction_retry_interval = 4294967295;
+SELECT @@global.slave_transaction_retry_interval;
+
+--echo '#--------------------FN_DYNVARS_149_04-------------------------#'
+##############################################################################
+# Check if variable can be access with session scope #
+##############################################################################
+
+--Error ER_GLOBAL_VARIABLE
+SET @@slave_transaction_retry_interval = 2;
+
+--Error ER_GLOBAL_VARIABLE
+SET @@session.slave_transaction_retry_interval = 3;
+
+--Error ER_GLOBAL_VARIABLE
+SET @@local.slave_transaction_retry_interval = 4;
+
+
+--echo '#------------------FN_DYNVARS_149_05-----------------------#'
+############################################################################
+# Change the value of slave_transaction_retry_interval to an invalid value #
+############################################################################
+
+SET @@global.slave_transaction_retry_interval = -1;
+SELECT @@global.slave_transaction_retry_interval;
+
+SET @@global.slave_transaction_retry_interval = 2147483649*2147483649;
+SELECT @@global.slave_transaction_retry_interval;
+
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.slave_transaction_retry_interval = 65530.34;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.slave_transaction_retry_interval = '100';
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.slave_transaction_retry_interval = 7483649.56;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.slave_transaction_retry_interval = ON;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.slave_transaction_retry_interval = OFF;
+
+--echo '#------------------FN_DYNVARS_149_06-----------------------#'
+####################################################################
+# Check if the value in GLOBAL Table matches value in variable #
+####################################################################
+
+SET @@global.slave_transaction_retry_interval = 3000;
+SELECT @@global.slave_transaction_retry_interval = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='slave_transaction_retry_interval';
+
+
+--echo '#------------------FN_DYNVARS_149_07-----------------------#'
+###########################################################################
+# Check if the value is present in INFORMATION_SCHEMA.SESSION_VARIABLES #
+###########################################################################
+
+SELECT count(VARIABLE_VALUE)
+FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+WHERE VARIABLE_NAME='slave_transaction_retry_interval';
+
+
+--echo '#------------------FN_DYNVARS_149_08-----------------------#'
+####################################################################
+# Check if TRUE and FALSE values can be used on variable #
+####################################################################
+
+SET @@global.slave_transaction_retry_interval = TRUE;
+SELECT @@global.slave_transaction_retry_interval;
+SET @@global.slave_transaction_retry_interval = FALSE;
+SELECT @@global.slave_transaction_retry_interval;
+
+
+--echo '#---------------------FN_DYNVARS_149_09----------------------#'
+###############################################################################
+# Check if accessing variable with and without GLOBAL point to same variable #
+###############################################################################
+
+
+SET @@global.slave_transaction_retry_interval = 60*60;
+SELECT @@slave_transaction_retry_interval = @@global.slave_transaction_retry_interval;
+
+
+--echo '#---------------------FN_DYNVARS_149_10----------------------#'
+###############################################################################
+# Check if slave_transaction_retry_interval can be accessed without @@ sign
+# and scope
+###############################################################################
+
+--Error ER_GLOBAL_VARIABLE
+SET slave_transaction_retry_interval = 2048;
+--Error ER_BAD_FIELD_ERROR
+SELECT slave_transaction_retry_interval;
+
+SELECT @@slave_transaction_retry_interval;
+
+#verifying another another syntax for setting value
+SET global slave_transaction_retry_interval = 99;
+
+####################################
+# Restore initial value #
+####################################
+
+SET @@global.slave_transaction_retry_interval = @start_global_value;
+SELECT @@global.slave_transaction_retry_interval;
+
+########################################################
+# END OF slave_transaction_retry_interval TESTS #
+########################################################
diff --git a/mysql-test/suite/sys_vars/t/sql_mode_basic.test b/mysql-test/suite/sys_vars/t/sql_mode_basic.test
index 1730af50c17..b4841ecd3ff 100644
--- a/mysql-test/suite/sys_vars/t/sql_mode_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_mode_basic.test
@@ -307,11 +307,11 @@ SELECT @@global.sql_mode;
SET @@global.sql_mode = 500000;
SELECT @@global.sql_mode;
-SET @@global.sql_mode = 8589934591;
+SET @@global.sql_mode = 17179869183;
SELECT @@global.sql_mode;
--Error ER_WRONG_VALUE_FOR_VAR
-SET @@global.sql_mode = 8589934592;
+SET @@global.sql_mode = 17179869184;
# use of decimal values
diff --git a/mysql-test/suite/sys_vars/t/sysvars_debug.test b/mysql-test/suite/sys_vars/t/sysvars_debug.test
index fbdcbd683df..71d396e2df3 100644
--- a/mysql-test/suite/sys_vars/t/sysvars_debug.test
+++ b/mysql-test/suite/sys_vars/t/sysvars_debug.test
@@ -4,4 +4,5 @@
--vertical_results
select * from information_schema.system_variables
where variable_name like 'debug%'
+ or variable_name = 'in_predicate_conversion_threshold'
order by variable_name;
diff --git a/mysql-test/suite/sys_vars/t/tcp_keepalive_time.test b/mysql-test/suite/sys_vars/t/tcp_keepalive_time.test
new file mode 100644
index 00000000000..6b40c3d6eab
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/tcp_keepalive_time.test
@@ -0,0 +1,11 @@
+--source include/not_embedded.inc
+# A smoke test for TCP keepalive options
+set global tcp_keepalive_time = 1;
+set global tcp_keepalive_interval =1;
+set global tcp_keepalive_probes=1;
+connect(con1,"127.0.0.1",root,,test,$MASTER_MYPORT,);
+disconnect con1;
+connection default;
+set global tcp_keepalive_time= default;
+set global tcp_keepalive_interval= default;
+set global tcp_keepalive_probes=default;
diff --git a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs.result b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs.result
index 2d5bcfe553d..19e8efb06ad 100644
--- a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs.result
+++ b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs.result
@@ -127,8 +127,8 @@ ERROR HY000: Function or expression 'uuid_short()' cannot be used in the GENERAT
create or replace table t1 (a varchar(1024) as (uuid()) PERSISTENT);
ERROR HY000: Function or expression 'uuid()' cannot be used in the GENERATED ALWAYS AS clause of `a`
# VALUES()
-create or replace table t1 (a varchar(1024), b varchar(1024) as (values(a)));
-ERROR HY000: Function or expression 'values()' cannot be used in the GENERATED ALWAYS AS clause of `b`
+create or replace table t1 (a varchar(1024), b varchar(1024) as (value(a)));
+ERROR HY000: Function or expression 'value()' cannot be used in the GENERATED ALWAYS AS clause of `b`
# VERSION()
create or replace table t1 (a varchar(1024), b varchar(1024) as (version()) PERSISTENT);
ERROR HY000: Function or expression 'version()' cannot be used in the GENERATED ALWAYS AS clause of `b`
diff --git a/mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_main.inc b/mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_main.inc
index 37de02a2b29..52324176694 100644
--- a/mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_main.inc
+++ b/mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_main.inc
@@ -187,7 +187,7 @@ create or replace table t1 (a varchar(1024) as (uuid()) PERSISTENT);
--echo # VALUES()
-- error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
-create or replace table t1 (a varchar(1024), b varchar(1024) as (values(a)));
+create or replace table t1 (a varchar(1024), b varchar(1024) as (value(a)));
--echo # VERSION()
-- error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
diff --git a/mysql-test/suite/versioning/common.inc b/mysql-test/suite/versioning/common.inc
new file mode 100644
index 00000000000..ec3c5ad04ed
--- /dev/null
+++ b/mysql-test/suite/versioning/common.inc
@@ -0,0 +1,118 @@
+--disable_query_log
+source include/have_innodb.inc;
+
+set @@session.time_zone='+00:00';
+select ifnull(max(transaction_id), 0) into @start_trx_id from mysql.transaction_registry;
+set @test_start=now(6);
+
+delimiter ~~;
+create procedure if not exists verify_vtq()
+begin
+ set @i= 0;
+ select
+ @i:= @i + 1 as No,
+ transaction_id > 0 as A,
+ commit_id > transaction_id as B,
+ begin_timestamp > @test_start as C,
+ commit_timestamp >= begin_timestamp as D
+ from mysql.transaction_registry
+ where transaction_id > @start_trx_id;
+ select ifnull(max(transaction_id), 0)
+ into @start_trx_id
+ from mysql.transaction_registry;
+end~~
+
+create function if not exists default_engine()
+returns varchar(255)
+deterministic
+begin
+ declare e varchar(255);
+ select engine from information_schema.engines where support='DEFAULT' into e;
+ return e;
+end~~
+
+create function if not exists non_default_engine()
+returns varchar(255)
+deterministic
+begin
+ if default_engine() = 'InnoDB' then
+ return 'MyISAM';
+ end if;
+ return 'InnoDB';
+end~~
+
+create function if not exists sys_datatype(engine varchar(255))
+returns varchar(255)
+deterministic
+begin
+ if engine = 'InnoDB' then
+ return 'bigint(20) unsigned';
+ elseif engine = 'MyISAM' then
+ return 'timestamp(6)';
+ end if;
+ return NULL;
+end~~
+
+create function if not exists sys_commit_ts(sys_field varchar(255))
+returns varchar(255)
+deterministic
+begin
+ if default_engine() = 'InnoDB' then
+ return concat('vtq_commit_ts(', sys_field, ')');
+ elseif default_engine() = 'MyISAM' then
+ return sys_field;
+ end if;
+ return NULL;
+end~~
+
+create procedure if not exists verify_vtq_dummy(recs int)
+begin
+ declare i int default 1;
+ create temporary table tmp (No int, A bool, B bool, C bool, D bool);
+ while i <= recs do
+ insert into tmp values (i, 1, 1, 1, 1);
+ set i= i + 1;
+ end while;
+ select * from tmp;
+ drop table tmp;
+end~~
+
+create procedure concat_exec2(a varchar(255), b varchar(255))
+begin
+ prepare stmt from concat(a, b);
+ execute stmt;
+ deallocate prepare stmt;
+end~~
+
+create procedure concat_exec3(a varchar(255), b varchar(255), c varchar(255))
+begin
+ prepare stmt from concat(a, b, c);
+ execute stmt;
+ deallocate prepare stmt;
+end~~
+delimiter ;~~
+
+let $default_engine= `select default_engine()`;
+let $non_default_engine= `select non_default_engine()`;
+let $sys_datatype= timestamp(6);
+let $sys_datatype_expl= timestamp(6);
+let $sys_datatype_uc= TIMESTAMP(6);
+let $sys_datatype_expl_uc= TIMESTAMP(6);
+
+let $non_sys_datatype= `select sys_datatype(non_default_engine())`;
+let $non_sys_datatype_uc= `select upper(sys_datatype(non_default_engine()))`;
+let $sys_datatype_null= $sys_datatype NULL DEFAULT NULL;
+let $sys_datatype_default_null= $sys_datatype DEFAULT NULL;
+let $sys_datatype_not_null= $sys_datatype NOT NULL DEFAULT '0000-00-00 00:00:00.000000';
+let $non_sys_datatype_null= $non_sys_datatype NULL;
+
+if ($MTR_COMBINATION_MYISAM)
+{
+ --let $MTR_COMBINATION_TIMESTAMP= 1
+}
+if ($MTR_COMBINATION_TRX_ID)
+{
+ let $sys_datatype_expl= bigint(20) unsigned;
+ let $sys_datatype_expl_uc= BIGINT(20) UNSIGNED;
+}
+--enable_query_log
diff --git a/mysql-test/suite/versioning/common.opt b/mysql-test/suite/versioning/common.opt
new file mode 100644
index 00000000000..412290a7585
--- /dev/null
+++ b/mysql-test/suite/versioning/common.opt
@@ -0,0 +1 @@
+--plugin-load-add=test_versioning
diff --git a/mysql-test/suite/versioning/common_finish.inc b/mysql-test/suite/versioning/common_finish.inc
new file mode 100644
index 00000000000..f8f39d8b4e1
--- /dev/null
+++ b/mysql-test/suite/versioning/common_finish.inc
@@ -0,0 +1,10 @@
+--disable_query_log
+drop procedure verify_vtq;
+drop procedure verify_vtq_dummy;
+drop function default_engine;
+drop function non_default_engine;
+drop function sys_commit_ts;
+drop function sys_datatype;
+drop procedure concat_exec2;
+drop procedure concat_exec3;
+--enable_query_log
diff --git a/mysql-test/suite/handler/disabled.def b/mysql-test/suite/versioning/disabled.def
index 888298bbb09..e0f1483d0ef 100644
--- a/mysql-test/suite/handler/disabled.def
+++ b/mysql-test/suite/versioning/disabled.def
@@ -9,3 +9,7 @@
# Do not use any TAB characters for whitespace.
#
##############################################################################
+ddl : DDL Survival WIP
+vtmd : DDL Survival WIP
+vtmd_show : DDL Survival WIP
+cte: MDEV-14820
diff --git a/mysql-test/suite/versioning/engines.combinations b/mysql-test/suite/versioning/engines.combinations
new file mode 100644
index 00000000000..561c5656929
--- /dev/null
+++ b/mysql-test/suite/versioning/engines.combinations
@@ -0,0 +1,8 @@
+[timestamp]
+default-storage-engine=innodb
+
+[trx_id]
+default-storage-engine=innodb
+
+[myisam]
+default-storage-engine=myisam
diff --git a/mysql-test/suite/versioning/engines.inc b/mysql-test/suite/versioning/engines.inc
new file mode 100644
index 00000000000..c841fece702
--- /dev/null
+++ b/mysql-test/suite/versioning/engines.inc
@@ -0,0 +1 @@
+--source include/have_innodb.inc
diff --git a/mysql-test/suite/versioning/key_type.combinations b/mysql-test/suite/versioning/key_type.combinations
new file mode 100644
index 00000000000..1929aee9a84
--- /dev/null
+++ b/mysql-test/suite/versioning/key_type.combinations
@@ -0,0 +1,2 @@
+[unique]
+[pk]
diff --git a/mysql-test/suite/versioning/key_type.inc b/mysql-test/suite/versioning/key_type.inc
new file mode 100644
index 00000000000..648430771cf
--- /dev/null
+++ b/mysql-test/suite/versioning/key_type.inc
@@ -0,0 +1,23 @@
+--disable_query_log
+if ($MTR_COMBINATION_UNIQUE)
+{
+ set @KEY_TYPE= 'unique';
+}
+if ($MTR_COMBINATION_PK)
+{
+ set @KEY_TYPE= 'primary key';
+}
+
+delimiter ~~;
+create procedure create_table(name varchar(255), cols varchar(255))
+begin
+ if (cols is null or cols = '') then
+ set cols= '';
+ else
+ set cols= concat(', ', cols);
+ end if;
+ set @str= concat('create or replace table ', name, '(id int ', @KEY_TYPE, cols, ') with system versioning');
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+end~~
+delimiter ;~~
+--enable_query_log
diff --git a/mysql-test/suite/versioning/r/alter.result b/mysql-test/suite/versioning/r/alter.result
new file mode 100644
index 00000000000..4057f410856
--- /dev/null
+++ b/mysql-test/suite/versioning/r/alter.result
@@ -0,0 +1,484 @@
+select @@system_versioning_alter_history;
+@@system_versioning_alter_history
+ERROR
+create table t(
+a int
+);
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+alter table t drop system versioning;
+ERROR HY000: Table `t` is not system-versioned
+alter table t add system versioning;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t add column y int;
+ERROR HY000: Not allowed for system-versioned `test`.`t`. Change @@system_versioning_alter_history to proceed with ALTER.
+alter table t engine innodb;
+ERROR HY000: Not allowed for system-versioned `test`.`t`. Change to/from native system versioning engine is prohibited.
+alter table t drop system versioning;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+set system_versioning_alter_history= keep;
+alter table t add system versioning;
+alter table t drop system versioning, drop column row_start;
+ERROR 42000: Can't DROP COLUMN `row_start`; check that it exists
+alter table t drop system versioning;
+alter table t
+add column trx_start bigint(20) unsigned as row start invisible,
+add column trx_end bigint(20) unsigned as row end invisible,
+add period for system_time(trx_start, trx_end),
+add system versioning;
+ERROR HY000: `trx_start` must be of type TIMESTAMP(6) for system-versioned table `t`
+alter table t
+add column trx_start timestamp as row start invisible,
+add column trx_end timestamp as row end invisible,
+add period for system_time(trx_start, trx_end),
+add system versioning;
+ERROR HY000: `trx_start` must be of type TIMESTAMP(6) for system-versioned table `t`
+alter table t
+add column trx_start timestamp(6) not null as row start invisible,
+add column trx_end timestamp(6) not null as row end invisible,
+add period for system_time(trx_start, trx_end),
+add system versioning;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'as row start invisible,
+add column trx_end timestamp(6) not null as row end invi' at line 2
+alter table t
+add column trx_start timestamp(6) as row start invisible,
+add column trx_end timestamp(6) as row end invisible,
+add period for system_time(trx_start, trx_end),
+add system versioning;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `trx_start` timestamp(6) GENERATED ALWAYS AS ROW START INVISIBLE,
+ `trx_end` timestamp(6) GENERATED ALWAYS AS ROW END INVISIBLE,
+ PERIOD FOR SYSTEM_TIME (`trx_start`, `trx_end`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t drop system versioning;
+ERROR HY000: System versioning field `trx_start` exists
+alter table t drop column trx_start, drop column trx_end;
+select row_start from t;
+row_start
+alter table t drop system versioning;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+alter table t add column trx_start timestamp(6) as row start;
+ERROR HY000: Table `t` is not system-versioned
+alter table t add system versioning;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t add column b int;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t add column c int;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t add column d int first;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `d` int(11) DEFAULT NULL,
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t add column e int after d;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `d` int(11) DEFAULT NULL,
+ `e` int(11) DEFAULT NULL,
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t drop column a;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `d` int(11) DEFAULT NULL,
+ `e` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create or replace table t (
+a int,
+row_start timestamp(6) as row start invisible,
+row_end timestamp(6) as row end invisible,
+period for system_time(row_start, row_end))
+with system versioning;
+select * from t for system_time all;
+a
+alter table t drop column row_start;
+ERROR HY000: Wrong parameters for `t`: missing 'DROP COLUMN `row_end`'
+alter table t drop column row_end;
+ERROR HY000: Wrong parameters for `t`: missing 'DROP COLUMN `row_start`'
+alter table t drop column row_start, drop column row_end;
+select * from t for system_time all;
+a
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t drop column row_start;
+ERROR 42000: Can't DROP COLUMN `row_start`; check that it exists
+alter table t drop column row_end;
+ERROR 42000: Can't DROP COLUMN `row_end`; check that it exists
+create or replace table t (
+a int,
+row_start timestamp(6) as row start invisible,
+row_end timestamp(6) as row end invisible,
+period for system_time(row_start, row_end))
+with system versioning;
+select * from t for system_time all;
+a
+alter table t drop column row_start, drop column row_end;
+select * from t for system_time all;
+a
+create or replace table t(
+a int
+);
+insert into t values(1);
+alter table t add system versioning;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+insert into t values(2);
+select * from t for system_time all;
+a
+1
+2
+select * from t;
+a
+1
+2
+update t set a=3 where a=1;
+select * from t;
+a
+3
+2
+select * from t for system_time all;
+a
+3
+2
+1
+select row_start from t where a=3 into @tm;
+alter table t add column b int;
+select @tm=row_start from t where a=3;
+@tm=row_start
+1
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+select * from t;
+a b
+3 NULL
+2 NULL
+select * from t for system_time all;
+a b
+3 NULL
+2 NULL
+1 NULL
+alter table t drop system versioning;
+select * from t;
+a b
+3 NULL
+2 NULL
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+alter table t modify a int with system versioning;
+ERROR HY000: Table `t` is not system-versioned
+alter table t modify a int without system versioning;
+ERROR HY000: Table `t` is not system-versioned
+alter table t add system versioning;
+alter table t modify a int without system versioning;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL WITHOUT SYSTEM VERSIONING,
+ `b` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t modify a int with system versioning;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create or replace table t(
+a int
+) engine=innodb;
+alter table t
+add column trx_start timestamp(6) as row start invisible,
+add column trx_end timestamp(6) as row end invisible,
+add period for system_time(trx_start, trx_end),
+add system versioning;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `trx_start` timestamp(6) GENERATED ALWAYS AS ROW START INVISIBLE,
+ `trx_end` timestamp(6) GENERATED ALWAYS AS ROW END INVISIBLE,
+ PERIOD FOR SYSTEM_TIME (`trx_start`, `trx_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+# Issue #211: drop of system columns required before drop system versioning
+alter table t drop column trx_start, drop column trx_end;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t drop system versioning;
+insert into t values(1);
+call verify_vtq;
+No A B C D
+alter table t
+add column trx_start bigint(20) unsigned as row start invisible,
+add column trx_end bigint(20) unsigned as row end invisible,
+add period for system_time(trx_start, trx_end),
+add system versioning;
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `trx_start` bigint(20) unsigned GENERATED ALWAYS AS ROW START INVISIBLE,
+ `trx_end` bigint(20) unsigned GENERATED ALWAYS AS ROW END INVISIBLE,
+ PERIOD FOR SYSTEM_TIME (`trx_start`, `trx_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t drop column trx_start, drop column trx_end;
+call verify_vtq;
+No A B C D
+alter table t drop system versioning, algorithm=copy;
+call verify_vtq;
+No A B C D
+alter table t add system versioning, algorithm=copy;
+call verify_vtq;
+No A B C D
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+update t set a= 2;
+select * from t for system_time all;
+a
+2
+1
+alter table t add column b int, algorithm=copy;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+select * from t;
+a b
+2 NULL
+call verify_vtq;
+No A B C D
+alter table t drop column b, algorithm=copy;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+select * from t for system_time all;
+a
+2
+1
+call verify_vtq;
+No A B C D
+alter table t drop system versioning, algorithm=copy;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+call verify_vtq;
+No A B C D
+create or replace table t (a int);
+insert t values (1),(2),(3),(4);
+alter table t add b int auto_increment null unique;
+select * from t;
+a b
+1 1
+2 2
+3 3
+4 4
+drop table t;
+create or replace table t (a int) with system versioning engine=innodb;
+insert into t values (1), (2), (3);
+delete from t where a<3;
+alter table t add b int not null unique;
+Got one of the listed errors
+alter table t add b int auto_increment unique;
+Got one of the listed errors
+alter table t add b int auto_increment null unique;
+select * from t;
+a b
+3 1
+select * from t for system_time all;
+a b
+1 NULL
+2 NULL
+3 1
+insert into t values (4, 0);
+select * from t for system_time all;
+a b
+1 NULL
+2 NULL
+3 1
+4 4
+create or replace table t (a int) with system versioning;
+insert into t values (1), (2), (3);
+delete from t where a<3;
+alter table t add b int not null unique;
+Got one of the listed errors
+alter table t add b int auto_increment unique;
+Got one of the listed errors
+alter table t add b int auto_increment null unique;
+select * from t;
+a b
+3 1
+select * from t for system_time all;
+a b
+1 NULL
+2 NULL
+3 1
+insert into t values (4, 0);
+select * from t for system_time all;
+a b
+1 NULL
+2 NULL
+3 1
+4 2
+create or replace table t (a int, b int primary key, c int unique) with system versioning;
+insert t values (1,2,3),(1,3,4),(1,4,5);
+alter table t drop system versioning;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `b` int(11) NOT NULL,
+ `c` int(11) DEFAULT NULL,
+ PRIMARY KEY (`b`),
+ UNIQUE KEY `c` (`c`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+select * from t;
+a b c
+1 2 3
+1 3 4
+1 4 5
+create or replace table t (
+a int,
+row_start timestamp(6) as row start invisible,
+row_end timestamp(6) as row end invisible,
+period for system_time(row_start, row_end)
+) with system versioning;
+alter table t change column row_start asdf timestamp(6);
+ERROR HY000: Can not change system versioning field `row_start`
+insert into t values (1);
+alter table t modify column row_start bigint unsigned;
+ERROR HY000: Can not change system versioning field `row_start`
+set system_versioning_alter_history= SURVIVE;
+ERROR 42000: Variable 'system_versioning_alter_history' can't be set to the value of 'SURVIVE'
+set system_versioning_alter_history= 'DROP';
+ERROR 42000: Variable 'system_versioning_alter_history' can't be set to the value of 'DROP'
+create or replace table t (a int) with system versioning;
+alter table t add system versioning;
+ERROR HY000: Table `t` is already system-versioned
+alter table t add system versioning, drop system versioning;
+ERROR HY000: Table `t` is already system-versioned
+set @@system_versioning_alter_history=keep;
+create or replace table t(x int, y int) with system versioning engine=innodb;
+alter table t modify y int without system versioning;
+insert into t values(1, 1);
+update t set y=2;
+# MDEV-14681 Bogus ER_UNSUPPORTED_EXTENSION
+create or replace table t1 (pk int auto_increment unique) with system versioning;
+insert into t1 values (1);
+delete from t1;
+alter table t1 engine=myisam;
+# MDEV-14692 crash in MDL_context::upgrade_shared_lock()
+create or replace temporary table t (a int);
+alter table t change column if exists b c bigint unsigned generated always as row start;
+ERROR HY000: System versioning prohibited for TEMPORARY tables
+alter table t change column if exists b c bigint unsigned generated always as row end;
+ERROR HY000: System versioning prohibited for TEMPORARY tables
+alter table t add system versioning;
+ERROR HY000: System versioning prohibited for TEMPORARY tables
+drop table t;
+# MDEV-14744 trx_id-based and transaction-based mixup in assertion
+create or replace table t (c text) engine=innodb with system versioning;
+show create table t;
+Table Create Table
+t CREATE TABLE `t` (
+ `c` text DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+alter table t add fulltext key (c);
+Warnings:
+Warning 124 InnoDB rebuilding table to add column FTS_DOC_ID
+create or replace table t (a int) with system versioning;
+alter table t drop column a;
+ERROR HY000: Table `t` must have at least one versioned column
+alter table t drop column a, drop column a;
+ERROR 42000: Can't DROP COLUMN `a`; check that it exists
+create or replace table t1 (row_start int);
+alter table t1 with system versioning;
+ERROR 42S21: Duplicate column name 'row_start'
+create or replace table t1 (row_end int);
+alter table t1 with system versioning;
+ERROR 42S21: Duplicate column name 'row_end'
+create or replace table t1 (a int, row_start int) with system versioning;
+ERROR 42S21: Duplicate column name 'row_start'
+create or replace table t1 (a int) with system versioning;
+set statement system_versioning_alter_history=keep for
+alter table t1 add column row_start int;
+ERROR 42S21: Duplicate column name 'row_start'
+set statement system_versioning_alter_history=keep for
+alter table t1 add column row_start timestamp(6);
+ERROR 42S21: Duplicate column name 'row_start'
+# MDEV-14798 Add, drop system versioning semantic and syntax
+create or replace table t (a int) with system versioning;
+alter table t add period for system_time(sys_trx_start, sys_trx_end);
+ERROR HY000: Table `t` is already system-versioned
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/r/auto_increment.result b/mysql-test/suite/versioning/r/auto_increment.result
new file mode 100644
index 00000000000..1f43595848b
--- /dev/null
+++ b/mysql-test/suite/versioning/r/auto_increment.result
@@ -0,0 +1,119 @@
+create procedure test_01(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('
+ create table t1(
+ id int unsigned auto_increment primary key,
+ x int unsigned,
+ y int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+set @str= concat('
+ create table t2(
+ id int unsigned auto_increment primary key,
+ x int unsigned,
+ y int unsigned)
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+insert into t1(x, y) values(1, 11);
+insert into t2(x, y) values(1, 11);
+insert into t1(x, y) values(2, 12);
+insert into t2(x, y) values(2, 12);
+insert into t1(x, y) values(3, 13);
+insert into t2(x, y) values(3, 13);
+insert into t1(x, y) values(4, 14);
+insert into t2(x, y) values(4, 14);
+insert into t1(x, y) values(5, 15);
+insert into t2(x, y) values(5, 15);
+insert into t1(x, y) values(6, 16);
+insert into t2(x, y) values(6, 16);
+insert into t1(x, y) values(7, 17);
+insert into t2(x, y) values(7, 17);
+insert into t1(x, y) values(8, 18);
+insert into t2(x, y) values(8, 18);
+insert into t1(x, y) values(9, 19);
+insert into t2(x, y) values(9, 19);
+select t1.x = t2.x and t1.y = t2.y as A, t1.x, t1.y, t2.x, t2.y from t1 inner join t2 on t1.id = t2.id;
+delete from t1 where x = 2;
+delete from t2 where x = 2;
+select t1.x = t2.x and t1.y = t2.y as A, t1.x, t1.y, t2.x, t2.y from t1 inner join t2 on t1.id = t2.id;
+delete from t1 where x > 7;
+delete from t2 where x > 7;
+select t1.x = t2.x and t1.y = t2.y as A, t1.x, t1.y, t2.x, t2.y from t1 inner join t2 on t1.id = t2.id;
+drop table t1;
+drop table t2;
+end~~
+call test_01('timestamp(6)', 'myisam', 'sys_end');
+A x y x y
+1 1 11 1 11
+1 2 12 2 12
+1 3 13 3 13
+1 4 14 4 14
+1 5 15 5 15
+1 6 16 6 16
+1 7 17 7 17
+1 8 18 8 18
+1 9 19 9 19
+A x y x y
+1 1 11 1 11
+1 3 13 3 13
+1 4 14 4 14
+1 5 15 5 15
+1 6 16 6 16
+1 7 17 7 17
+1 8 18 8 18
+1 9 19 9 19
+A x y x y
+1 1 11 1 11
+1 3 13 3 13
+1 4 14 4 14
+1 5 15 5 15
+1 6 16 6 16
+1 7 17 7 17
+call test_01('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+A x y x y
+1 1 11 1 11
+1 2 12 2 12
+1 3 13 3 13
+1 4 14 4 14
+1 5 15 5 15
+1 6 16 6 16
+1 7 17 7 17
+1 8 18 8 18
+1 9 19 9 19
+A x y x y
+1 1 11 1 11
+1 3 13 3 13
+1 4 14 4 14
+1 5 15 5 15
+1 6 16 6 16
+1 7 17 7 17
+1 8 18 8 18
+1 9 19 9 19
+A x y x y
+1 1 11 1 11
+1 3 13 3 13
+1 4 14 4 14
+1 5 15 5 15
+1 6 16 6 16
+1 7 17 7 17
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+3 1 1 1 1
+4 1 1 1 1
+5 1 1 1 1
+6 1 1 1 1
+7 1 1 1 1
+8 1 1 1 1
+9 1 1 1 1
+10 1 1 1 1
+11 1 1 1 1
+drop procedure test_01;
diff --git a/mysql-test/suite/versioning/r/commit_id.result b/mysql-test/suite/versioning/r/commit_id.result
new file mode 100644
index 00000000000..e2bd0f21b64
--- /dev/null
+++ b/mysql-test/suite/versioning/r/commit_id.result
@@ -0,0 +1,98 @@
+create table t1(
+id int auto_increment primary key,
+sys_trx_start bigint unsigned as row start invisible,
+sys_trx_end bigint unsigned as row end invisible,
+period for system_time (sys_trx_start, sys_trx_end)
+)
+with system versioning
+engine innodb;
+insert into t1 values ();
+set @ts0= now(6);
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx0;
+select transaction_id = @tx0 from mysql.transaction_registry
+order by transaction_id desc limit 1;
+transaction_id = @tx0
+1
+set @ts1= now(6);
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx1;
+select transaction_id = @tx1 from mysql.transaction_registry
+order by transaction_id desc limit 1;
+transaction_id = @tx1
+1
+set @ts2= now(6);
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx2;
+select transaction_id = @tx2 from mysql.transaction_registry
+order by transaction_id desc limit 1;
+transaction_id = @tx2
+1
+set @ts3= now(6);
+select
+vtq_trx_id(@ts0) < @tx0 as A,
+vtq_trx_id(@ts0, true) = @tx0 as B,
+vtq_trx_id(@ts1) = @tx0 as C,
+vtq_trx_id(@ts1, true) = @tx1 as D,
+vtq_trx_id(@ts2) = @tx1 as E,
+vtq_trx_id(@ts2, true) = @tx2 as F,
+vtq_trx_id(@ts3) = @tx2 as G,
+vtq_trx_id(@ts3, true) is null as H;
+A B C D E F G H
+1 1 1 1 1 1 1 1
+select
+vtq_commit_id(@ts0) < @tx0 as A,
+vtq_commit_id(@ts0, true) = vtq_commit_id(null, @tx0) as B,
+vtq_commit_id(@ts1) = vtq_commit_id(null, @tx0) as C,
+vtq_commit_id(@ts1, true) = vtq_commit_id(null, @tx1) as D,
+vtq_commit_id(@ts2) = vtq_commit_id(null, @tx1) as E,
+vtq_commit_id(@ts2, true) = vtq_commit_id(null, @tx2) as F,
+vtq_commit_id(@ts3) = vtq_commit_id(null, @tx2) as G,
+vtq_commit_id(@ts3, true) is null as H;
+A B C D E F G H
+1 1 1 1 1 1 1 1
+select
+vtq_trx_sees(@tx1, @tx0) as A,
+not vtq_trx_sees(@tx0, @tx1) as B,
+vtq_trx_sees_eq(@tx1, @tx1) as C,
+not vtq_trx_sees(@tx1, @tx1) as D,
+vtq_trx_sees(@tx2, 0) as E,
+vtq_trx_sees(0, @tx2) is null as F,
+vtq_trx_sees(-1, @tx2) as H;
+A B C D E F H
+1 1 1 1 1 1 1
+set transaction isolation level read uncommitted;
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx3;
+select isolation_level = 'READ-UNCOMMITTED' from mysql.transaction_registry where transaction_id = @tx3;
+isolation_level = 'READ-UNCOMMITTED'
+1
+set transaction isolation level read committed;
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx4;
+select isolation_level = 'READ-COMMITTED' from mysql.transaction_registry where transaction_id = @tx4;
+isolation_level = 'READ-COMMITTED'
+1
+set transaction isolation level serializable;
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx5;
+select isolation_level = 'SERIALIZABLE' from mysql.transaction_registry where transaction_id = @tx5;
+isolation_level = 'SERIALIZABLE'
+1
+set transaction isolation level repeatable read;
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx6;
+select isolation_level = 'REPEATABLE-READ' from mysql.transaction_registry where transaction_id = @tx6;
+isolation_level = 'REPEATABLE-READ'
+1
+drop table t1;
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+3 1 1 1 1
+4 1 1 1 1
+5 1 1 1 1
+6 1 1 1 1
+7 1 1 1 1
+8 1 1 1 1
diff --git a/mysql-test/suite/versioning/r/create.result b/mysql-test/suite/versioning/r/create.result
new file mode 100644
index 00000000000..7fe1db5964f
--- /dev/null
+++ b/mysql-test/suite/versioning/r/create.result
@@ -0,0 +1,470 @@
+drop table if exists t1;
+create table t1 (
+x1 int unsigned,
+Sys_start SYS_DATATYPE as row start invisible comment 'start',
+Sys_end SYS_DATATYPE as row end invisible comment 'end',
+period for system_time (Sys_start, Sys_end)
+) with system versioning;
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `x1` int(10) unsigned DEFAULT NULL,
+ `Sys_start` SYS_DATATYPE GENERATED ALWAYS AS ROW START INVISIBLE COMMENT 'start',
+ `Sys_end` SYS_DATATYPE GENERATED ALWAYS AS ROW END INVISIBLE COMMENT 'end',
+ PERIOD FOR SYSTEM_TIME (`Sys_start`, `Sys_end`)
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+select table_catalog,table_schema,table_name,table_type,version,table_rows,avg_row_length,data_free,auto_increment,check_time,table_collation,checksum,create_options,table_comment from information_schema.tables where table_name='t1';
+table_catalog def
+table_schema test
+table_name t1
+table_type SYSTEM VERSIONED
+version 10
+table_rows 0
+avg_row_length 0
+data_free 0
+auto_increment NULL
+check_time NULL
+table_collation latin1_swedish_ci
+checksum NULL
+create_options
+table_comment
+select table_catalog,table_schema,table_name,column_name,ordinal_position,column_default,character_maximum_length,character_octet_length,character_set_name,collation_name,column_key,extra,column_comment,is_generated,generation_expression from information_schema.columns where table_name='t1';
+table_catalog def
+table_schema test
+table_name t1
+column_name x1
+ordinal_position 1
+column_default NULL
+character_maximum_length NULL
+character_octet_length NULL
+character_set_name NULL
+collation_name NULL
+column_key
+extra
+column_comment
+is_generated NEVER
+generation_expression NULL
+table_catalog def
+table_schema test
+table_name t1
+column_name Sys_start
+ordinal_position 2
+column_default NULL
+character_maximum_length NULL
+character_octet_length NULL
+character_set_name NULL
+collation_name NULL
+column_key
+extra INVISIBLE
+column_comment start
+is_generated ALWAYS
+generation_expression ROW START
+table_catalog def
+table_schema test
+table_name t1
+column_name Sys_end
+ordinal_position 3
+column_default NULL
+character_maximum_length NULL
+character_octet_length NULL
+character_set_name NULL
+collation_name NULL
+column_key
+extra INVISIBLE
+column_comment end
+is_generated ALWAYS
+generation_expression ROW END
+# Implicit fields test
+create or replace table t1 (
+x2 int unsigned
+) with system versioning;
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `x2` int(10) unsigned DEFAULT NULL
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create or replace table t1 (
+x3 int unsigned,
+Sys_start SYS_DATATYPE as row start invisible,
+Sys_end SYS_DATATYPE as row end invisible,
+period for system_time (x, Sys_end)
+) with system versioning;
+ERROR HY000: PERIOD FOR SYSTEM_TIME must use columns `Sys_start` and `Sys_end`
+create or replace table t1 (
+x4 int unsigned,
+Sys_start SYS_DATATYPE as row start invisible,
+Sys_end2 SYS_DATATYPE as row end invisible,
+period for system_time (Sys_start, Sys_end)
+) with system versioning;
+ERROR HY000: PERIOD FOR SYSTEM_TIME must use columns `Sys_start` and `Sys_end2`
+create or replace table t1 (
+x5 int unsigned,
+Sys_start SYS_DATATYPE as row start invisible,
+Sys_end SYS_DATATYPE as row end invisible,
+period for system_time (Sys_start, x)
+) with system versioning;
+ERROR HY000: PERIOD FOR SYSTEM_TIME must use columns `Sys_start` and `Sys_end`
+create or replace table t1 (
+x6 int unsigned,
+period for system_time (Sys_start, Sys_end)
+) with system versioning;
+ERROR HY000: Wrong parameters for `t1`: missing 'AS ROW START'
+create or replace table t1 (
+x7 int unsigned,
+Sys_start SYS_DATATYPE as row start invisible,
+Sys_end SYS_DATATYPE as row end invisible,
+period for system_time (Sys_start, Sys_end)
+);
+ERROR HY000: Wrong parameters for `t1`: missing 'WITH SYSTEM VERSIONING'
+create or replace table t1 (
+x8 int unsigned,
+Sys_start SYS_DATATYPE as row start invisible,
+Sys_end SYS_DATATYPE as row end invisible,
+period for system_time (sys_insert, sys_remove)
+) with system versioning;
+ERROR HY000: PERIOD FOR SYSTEM_TIME must use columns `Sys_start` and `Sys_end`
+create or replace table t1 (
+x9 int unsigned,
+Sys_start SYS_DATATYPE as row start invisible,
+Sys_end SYS_DATATYPE as row end invisible,
+period for system_time (Sys_start, Sys_end)
+);
+ERROR HY000: Wrong parameters for `t1`: missing 'WITH SYSTEM VERSIONING'
+create or replace table t1 (
+x10 int unsigned,
+Sys_start SYS_DATATYPE as row start invisible,
+Sys_end SYS_DATATYPE as row end invisible,
+period for system_time (Sys_start, Sys_start)
+);
+ERROR HY000: Wrong parameters for `t1`: missing 'WITH SYSTEM VERSIONING'
+create or replace table t1 (
+x11 int unsigned,
+Sys_start bigint unsigned as row start invisible,
+Sys_end timestamp(6) as row end invisible,
+period for system_time (Sys_start, Sys_end)
+) with system versioning;
+Got one of the listed errors
+create or replace table t1 (
+x12 int unsigned,
+Sys_start timestamp(6) as row start invisible,
+Sys_end bigint unsigned as row end invisible,
+period for system_time (Sys_start, Sys_end)
+) with system versioning;
+Got one of the listed errors
+create or replace table t1 (
+x13 int unsigned,
+Sys_start bigint as row start invisible,
+Sys_end bigint unsigned as row end invisible,
+period for system_time (Sys_start, Sys_end)
+) with system versioning engine innodb;
+ERROR HY000: `Sys_start` must be of type TIMESTAMP(6) for system-versioned table `t1`
+create or replace table t1 (
+x14 int unsigned,
+Sys_start bigint unsigned as row start invisible,
+Sys_end bigint as row end invisible,
+period for system_time (Sys_start, Sys_end)
+) with system versioning engine innodb;
+ERROR HY000: `Sys_end` must be of type BIGINT(20) UNSIGNED for system-versioned table `t1`
+create or replace table t1 (
+x15 int with system versioning,
+B int
+);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `x15` int(11) DEFAULT NULL,
+ `B` int(11) DEFAULT NULL WITHOUT SYSTEM VERSIONING
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create or replace table t1 (
+x16 int with system versioning,
+B int
+) with system versioning;
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `x16` int(11) DEFAULT NULL,
+ `B` int(11) DEFAULT NULL
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create or replace table t1 (
+x17 int,
+B int without system versioning
+);
+create or replace table t1 (
+x18 int,
+B int without system versioning
+) with system versioning;
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `x18` int(11) DEFAULT NULL,
+ `B` int(11) DEFAULT NULL WITHOUT SYSTEM VERSIONING
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create or replace table t1 (
+x19 int with system versioning,
+B int without system versioning
+);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `x19` int(11) DEFAULT NULL,
+ `B` int(11) DEFAULT NULL WITHOUT SYSTEM VERSIONING
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create or replace table t1 (
+x20 int with system versioning,
+B int without system versioning
+) with system versioning;
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `x20` int(11) DEFAULT NULL,
+ `B` int(11) DEFAULT NULL WITHOUT SYSTEM VERSIONING
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create or replace table t1 (
+x21 int without system versioning
+);
+create or replace table t1 (
+x22 int without system versioning
+) with system versioning;
+ERROR HY000: Table `t1` must have at least one versioned column
+create or replace table t1 (a int) with system versioning;
+create table tt1 like t1;
+show create table tt1;
+Table Create Table
+tt1 CREATE TABLE `tt1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+drop table tt1;
+create temporary table tt1 like t1;
+Warnings:
+Warning 1105 System versioning is stripped from temporary `test.tt1`
+# Temporary is stripped from versioning
+show create table tt1;
+Table Create Table
+tt1 CREATE TEMPORARY TABLE `tt1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1
+# CREATE TABLE ... SELECT
+create or replace table t1 (x23 int) with system versioning;
+create or replace table t0(
+y int,
+st SYS_DATATYPE as row start,
+en SYS_DATATYPE as row end,
+period for system_time (st, en)
+) with system versioning;
+## For non-versioned table:
+### 1. invisible fields are not included
+create or replace table t2 as select * from t1;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `x23` int(11) DEFAULT NULL
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1
+### 2. all visible fields are included
+create or replace table t3 as select * from t0;
+select * from t0;
+y st en
+show create table t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `y` int(11) DEFAULT NULL,
+ `st` SYS_DATATYPE,
+ `en` SYS_DATATYPE
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1
+## For versioned table
+insert into t1 values (1);
+select row_start from t1 into @row_start;
+insert into t0 (y) values (2);
+select st from t0 into @st;
+create or replace table t2 with system versioning as select * from t1;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `x23` int(11) DEFAULT NULL
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+#### invisible fields are not copied
+select * from t2;
+x23
+1
+select * from t2 where row_start <= @row_start;
+x23
+### 2. source table with visible system fields, target with invisible
+create or replace table t3 with system versioning as select * from t0;
+show create table t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `y` int(11) DEFAULT NULL,
+ `st` SYS_DATATYPE,
+ `en` SYS_DATATYPE
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+select * from t3 where y > 2;
+y st en
+select y from t3 where st = @st and row_start > @st;
+y
+2
+### 3. source and target table with visible system fields
+create or replace table t3 (
+st SYS_DATATYPE as row start invisible,
+en SYS_DATATYPE as row end invisible,
+period for system_time (st, en)
+) with system versioning as select * from t0;
+show create table t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `y` int(11) DEFAULT NULL,
+ `st` SYS_DATATYPE GENERATED ALWAYS AS ROW START INVISIBLE,
+ `en` SYS_DATATYPE GENERATED ALWAYS AS ROW END INVISIBLE,
+ PERIOD FOR SYSTEM_TIME (`st`, `en`)
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+select y from t3;
+y
+2
+select y from t3 where st = @st;
+y
+### 4. system fields not or wrongly selected
+create or replace table t3 with system versioning select x23 from t1;
+show create table t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `x23` int(11) DEFAULT NULL
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+select * from t3;
+x23
+1
+create or replace table t3 with system versioning select x23, row_start from t1;
+ERROR HY000: Wrong parameters for `t3`: missing 'AS ROW END'
+create or replace table t3 with system versioning select x23, row_end from t1;
+ERROR HY000: Wrong parameters for `t3`: missing 'AS ROW START'
+# Prepare checking for historical row
+delete from t1;
+select row_end from t1 for system_time all into @row_end;
+delete from t0;
+select en from t0 for system_time all into @en;
+## Combinations of versioned + non-versioned
+create or replace table t2 (y int);
+insert into t2 values (3);
+create or replace table t3 with system versioning select * from t1 for system_time all, t2;
+show create table t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `x23` int(11) DEFAULT NULL,
+ `y` int(11) DEFAULT NULL
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+select * from t3 for system_time all;
+x23 y
+1 3
+select * from t3 for system_time all where row_start = @row_start and row_end = @row_end;
+x23 y
+create or replace table t2 like t0;
+insert into t2 (y) values (1), (2);
+delete from t2 where y = 2;
+create or replace table t3 select * from t2 for system_time all;
+select st, en from t3 where y = 1 into @st, @en;
+select y from t2 for system_time all where st = @st and en = @en;
+y
+1
+select st, en from t3 where y = 2 into @st, @en;
+select y from t2 for system_time all where st = @st and en = @en;
+y
+2
+## Default engine detection
+create or replace table t1 (x25 int) with system versioning engine NON_DEFAULT_ENGINE;
+create or replace table t2
+as select x25, row_start, row_end from t1 for system_time all;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `x25` int(11) DEFAULT NULL
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1
+create or replace table t2 with system versioning
+as select x25, row_start, row_end from t1;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `x25` int(11) DEFAULT NULL
+) ENGINE=NON_DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create or replace table t1 (
+x26 int,
+st bigint unsigned as row start,
+en bigint unsigned as row end,
+period for system_time (st, en)
+) with system versioning engine innodb;
+create or replace table t2 with system versioning engine myisam
+as select * from t1;
+ERROR HY000: `st` must be of type TIMESTAMP(6) for system-versioned table `t2`
+create or replace table t1 (x27 int, id int) with system versioning engine NON_DEFAULT_ENGINE;
+create or replace table t2 (b int, id int);
+create or replace table t3 with system versioning
+as select t2.b, t1.x27, t1.row_start, t1.row_end from t2 inner join t1 on t2.id=t1.id;
+show create table t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `b` int(11) DEFAULT NULL,
+ `x27` int(11) DEFAULT NULL
+) ENGINE=NON_DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+## Errors
+create or replace temporary table t (x28 int) with system versioning;
+ERROR HY000: System versioning prohibited for TEMPORARY tables
+create or replace table t1 (
+x29 int unsigned,
+Sys_start0 timestamp(6) as row start invisible,
+Sys_start timestamp(6) as row start invisible,
+Sys_end timestamp(6) as row end invisible,
+period for system_time (Sys_start, Sys_end)
+) with system versioning;
+ERROR HY000: Duplicate ROW START column `Sys_start`
+create or replace table t1 (
+x29 int unsigned,
+Sys_end0 timestamp(6) as row end invisible,
+Sys_start timestamp(6) as row start invisible,
+Sys_end timestamp(6) as row end invisible,
+period for system_time (Sys_start, Sys_end)
+) with system versioning;
+ERROR HY000: Duplicate ROW END column `Sys_end`
+## System fields detection
+create or replace table t1 (x30 int) with system versioning;
+create or replace table t2 (
+y int,
+st SYS_DATATYPE as row start invisible,
+en SYS_DATATYPE as row end invisible,
+period for system_time (st, en)
+) with system versioning;
+create or replace table t3
+as select x30, y, row_start, row_end, st, en from t1, t2;
+show create table t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `x30` int(11) DEFAULT NULL,
+ `y` int(11) DEFAULT NULL,
+ `st` SYS_DATATYPE NOT NULL INVISIBLE DEFAULT '0000-00-00 00:00:00.000000',
+ `en` SYS_DATATYPE NOT NULL INVISIBLE DEFAULT '0000-00-00 00:00:00.000000'
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1
+create or replace table t3 (
+y int,
+st SYS_DATATYPE as row start invisible,
+en SYS_DATATYPE as row end invisible,
+period for system_time (st, en)
+) with system versioning
+as select x30, y, row_start, row_end, st, en from t1, t2;
+show create table t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `x30` int(11) DEFAULT NULL,
+ `y` int(11) DEFAULT NULL,
+ `st` SYS_DATATYPE GENERATED ALWAYS AS ROW START INVISIBLE,
+ `en` SYS_DATATYPE GENERATED ALWAYS AS ROW END INVISIBLE,
+ PERIOD FOR SYSTEM_TIME (`st`, `en`)
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+# MDEV-14828 Server crashes in JOIN::prepare / setup_fields on 2nd execution of PS [#437]
+create or replace table t1 (x int) with system versioning;
+prepare bad from 'create or replace table t2 with system versioning as select * from t1';
+execute bad;
+execute bad;
+execute bad;
+execute bad;
+execute bad;
+execute bad;
+execute bad;
+execute bad;
+# bad is good.
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/r/cte.result b/mysql-test/suite/versioning/r/cte.result
new file mode 100644
index 00000000000..fda5e086be2
--- /dev/null
+++ b/mysql-test/suite/versioning/r/cte.result
@@ -0,0 +1,118 @@
+set default_storage_engine=innodb;
+create or replace table dept (
+dept_id int(10) primary key,
+name varchar(100)
+)
+with system versioning;
+create or replace table emp (
+emp_id int(10) primary key,
+dept_id int(10) not null,
+name varchar(100) not null,
+mgr int(10),
+salary int(10) not null,
+constraint `dept-emp-fk`
+ foreign key (dept_id) references dept (dept_id)
+on delete cascade
+on update restrict,
+constraint `mgr-fk`
+ foreign key (mgr) references emp (emp_id)
+on delete restrict
+on update restrict
+)
+with system versioning;
+insert into dept (dept_id, name) values (10, "accounting");
+insert into emp (emp_id, name, salary, dept_id, mgr) values
+(1, "bill", 1000, 10, null),
+(20, "john", 500, 10, 1),
+(30, "jane", 750, 10,1 );
+select max(sys_trx_start) into @ts_1 from emp;
+update emp set mgr=30 where name ="john";
+select sys_trx_start into @ts_2 from emp where name="john";
+/* All report to 'Bill' */
+with recursive
+ancestors
+as
+(
+select e.emp_id, e.name, e.mgr, e.salary
+from emp for system_time as of timestamp @ts_1 as e
+where name = 'bill'
+ union
+select e.emp_id, e.name, e.mgr, e.salary
+from emp for system_time as of timestamp @ts_1 as e,
+ancestors as a
+where e.mgr = a.emp_id
+)
+select * from ancestors;
+emp_id name mgr salary
+1 bill NULL 1000
+20 john 1 500
+30 jane 1 750
+/* Expected 3 rows */
+with recursive
+ancestors
+as
+(
+select e.emp_id, e.name, e.mgr, e.salary
+from emp for system_time as of timestamp @ts_2 as e
+where name = 'bill'
+ union
+select e.emp_id, e.name, e.mgr, e.salary
+from emp for system_time as of timestamp @ts_2 as e,
+ancestors as a
+where e.mgr = a.emp_id
+)
+select * from ancestors;
+emp_id name mgr salary
+1 bill NULL 1000
+30 jane 1 750
+20 john 30 500
+create or replace table emp ( emp_id int, name varchar(127), mgr int) with system versioning;
+create or replace table addr ( emp_id int, address varchar(100)) with system versioning;
+insert emp values (1, 'bill', 0), (2, 'bill', 1), (3, 'kate', 1);
+insert addr values (1, 'Moscow'), (2, 'New York'), (3, 'London');
+set @ts=now(6);
+delete from emp;
+delete from addr;
+with recursive
+ancestors
+as
+(
+select e.emp_id, e.name, e.mgr
+from emp for system_time as of timestamp @ts as e
+where name = 'bill'
+ union
+select ee.emp_id, ee.name, ee.mgr
+from emp for system_time as of timestamp @ts as ee, ancestors as a
+where ee.mgr = a.emp_id
+)
+select * from ancestors;
+emp_id name mgr
+1 bill 0
+2 bill 1
+3 kate 1
+insert emp values (4, 'john', 1);
+insert addr values (4, 'Paris');
+with ancestors as (select * from emp natural join addr) select * from ancestors;
+emp_id name mgr address
+4 john 1 Paris
+with ancestors as (select * from emp natural join addr) select * from ancestors for system_time all;
+emp_id name mgr address
+1 bill 0 Moscow
+2 bill 1 New York
+3 kate 1 London
+4 john 1 Paris
+with ancestors as (select * from (select * from emp natural join addr) for system_time all as t) select * from ancestors;
+emp_id name mgr address
+1 bill 0 Moscow
+2 bill 1 New York
+3 kate 1 London
+4 john 1 Paris
+select * from (select * from emp natural join addr) for system_time all as t;
+emp_id name mgr address
+1 bill 0 Moscow
+2 bill 1 New York
+3 kate 1 London
+4 john 1 Paris
+drop table emp;
+drop table dept;
+drop table addr;
diff --git a/mysql-test/suite/versioning/r/ddl.result b/mysql-test/suite/versioning/r/ddl.result
new file mode 100644
index 00000000000..a4323b89ee1
--- /dev/null
+++ b/mysql-test/suite/versioning/r/ddl.result
@@ -0,0 +1,211 @@
+set @@session.time_zone='+00:00';
+select ifnull(max(transaction_id), 0) into @start_trx_id from mysql.transaction_registry;
+set @test_start=now(6);
+create procedure if not exists verify_vtq()
+begin
+set @i= 0;
+select
+@i:= @i + 1 as No,
+transaction_id > 0 as A,
+commit_id > transaction_id as B,
+begin_timestamp > @test_start as C,
+commit_timestamp >= begin_timestamp as D
+from mysql.transaction_registry
+where transaction_id > @start_trx_id;
+select ifnull(max(transaction_id), 0)
+into @start_trx_id
+from mysql.transaction_registry;
+end~~
+create function if not exists default_engine()
+returns varchar(255)
+deterministic
+begin
+declare e varchar(255);
+select lower(engine) from information_schema.engines where support='DEFAULT' into e;
+return e;
+end~~
+create function if not exists sys_datatype()
+returns varchar(255)
+deterministic
+begin
+if default_engine() = 'innodb' then
+return 'bigint unsigned';
+elseif default_engine() = 'myisam' then
+return 'timestamp(6)';
+end if;
+return NULL;
+end~~
+create function if not exists sys_commit_ts(sys_field varchar(255))
+returns varchar(255)
+deterministic
+begin
+if default_engine() = 'innodb' then
+return concat('vtq_commit_ts(', sys_field, ')');
+elseif default_engine() = 'myisam' then
+return sys_field;
+end if;
+return NULL;
+end~~
+create procedure if not exists innodb_verify_vtq(recs int)
+begin
+declare i int default 1;
+if default_engine() = 'innodb' then
+call verify_vtq;
+elseif default_engine() = 'myisam' then
+create temporary table tmp (No int, A bool, B bool, C bool, D bool);
+while i <= recs do
+insert into tmp values (i, 1, 1, 1, 1);
+set i= i + 1;
+end while;
+select * from tmp;
+drop table tmp;
+end if;
+end~~
+create procedure concat_exec2(a varchar(255), b varchar(255))
+begin
+prepare stmt from concat(a, b);
+execute stmt;
+deallocate prepare stmt;
+end~~
+create procedure concat_exec3(a varchar(255), b varchar(255), c varchar(255))
+begin
+prepare stmt from concat(a, b, c);
+execute stmt;
+deallocate prepare stmt;
+end~~
+create function get_archive_table_name()
+returns varchar(255)
+begin
+return (select archive_name from t_vtmd for system_time all where archive_name is not NULL
+order by start desc limit 1);
+end~~
+create procedure drop_last_archive()
+begin
+call concat_exec2('drop table ', get_archive_table_name());
+end~~
+set versioning_alter_history= survive;
+create or replace table t (a int) with system versioning;
+insert into t values (1);
+update t set a=2 where a=1;
+select sys_trx_start from t where a=2 into @tm;
+alter table t add column b int;
+select * from t;
+a b
+2 NULL
+call concat_exec3('select * from ', get_archive_table_name(), ' for system_time all');
+a
+2
+1
+call concat_exec3('select @tm=sys_trx_start from ', get_archive_table_name(), ' for system_time all where a=2');
+@tm=sys_trx_start
+1
+select @tm<sys_trx_start from t where a=2;
+@tm<sys_trx_start
+1
+select sys_trx_start from t where a=2 into @tm;
+call concat_exec3('select @tm=sys_trx_end from ', get_archive_table_name(), ' for system_time all where a=2');
+@tm=sys_trx_end
+1
+call drop_last_archive();
+set versioning_alter_history= keep;
+drop table t_vtmd;
+drop table t;
+set versioning_alter_history= survive;
+create or replace table t (a int) with system versioning;
+insert into t values (1);
+update t set a=2 where a=1;
+select sys_trx_start from t where a=2 into @tm;
+alter table t add column b int;
+select * from t;
+a b
+2 NULL
+call concat_exec3('select * from ', get_archive_table_name(), ' for system_time all');
+a
+2
+1
+call concat_exec3('select @tm=sys_trx_start from ', get_archive_table_name(), ' for system_time all where a=2');
+@tm=sys_trx_start
+1
+select @tm<sys_trx_start from t where a=2;
+@tm<sys_trx_start
+1
+select sys_trx_start from t where a=2 into @tm;
+call concat_exec3('select @tm=sys_trx_end from ', get_archive_table_name(), ' for system_time all where a=2');
+@tm=sys_trx_end
+1
+call drop_last_archive();
+set versioning_alter_history= keep;
+drop table t_vtmd;
+drop table t;
+set versioning_alter_history= survive;
+create or replace table t (a int) with system versioning engine innodb;
+insert into t values (1);
+update t set a=2 where a=1;
+select sys_trx_start from t where a=2 into @tm;
+alter table t add column b int;
+select * from t;
+a b
+2 NULL
+call concat_exec3('select * from ', get_archive_table_name(), ' for system_time all');
+a
+2
+1
+call concat_exec3('select @tm=sys_trx_start from ', get_archive_table_name(), ' for system_time all where a=2');
+@tm=sys_trx_start
+1
+select @tm<sys_trx_start from t where a=2;
+@tm<sys_trx_start
+1
+select sys_trx_start from t where a=2 into @tm;
+call concat_exec3('select @tm=sys_trx_end from ', get_archive_table_name(), ' for system_time all where a=2');
+@tm=sys_trx_end
+1
+call drop_last_archive();
+set versioning_alter_history= keep;
+drop table t_vtmd;
+drop table t;
+set versioning_alter_history= survive;
+create or replace table t (a int) with system versioning engine innodb;
+insert into t values (1);
+update t set a=2 where a=1;
+alter table t add column b int, algorithm=inplace;
+set versioning_alter_history = keep;
+drop function get_archive_table_name;
+drop procedure drop_last_archive;
+select * from mysql.vtmd_template;
+start end name archive_name col_renames
+show create table mysql.vtmd_template;
+Table Create Table
+vtmd_template CREATE TABLE `vtmd_template` (
+ `start` bigint(20) unsigned GENERATED ALWAYS AS ROW START COMMENT 'TRX_ID of table lifetime start',
+ `end` bigint(20) unsigned GENERATED ALWAYS AS ROW END NOT NULL COMMENT 'TRX_ID of table lifetime end',
+ `name` varchar(64) COLLATE utf8_bin NOT NULL COMMENT 'Table name during current lifetime period',
+ `archive_name` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT 'Name of archive table',
+ `col_renames` blob DEFAULT NULL COMMENT 'Column name mappings from previous lifetime',
+ PRIMARY KEY (`end`),
+ KEY `archive_name` (`archive_name`),
+ PERIOD FOR SYSTEM_TIME (`start`, `end`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0 WITH SYSTEM VERSIONING
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+3 1 1 1 1
+4 1 1 1 1
+5 1 1 1 1
+6 1 1 1 1
+7 1 1 1 1
+8 1 1 1 1
+9 1 1 1 1
+10 1 1 1 1
+11 1 1 1 1
+12 1 1 1 1
+drop table t;
+drop table t_vtmd;
+drop procedure verify_vtq;
+drop procedure innodb_verify_vtq;
+drop function default_engine;
+drop function sys_commit_ts;
+drop function sys_datatype;
+drop procedure concat_exec2;
+drop procedure concat_exec3;
diff --git a/mysql-test/suite/versioning/r/debug.result b/mysql-test/suite/versioning/r/debug.result
new file mode 100644
index 00000000000..406717f8b5d
--- /dev/null
+++ b/mysql-test/suite/versioning/r/debug.result
@@ -0,0 +1,54 @@
+create table t1 (a int);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+create temporary table tt1 (a int) with system versioning;
+ERROR HY000: System versioning prohibited for TEMPORARY tables
+set @old_dbug=@@global.debug_dbug;
+set global debug_dbug='+d,sysvers_force';
+create table t2 (a int);
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create temporary table tt2 (a int) with system versioning;
+show create table tt2;
+Table Create Table
+tt2 CREATE TEMPORARY TABLE `tt2` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+connect con1, localhost, root;
+create table t3 (a int);
+show create table t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create temporary table tt3 (a int) with system versioning;
+show create table tt3;
+Table Create Table
+tt3 CREATE TEMPORARY TABLE `tt3` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+disconnect con1;
+connection default;
+set debug_dbug='+d,sysvers_show';
+show create table t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+create table t4 (a int);
+show create table t4;
+Table Create Table
+t4 CREATE TABLE `t4` (
+ `a` int(11) DEFAULT NULL,
+ `row_start` timestamp(6) GENERATED ALWAYS AS ROW START,
+ `row_end` timestamp(6) GENERATED ALWAYS AS ROW END,
+ PERIOD FOR SYSTEM_TIME (`row_start`, `row_end`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+set global debug_dbug=@old_dbug;
+drop table t1, t2, t3, t4;
diff --git a/mysql-test/suite/versioning/r/delete.result b/mysql-test/suite/versioning/r/delete.result
new file mode 100644
index 00000000000..79f619fecdd
--- /dev/null
+++ b/mysql-test/suite/versioning/r/delete.result
@@ -0,0 +1,320 @@
+create or replace procedure test_01(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('
+ create or replace table t1(
+ XNo int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+insert into t1(XNo) values(0);
+insert into t1(XNo) values(1);
+insert into t1(XNo) values(2);
+insert into t1(XNo) values(3);
+insert into t1(XNo) values(4);
+insert into t1(XNo) values(5);
+insert into t1(XNo) values(6);
+insert into t1(XNo) values(7);
+insert into t1(XNo) values(8);
+insert into t1(XNo) values(9);
+set @str= concat('select XNo, ',
+fields, " < '2038-01-19 03:14:07'
+ from t1 for system_time
+ between timestamp '0000-0-0 0:0:0'
+ and timestamp '2038-01-19 04:14:07'");
+prepare stmt from @str; execute stmt;
+delete from t1 where XNo = 0;
+select "Deleted 0";
+execute stmt;
+delete from t1 where XNo = 1;
+select "Deleted 1";
+execute stmt;
+delete from t1 where XNo > 5;
+select "Deleted >5";
+create view vt1 as select XNo from t1;
+select XNo as XNo_vt1 from vt1;
+delete from vt1 where XNo = 3;
+select "Deleted from VIEW 3";
+select XNo as XNo_vt1 from vt1;
+execute stmt; drop prepare stmt;
+drop view vt1;
+drop table t1;
+end~~
+create or replace procedure test_02(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('create or replace table t1 (
+ x int,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+insert into t1(x) values (1);
+select sys_start into @sys_start from t1;
+delete from t1;
+select * from t1;
+select x = 1 as A, sys_start = @sys_start as B, sys_end > sys_start as C
+from t1 for system_time between timestamp '0-0-0' and timestamp '2038-01-19 04:14:07';
+drop table t1;
+end~~
+create or replace procedure test_03(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str0= concat('(
+ x int,
+ y int,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+set @str= concat('create or replace table t1', @str0);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+set @str= concat('create or replace table t2', @str0);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+insert into t1(x, y) values (1, 1), (2, 2), (3, 3), (14, 4);
+insert into t2(x, y) values (11, 1), (12, 2), (13, 32), (14, 4);
+delete t1, t2 from t1 join t2 where t1.y = 3 and t2.y = 32;
+select x as t1_x from t1;
+select x as t2_x from t2;
+delete t1, t2 from t1 join t2 where t1.x = t2.x;
+select x as t1_x from t1;
+select x as t2_x from t2;
+select x as t1_x_all from t1 for system_time between timestamp '0-0-0' and timestamp '2038-01-19 04:14:07';
+select x as t2_x_all from t2 for system_time between timestamp '0-0-0' and timestamp '2038-01-19 04:14:07';
+drop table t1;
+drop table t2;
+end~~
+# Basic + delete from view
+call test_01('timestamp(6)', 'myisam', 'sys_end');
+XNo sys_end < '2038-01-19 03:14:07'
+0 0
+1 0
+2 0
+3 0
+4 0
+5 0
+6 0
+7 0
+8 0
+9 0
+Deleted 0
+Deleted 0
+XNo sys_end < '2038-01-19 03:14:07'
+0 1
+1 0
+2 0
+3 0
+4 0
+5 0
+6 0
+7 0
+8 0
+9 0
+Deleted 1
+Deleted 1
+XNo sys_end < '2038-01-19 03:14:07'
+0 1
+1 1
+2 0
+3 0
+4 0
+5 0
+6 0
+7 0
+8 0
+9 0
+Deleted >5
+Deleted >5
+XNo_vt1
+2
+3
+4
+5
+Deleted from VIEW 3
+Deleted from VIEW 3
+XNo_vt1
+2
+4
+5
+XNo sys_end < '2038-01-19 03:14:07'
+0 1
+1 1
+2 0
+3 1
+4 0
+5 0
+6 1
+7 1
+8 1
+9 1
+call test_01('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+XNo vtq_commit_ts(sys_end) < '2038-01-19 03:14:07'
+0 0
+1 0
+2 0
+3 0
+4 0
+5 0
+6 0
+7 0
+8 0
+9 0
+Deleted 0
+Deleted 0
+XNo vtq_commit_ts(sys_end) < '2038-01-19 03:14:07'
+0 1
+1 0
+2 0
+3 0
+4 0
+5 0
+6 0
+7 0
+8 0
+9 0
+Deleted 1
+Deleted 1
+XNo vtq_commit_ts(sys_end) < '2038-01-19 03:14:07'
+0 1
+1 1
+2 0
+3 0
+4 0
+5 0
+6 0
+7 0
+8 0
+9 0
+Deleted >5
+Deleted >5
+XNo_vt1
+2
+3
+4
+5
+Deleted from VIEW 3
+Deleted from VIEW 3
+XNo_vt1
+2
+4
+5
+XNo vtq_commit_ts(sys_end) < '2038-01-19 03:14:07'
+0 1
+1 1
+2 0
+3 1
+4 0
+5 0
+6 1
+7 1
+8 1
+9 1
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+3 1 1 1 1
+4 1 1 1 1
+5 1 1 1 1
+6 1 1 1 1
+7 1 1 1 1
+8 1 1 1 1
+9 1 1 1 1
+10 1 1 1 1
+11 1 1 1 1
+12 1 1 1 1
+13 1 1 1 1
+14 1 1 1 1
+# Check sys_start, sys_end
+call test_02('timestamp(6)', 'myisam', 'sys_end');
+x
+A B C
+1 1 1
+call test_02('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+x
+A B C
+1 1 1
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+# Multi-delete
+call test_03('timestamp(6)', 'myisam', 'sys_end');
+t1_x
+1
+2
+14
+t2_x
+11
+12
+14
+t1_x
+1
+2
+t2_x
+11
+12
+t1_x_all
+1
+2
+3
+14
+t2_x_all
+11
+12
+13
+14
+call test_03('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+t1_x
+1
+2
+14
+t2_x
+11
+12
+14
+t1_x
+1
+2
+t2_x
+11
+12
+t1_x_all
+1
+2
+3
+14
+t2_x_all
+11
+12
+13
+14
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+3 1 1 1 1
+4 1 1 1 1
+# Update + delete
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1);
+update t1 set x= 2;
+delete from t1;
+select x from t1 for system_time all;
+x
+2
+1
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/r/derived.result b/mysql-test/suite/versioning/r/derived.result
new file mode 100644
index 00000000000..cd6cec7e725
--- /dev/null
+++ b/mysql-test/suite/versioning/r/derived.result
@@ -0,0 +1,295 @@
+create table emp
+(
+emp_id int,
+name varchar(127),
+mgr int
+) with system versioning;
+insert into emp values (1, 'bill', 0),
+(2, 'bill', 1),
+(3, 'kate', 1);
+set @ts=now(6);
+delete from emp;
+insert into emp values (4, 'john', 1);
+with ancestors as (select * from emp) select * from ancestors;
+emp_id name mgr
+4 john 1
+set @tmp= "with ancestors as (select * from emp) select * from ancestors";
+prepare stmt from @tmp;
+execute stmt;
+emp_id name mgr
+4 john 1
+drop prepare stmt;
+with ancestors as (select * from emp for system_time all) select * from ancestors;
+emp_id name mgr
+1 bill 0
+2 bill 1
+3 kate 1
+4 john 1
+set @tmp= "with ancestors as (select * from emp for system_time all) select * from ancestors";
+prepare stmt from @tmp;
+execute stmt;
+emp_id name mgr
+1 bill 0
+2 bill 1
+3 kate 1
+4 john 1
+drop prepare stmt;
+with recursive ancestors as (select * from emp) select * from ancestors;
+emp_id name mgr
+4 john 1
+set @tmp= "with recursive ancestors as (select * from emp) select * from ancestors";
+prepare stmt from @tmp;
+execute stmt;
+emp_id name mgr
+4 john 1
+drop prepare stmt;
+select emp_id from (select emp_id from emp where row_end>'2031-1-1') as tmp;
+emp_id
+4
+set @tmp= "select emp_id from (select emp_id from emp where row_end>'2031-1-1') as tmp";
+prepare stmt from @tmp;
+execute stmt;
+emp_id
+4
+drop prepare stmt;
+with recursive
+ancestors
+as
+(
+select e.emp_id, e.name, e.mgr
+from emp as e
+where name = 'john'
+ union
+select ee.emp_id, ee.name, ee.mgr
+from emp as ee, ancestors as a
+where ee.mgr = a.emp_id
+)
+select * from ancestors;
+emp_id name mgr
+4 john 1
+set @tmp= "
+with recursive
+ancestors
+as
+(
+ select e.emp_id, e.name, e.mgr
+ from emp as e
+ where name = 'john'
+ union
+ select ee.emp_id, ee.name, ee.mgr
+ from emp as ee, ancestors as a
+ where ee.mgr = a.emp_id
+)
+select * from ancestors";
+prepare stmt from @tmp;
+execute stmt;
+emp_id name mgr
+4 john 1
+drop prepare stmt;
+with recursive
+ancestors
+as
+(
+select e.emp_id, e.name, e.mgr
+from emp for system_time as of timestamp @ts as e
+where name = 'bill'
+ union
+select ee.emp_id, ee.name, ee.mgr
+from emp for system_time as of timestamp @ts as ee,
+ancestors as a
+where ee.mgr = a.emp_id
+)
+select * from ancestors;
+emp_id name mgr
+1 bill 0
+2 bill 1
+3 kate 1
+set @tmp= "
+with recursive
+ancestors
+as
+(
+ select e.emp_id, e.name, e.mgr
+ from emp for system_time as of timestamp @ts as e
+ where name = 'bill'
+ union
+ select ee.emp_id, ee.name, ee.mgr
+ from emp for system_time as of timestamp @ts as ee,
+ ancestors as a
+ where ee.mgr = a.emp_id
+)
+select * from ancestors";
+prepare stmt from @tmp;
+execute stmt;
+emp_id name mgr
+1 bill 0
+2 bill 1
+3 kate 1
+drop prepare stmt;
+drop table emp;
+create or replace table t1 (x int) with system versioning;
+create or replace table t2 (y int) with system versioning;
+insert into t1 values (1);
+set @t0= now(6);
+delete from t1;
+insert into t1 values (2);
+insert into t2 values (10);
+select * from (select *, t1.row_end, t1.row_end as endo from t1) as s0;
+x row_end endo
+2 # #
+select * from (select *, t1.row_end, t2.row_start from t1, t2) as s0;
+x y row_end row_start
+2 10 # #
+# SYSTEM_TIME propagation from inner to outer
+select * from (select * from t1 for system_time as of timestamp @t0, t2) as s0;
+x y
+1 10
+with s1 as (select * from t1 for system_time as of timestamp @t0, t2) select * from s1;
+x y
+1 10
+# leading table selection
+select * from (select *, t1.row_end from t2, t1 for system_time as of timestamp @t0) as s2;
+y x row_end
+10 1 #
+with s3 as (select *, t1.row_end from t2, t1 for system_time as of timestamp @t0) select * from s3;
+y x row_end
+10 1 #
+### VIEW instead of t1
+set @q= concat("create view vt1 as select * from t1 for system_time as of timestamp '", @t0, "'");
+prepare q from @q;
+execute q;
+drop prepare q;
+create view vt2 as select * from t1;
+# SYSTEM_TIME propagation from view
+select * from vt1;
+x
+1
+# SYSTEM_TIME propagation from inner to outer
+select * from (select * from vt1, t2) as s0;
+x y
+1 10
+### SYSTEM_TIME clash
+select * from (select * from t1 for system_time all) for system_time all as dt0;
+ERROR HY000: Table `dt0` is not system-versioned
+select * from vt1 for system_time all;
+ERROR HY000: Table `vt1` is not system-versioned
+with dt1 as (select * from t1 for system_time all)
+select * from dt1 for system_time all;
+ERROR HY000: Table `dt1` is not system-versioned
+### UNION
+set @t1= now(6);
+delete from t2;
+insert into t2 values (3);
+# SYSTEM_TIME is not propagated
+select x from t1 union
+select y from t2;
+x
+2
+3
+select x from t1 for system_time as of @t0 union
+select y from t2;
+x
+1
+3
+select x from t1 union
+select y from t2 for system_time as of @t1;
+x
+2
+10
+select x from t1 for system_time as of @t0 union
+select y from t2 for system_time as of @t1;
+x
+1
+10
+# LEFT/RIGHT JOIN
+create or replace table t1 (x int, y int) with system versioning;
+create or replace table t2 (x int, y int) with system versioning;
+insert into t1 values (1, 1), (1, 2), (1, 3), (4, 4), (5, 5);
+insert into t2 values (1, 2), (2, 1), (3, 1);
+## Outer or inner SYSTEM_TIME produces same expression
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
+1 SIMPLE t1 ALL NULL NULL NULL NULL 5 100.00 Using where; Using join buffer (flat, BNL join)
+Query A:
+Note 1003 select `test`.`t1`.`x` AS `x`,`test`.`t1`.`y` AS `y1`,`test`.`t2`.`x` AS `x2`,`test`.`t2`.`y` AS `y2` from `test`.`t1` FOR SYSTEM_TIME ALL join `test`.`t2` FOR SYSTEM_TIME ALL where `test`.`t1`.`x` = `test`.`t2`.`x` and `test`.`t1`.`row_end` > <cache>(cast(current_timestamp(6) as datetime(6))) and `test`.`t1`.`row_start` <= <cache>(cast(current_timestamp(6) as datetime(6))) and `test`.`t2`.`row_end` > <cache>(cast(current_timestamp(6) as datetime(6))) and `test`.`t2`.`row_start` <= <cache>(cast(current_timestamp(6) as datetime(6)))
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
+1 SIMPLE t1 ALL NULL NULL NULL NULL 5 100.00 Using where; Using join buffer (flat, BNL join)
+Query B:
+Note 1003 select `test`.`t1`.`x` AS `x`,`test`.`t1`.`y` AS `y1`,`test`.`t2`.`x` AS `x2`,`test`.`t2`.`y` AS `y2` from `test`.`t1` FOR SYSTEM_TIME ALL join `test`.`t2` FOR SYSTEM_TIME ALL where `test`.`t1`.`x` = `test`.`t2`.`x` and `test`.`t1`.`row_end` > <cache>(cast(current_timestamp(6) as datetime(6))) and `test`.`t1`.`row_start` <= <cache>(cast(current_timestamp(6) as datetime(6))) and `test`.`t2`.`row_end` > <cache>(cast(current_timestamp(6) as datetime(6))) and `test`.`t2`.`row_start` <= <cache>(cast(current_timestamp(6) as datetime(6)))
+Fine result: queries A and B are equal.
+## LEFT JOIN: t1, t2 versioned
+select * from (
+select t1.x as LJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2
+from t1 left join t2 on t1.x = t2.x)
+as derived;
+LJ1_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+4 4 NULL NULL
+5 5 NULL NULL
+alter table t2 drop system versioning;
+## LEFT JOIN: t1 versioned
+select * from (
+select t1.x as LJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2
+from t1 left join t2 on t1.x = t2.x)
+as derived;
+LJ2_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+4 4 NULL NULL
+5 5 NULL NULL
+alter table t1 drop system versioning;
+alter table t2 add system versioning;
+## LEFT JOIN: t2 versioned
+select * from (
+select t1.x as LJ3_x1, t1.y as y1, t2.x as x2, t2.y as y2
+from t1 left join t2 on t1.x = t2.x)
+as derived;
+LJ3_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+4 4 NULL NULL
+5 5 NULL NULL
+alter table t1 add system versioning;
+## RIGHT JOIN: t1, t2 versioned
+select * from (
+select t1.x as RJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2
+from t1 right join t2 on t1.x = t2.x)
+as derived;
+RJ1_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+NULL NULL 2 1
+NULL NULL 3 1
+alter table t2 drop system versioning;
+## RIGHT JOIN: t1 versioned
+select * from (
+select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2
+from t1 right join t2 on t1.x = t2.x)
+as derived;
+RJ2_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+NULL NULL 2 1
+NULL NULL 3 1
+alter table t1 drop system versioning;
+alter table t2 add system versioning;
+## RIGHT JOIN: t2 versioned
+select * from (
+select t1.x as RJ3_x1, t1.y as y1, t2.x as x2, t2.y as y2
+from t1 right join t2 on t1.x = t2.x)
+as derived;
+RJ3_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+NULL NULL 2 1
+NULL NULL 3 1
+drop table t1, t2;
+drop view vt1, vt2;
diff --git a/mysql-test/suite/versioning/r/foreign.result b/mysql-test/suite/versioning/r/foreign.result
new file mode 100644
index 00000000000..ca2459f784a
--- /dev/null
+++ b/mysql-test/suite/versioning/r/foreign.result
@@ -0,0 +1,232 @@
+#################
+# Test RESTRICT #
+#################
+create table parent(
+id int unique key
+) engine innodb;
+create table child(
+parent_id int,
+sys_start SYS_DATATYPE as row start invisible,
+sys_end SYS_DATATYPE as row end invisible,
+period for system_time(sys_start, sys_end),
+foreign key(parent_id) references parent(id)
+on delete restrict
+on update restrict
+) engine innodb with system versioning;
+insert into parent values(1);
+insert into child values(1);
+delete from parent where id = 1;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
+delete from child where parent_id = 1;
+delete from parent where id = 1;
+insert into parent values(1);
+insert into child values(1);
+update parent set id=id+1;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
+delete from child;
+update parent set id=id+1;
+select * from child for system_time from timestamp '1-1-1' to timestamp now(6);
+parent_id
+1
+1
+drop table child;
+drop table parent;
+##############################################
+# Test when clustered index is a foreign key #
+##############################################
+create table parent(
+id int(10) unsigned unique key
+) engine innodb;
+create table child(
+parent_id int(10) unsigned primary key,
+sys_start SYS_DATATYPE as row start invisible,
+sys_end SYS_DATATYPE as row end invisible,
+period for system_time(sys_start, sys_end),
+foreign key(parent_id) references parent(id)
+) engine innodb with system versioning;
+insert into parent values(1);
+insert into child values(1);
+delete from parent where id = 1;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
+drop table child;
+drop table parent;
+################
+# Test CASCADE #
+################
+create table parent(
+id int unique key
+) engine innodb;
+create table child(
+parent_id int,
+sys_start SYS_DATATYPE as row start invisible,
+sys_end SYS_DATATYPE as row end invisible,
+period for system_time(sys_start, sys_end),
+foreign key(parent_id) references parent(id)
+on delete cascade
+on update cascade
+) engine innodb with system versioning;
+insert into parent values(1);
+insert into child values(1);
+## FIXME: #415 update of foreign constraints is disabled
+call mtr.add_suppression("foreign key constraints in timestamp-based temporal table");
+delete from parent where id = 1;
+ERROR 42000: Table 'parent' uses an extension that doesn't exist in this MariaDB version
+delete from child where parent_id = 1;
+## FIXME END
+delete from parent where id = 1;
+select * from child;
+parent_id
+select * from child for system_time all;
+parent_id
+1
+insert into parent values(1);
+insert into child values(1);
+update parent set id = id + 1;
+select * from child;
+parent_id
+2
+select * from child for system_time all;
+parent_id
+1
+2
+drop table child;
+drop table parent;
+create or replace table parent (
+id int primary key,
+sys_start SYS_DATATYPE as row start invisible,
+sys_end SYS_DATATYPE as row end invisible,
+period for system_time(sys_start, sys_end)
+) with system versioning
+engine innodb;
+create or replace table child (
+x int,
+parent_id int not null,
+constraint `parent-fk`
+ foreign key (parent_id) references parent (id)
+on delete cascade
+on update restrict
+)
+engine innodb;
+insert into parent (id) values (2);
+insert into child (x, parent_id) values (2, 2);
+delete from parent;
+select * from child;
+x parent_id
+drop table child;
+drop table parent;
+create or replace table parent (
+id int primary key
+)
+engine innodb;
+create or replace table child (
+id int primary key,
+parent_id int not null,
+constraint `parent-fk`
+ foreign key (parent_id) references parent (id)
+on delete cascade
+on update restrict
+) with system versioning
+engine innodb;
+insert into parent (id) values (3);
+insert into child (id, parent_id) values (3, 3);
+## FIXME: #415 update of foreign constraints is disabled
+delete from child;
+## FIXME END
+delete from parent;
+select * from child;
+id parent_id
+select * from child for system_time all;
+id parent_id
+3 3
+drop table child;
+drop table parent;
+#################
+# Test SET NULL #
+#################
+create table parent(
+id int unique key
+) engine innodb;
+create table child(
+parent_id int,
+sys_start SYS_DATATYPE as row start invisible,
+sys_end SYS_DATATYPE as row end invisible,
+period for system_time(sys_start, sys_end),
+foreign key(parent_id) references parent(id)
+on delete set null
+on update set null
+) engine innodb with system versioning;
+insert into parent values(1);
+insert into child values(1);
+delete from child;
+insert into child values(1);
+## FIXME: #415 update of foreign constraints is disabled
+delete from child where parent_id = 1;
+## FIXME END
+delete from parent where id = 1;
+select * from child;
+parent_id
+select * from child for system_time from timestamp '1-1-1' to timestamp now(6);
+parent_id
+1
+1
+delete from child;
+insert into parent values(1);
+insert into child values(1);
+drop table child;
+drop table parent;
+###########################
+# Parent table is foreign #
+###########################
+create or replace table parent(
+id int unique key,
+sys_start SYS_DATATYPE as row start invisible,
+sys_end SYS_DATATYPE as row end invisible,
+period for system_time(sys_start, sys_end)
+) engine innodb with system versioning;
+create or replace table child(
+parent_id int,
+foreign key(parent_id) references parent(id)
+) engine innodb;
+insert into parent values(1);
+insert into child values(1);
+delete from parent;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
+update parent set id=2;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
+delete from child;
+delete from parent;
+insert into child values(1);
+ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
+insert into parent values(1);
+insert into child values(1);
+delete from parent;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
+update parent set id=2;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
+drop table child;
+drop table parent;
+###################
+# crash on DELETE #
+###################
+create or replace table a (
+cola int(10) primary key,
+v_cola int(10) as (cola mod 10) virtual,
+sys_start SYS_DATATYPE as row start invisible,
+sys_end SYS_DATATYPE as row end invisible,
+period for system_time(sys_start, sys_end)
+) engine=innodb with system versioning;
+create index v_cola on a (v_cola);
+create or replace table b(
+cola int(10),
+v_cola int(10),
+sys_start SYS_DATATYPE as row start invisible,
+sys_end SYS_DATATYPE as row end invisible,
+period for system_time(sys_start, sys_end)
+) engine=innodb with system versioning;
+alter table b add constraint `v_cola_fk`
+foreign key (v_cola) references a (v_cola);
+insert into a(cola) values (12);
+insert into b(cola, v_cola) values (10,2);
+delete from a;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`b`, CONSTRAINT `v_cola_fk` FOREIGN KEY (`v_cola`) REFERENCES `a` (`v_cola`))
+drop table b, a;
diff --git a/mysql-test/suite/versioning/r/insert.result b/mysql-test/suite/versioning/r/insert.result
new file mode 100644
index 00000000000..cd6f300d907
--- /dev/null
+++ b/mysql-test/suite/versioning/r/insert.result
@@ -0,0 +1,373 @@
+create procedure test_01(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('
+ create table t1(
+ x int unsigned,
+ y int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+insert into t1(x, y) values(3, 4);
+insert delayed into t1(x, y) values(2, 3);
+insert into t1 values(40, 33);
+set @str= concat('select x, y, ', fields, ' from t1');
+prepare stmt from @str; execute stmt; drop prepare stmt;
+drop table t1;
+end~~
+create procedure test_02(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('
+ create table t1(
+ id int unsigned auto_increment primary key,
+ x int unsigned,
+ y int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+insert into t1(x, y) values(33, 44);
+insert into t1(id, x, y) values(20, 33, 44);
+insert into t1 values(40, 33, 44);
+set @str= concat('select id, x, y, ', fields, ' from t1');
+prepare stmt from @str; execute stmt; drop prepare stmt;
+drop table t1;
+end~~
+create procedure test_03(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('
+ create table t1(
+ x int unsigned,
+ y int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+create view vt1_1 as select x, y from t1;
+insert into t1(x, y) values(8001, 9001);
+insert into vt1_1(x, y) values(1001, 2001);
+insert into vt1_1 values(1002, 2002);
+set @str= concat('select x, y, ', fields, ' from t1');
+prepare stmt from @str; execute stmt; drop prepare stmt;
+select x, y from vt1_1;
+end~~
+create procedure test_04(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('
+ create table t1(
+ id bigint primary key,
+ a int,
+ b int)
+ with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+insert into t1 values(1, 1, 1);
+select row_start, row_end from t1 into @sys_start, @sys_end;
+select id, a, b from t1;
+insert into t1 values(2, 2, 2);
+select id, a, b, row_start > @sys_start as C, row_end = @sys_end as D from t1 where id = 2;
+drop table t1;
+end~~
+create procedure test_05(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('(
+ x int unsigned,
+ y int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+set @str2= concat('create table t1', @str);
+prepare stmt from @str2; execute stmt; drop prepare stmt;
+set @str2= concat('create table t2', @str);
+prepare stmt from @str2; execute stmt; drop prepare stmt;
+insert into t1(x, y) values
+(1, 1000),
+(2, 2000),
+(3, 3000),
+(4, 4000),
+(5, 5000),
+(6, 6000),
+(7, 7000),
+(8, 8000),
+(9, 9000);
+delete from t1 where x >= 1;
+insert into t1(x, y) values
+(1, 1001),
+(2, 2001),
+(3, 3001),
+(4, 4001),
+(5, 5001),
+(6, 6001);
+insert into t1(x, y, sys_start) values
+(7, 7001, DEFAULT);
+insert into t1(x, y, sys_end) values
+(8, 8001, DEFAULT);
+insert into t1(x, y, sys_start, sys_end) values
+(9, 9001, DEFAULT, DEFAULT);
+insert into t2 select x, y from t1 for system_time between timestamp '0000-0-0 0:0:0' and timestamp '9999-1-1 0:0:0';
+select x, y from t1;
+select x, y from t2;
+drop table t1;
+drop table t2;
+end~~
+call test_01('timestamp(6)', 'myisam', 'sys_end');
+x y sys_end
+3 4 2038-01-19 03:14:07.999999
+2 3 2038-01-19 03:14:07.999999
+40 33 2038-01-19 03:14:07.999999
+call test_01('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+x y vtq_commit_ts(sys_end)
+3 4 2038-01-19 03:14:07.999999
+2 3 2038-01-19 03:14:07.999999
+40 33 2038-01-19 03:14:07.999999
+call test_02('timestamp(6)', 'myisam', 'sys_end');
+id x y sys_end
+1 33 44 2038-01-19 03:14:07.999999
+20 33 44 2038-01-19 03:14:07.999999
+40 33 44 2038-01-19 03:14:07.999999
+call test_02('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+id x y vtq_commit_ts(sys_end)
+1 33 44 2038-01-19 03:14:07.999999
+20 33 44 2038-01-19 03:14:07.999999
+40 33 44 2038-01-19 03:14:07.999999
+call test_03('timestamp(6)', 'myisam', 'sys_end');
+x y sys_end
+8001 9001 2038-01-19 03:14:07.999999
+1001 2001 2038-01-19 03:14:07.999999
+1002 2002 2038-01-19 03:14:07.999999
+x y
+8001 9001
+1001 2001
+1002 2002
+drop table t1;
+drop view vt1_1;
+call test_03('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+x y vtq_commit_ts(sys_end)
+8001 9001 2038-01-19 03:14:07.999999
+1001 2001 2038-01-19 03:14:07.999999
+1002 2002 2038-01-19 03:14:07.999999
+x y
+8001 9001
+1001 2001
+1002 2002
+drop table t1;
+drop view vt1_1;
+call test_04('timestamp(6)', 'myisam', 'sys_end');
+id a b
+1 1 1
+id a b C D
+2 2 2 1 1
+call test_04('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+id a b
+1 1 1
+id a b C D
+2 2 2 1 1
+call test_05('timestamp(6)', 'myisam', 'sys_end');
+x y
+1 1001
+2 2001
+3 3001
+4 4001
+5 5001
+6 6001
+7 7001
+8 8001
+9 9001
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8000
+9 9000
+1 1001
+2 2001
+3 3001
+4 4001
+5 5001
+6 6001
+7 7001
+8 8001
+9 9001
+call test_05('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+x y
+1 1001
+2 2001
+3 3001
+4 4001
+5 5001
+6 6001
+7 7001
+8 8001
+9 9001
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8000
+9 9000
+1 1001
+2 2001
+3 3001
+4 4001
+5 5001
+6 6001
+7 7001
+8 8001
+9 9001
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+3 1 1 1 1
+4 1 1 1 1
+5 1 1 1 1
+6 1 1 1 1
+7 1 1 1 1
+8 1 1 1 1
+9 1 1 1 1
+10 1 1 1 1
+11 1 1 1 1
+12 1 1 1 1
+13 1 1 1 1
+14 1 1 1 1
+15 1 1 1 1
+16 1 1 1 1
+create table t1(
+x int unsigned,
+sys_start bigint unsigned as row start invisible,
+sys_end bigint unsigned as row end invisible,
+period for system_time (sys_start, sys_end))
+with system versioning engine=innodb;
+create table t2(x int unsigned) engine=innodb;
+start transaction;
+insert into t1(x) values(1);
+commit;
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+start transaction;
+insert into t2(x) values(1);
+savepoint a;
+insert into t1(x) values(1);
+rollback to a;
+commit;
+call verify_vtq;
+No A B C D
+insert into t2(x) values (1);
+create or replace table t1 (
+x int,
+y int as (x) virtual,
+sys_trx_start bigint unsigned as row start invisible,
+sys_trx_end bigint unsigned as row end invisible,
+period for system_time (sys_trx_start, sys_trx_end)
+) engine=innodb with system versioning;
+insert into t1 values (1, null);
+update t1 set x= x + 1;
+select x, y, sys_trx_end = 18446744073709551615 as current from t1 for system_time all;
+x y current
+2 2 1
+1 1 0
+create or replace table t1 (
+x int,
+row_start timestamp(6) as row start invisible,
+row_end timestamp(6) as row end invisible,
+period for system_time (row_start, row_end)
+) with system versioning;
+insert into t1 values (1), (2);
+insert into t1 (row_start) select row_end from t1;
+ERROR HY000: The value specified for generated column 'row_start' in table 't1' ignored
+set sql_mode='';
+insert into t1 (row_start, row_end) values (DEFAULT, 1);
+Warnings:
+Warning 1906 The value specified for generated column 'row_end' in table 't1' ignored
+set sql_mode=default;
+select @@sql_mode into @saved_mode;
+set sql_mode= '';
+insert into t1 (x, row_start, row_end) values (3, 4, 5);
+Warnings:
+Warning 1906 The value specified for generated column 'row_start' in table 't1' ignored
+Warning 1906 The value specified for generated column 'row_end' in table 't1' ignored
+set sql_mode= @saved_mode;
+insert into t1 (row_start, row_end) values (DEFAULT, DEFAULT);
+select * from t1;
+x
+1
+2
+NULL
+3
+NULL
+# MDEV-14792 INSERT without column list into table with explicit versioning columns produces bad data
+create or replace table t1 (
+i int,
+s timestamp(6) as row start,
+e timestamp(6) as row end,
+c varchar(8),
+period for system_time(s, e))
+with system versioning;
+insert into t1 values (1, null, null, 'foo');
+select i, c, e>TIMESTAMP'2038-01-01 00:00:00' AS current_row from t1;
+i c current_row
+1 foo 1
+drop table t1;
+drop table t2;
+drop procedure test_01;
+drop procedure test_02;
+drop procedure test_03;
+drop procedure test_04;
+drop procedure test_05;
+set timestamp=1000000019;
+select now() < sysdate();
+now() < sysdate()
+1
+create table t1 (a int) with system versioning;
+insert t1 values (1);
+set @a=sysdate(6);
+select * from t1 for system_time as of now(6);
+a
+select * from t1 for system_time as of sysdate(6);
+a
+1
+update t1 set a=2;
+delete from t1;
+select *, row_start > @a, row_end > @a from t1 for system_time all;
+a row_start > @a row_end > @a
+1 0 1
+2 1 1
+#
+# MDEV-14871 Server crashes in fill_record / fill_record_n_invoke_before_triggers upon inserting into versioned table with trigger
+#
+create or replace table t1 (pk int primary key) with system versioning;
+create trigger tr before insert on t1 for each row select 1 into @a;
+insert into t1 values (1),(2);
+drop table t1;
diff --git a/mysql-test/suite/versioning/r/online.result b/mysql-test/suite/versioning/r/online.result
new file mode 100644
index 00000000000..b2a34481d63
--- /dev/null
+++ b/mysql-test/suite/versioning/r/online.result
@@ -0,0 +1,34 @@
+set system_versioning_alter_history=keep;
+create or replace table t (a int, b int) engine=innodb;
+alter table t add system versioning, lock=none;
+ERROR 0A000: LOCK=NONE is not supported. Reason: Not implemented for system-versioned tables. Try LOCK=SHARED
+alter table t add system versioning, lock=shared;
+alter table t drop column b, lock=none;
+ERROR 0A000: LOCK=NONE is not supported. Reason: Not implemented for system-versioned tables. Try LOCK=SHARED
+alter table t drop column b, algorithm=inplace;
+ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Not implemented for system-versioned tables. Try ALGORITHM=COPY
+alter table t add index idx(a), lock=none;
+alter table t drop system versioning, lock=none;
+ERROR 0A000: LOCK=NONE is not supported. Reason: Not implemented for system-versioned tables. Try LOCK=SHARED
+alter table t drop system versioning, algorithm=inplace;
+ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Not implemented for system-versioned tables. Try ALGORITHM=COPY
+create or replace table t (a int, b int) engine=innodb;
+alter table t
+add s bigint unsigned as row start,
+add e bigint unsigned as row end,
+add period for system_time(s, e),
+add system versioning,
+lock=none;
+ERROR 0A000: LOCK=NONE is not supported. Reason: Not implemented for system-versioned tables. Try LOCK=SHARED
+alter table t
+add s bigint unsigned as row start,
+add e bigint unsigned as row end,
+add period for system_time(s, e),
+add system versioning;
+alter table t drop column b, lock=none;
+ERROR 0A000: LOCK=NONE is not supported. Reason: Not implemented for system-versioned tables. Try LOCK=SHARED
+alter table t add index idx(a), lock=none;
+alter table t drop column s, drop column e;
+alter table t drop system versioning, lock=none;
+ERROR 0A000: LOCK=NONE is not supported. Reason: Not implemented for system-versioned tables. Try LOCK=SHARED
+drop table t;
diff --git a/mysql-test/suite/versioning/r/optimized.result b/mysql-test/suite/versioning/r/optimized.result
new file mode 100644
index 00000000000..1586676b904
--- /dev/null
+++ b/mysql-test/suite/versioning/r/optimized.result
@@ -0,0 +1,64 @@
+create table t (
+a int,
+b int without system versioning
+) with system versioning;
+insert into t values(1, 2);
+insert into t values(3, 4);
+select * from t;
+a b
+1 2
+3 4
+select a from t for system_time as of timestamp now(6);
+a
+1
+3
+select a, b, b+0 from t for system_time as of timestamp now(6);
+a b b+0
+1 2 2
+3 4 4
+select * from t for system_time as of timestamp now(6);
+a b
+1 2
+3 4
+select count(*) from t for system_time as of timestamp now(6) group by b;
+count(*)
+1
+1
+select * from t for system_time as of timestamp now(6) order by b asc;
+a b
+1 2
+3 4
+select * from t for system_time as of timestamp now(6) order by b desc;
+a b
+3 4
+1 2
+select * from t for system_time as of timestamp now(6) group by a having a=2;
+a b
+select * from t for system_time as of timestamp now(6) group by b having b=2;
+a b
+1 2
+select a from t for system_time as of timestamp now(6) where b=2;
+a
+1
+select a from t for system_time as of timestamp now(6) where b=NULL;
+a
+select a from t for system_time as of timestamp now(6) where b is NULL;
+a
+select count(*), b from t for system_time as of timestamp now(6) group by b having b=NULL;
+count(*) b
+select a, b from t;
+a b
+1 2
+3 4
+create or replace table t (
+a int,
+b int not null without system versioning
+) with system versioning;
+insert into t values (1, 2), (3, 4);
+select * from t for system_time as of timestamp now(6);
+a b
+1 2
+3 4
+select * from t for system_time as of timestamp now(6) where b is NULL;
+a b
+drop table t;
diff --git a/mysql-test/suite/versioning/r/partition.result b/mysql-test/suite/versioning/r/partition.result
new file mode 100644
index 00000000000..2b275538fb9
--- /dev/null
+++ b/mysql-test/suite/versioning/r/partition.result
@@ -0,0 +1,420 @@
+# Check conventional partitioning on temporal tables
+create table t1 (x int)
+with system versioning
+partition by range columns (x) (
+partition p0 values less than (100),
+partition p1 values less than (1000));
+insert into t1 values (3), (300);
+select * from t1;
+x
+3
+300
+select * from t1 partition (p0);
+x
+3
+select * from t1 partition (p1);
+x
+300
+delete from t1;
+select * from t1;
+x
+select * from t1 partition (p0);
+x
+select * from t1 partition (p1);
+x
+select * from t1 for system_time all;
+x
+3
+300
+select * from t1 partition (p0) for system_time all;
+x
+3
+select * from t1 partition (p1) for system_time all;
+x
+300
+# Engine change native <-> non-native versioning prohibited
+create or replace table t1 (i int) engine=DEFAULT_ENGINE with system versioning partition by hash(i);
+alter table t1 engine=NON_DEFAULT_ENGINE;
+ERROR HY000: Not allowed for system-versioned `test`.`t1`. Change to/from native system versioning engine is prohibited.
+## CREATE TABLE
+create or replace table t1 (x int)
+partition by system_time (
+partition p0 history,
+partition pn current);
+ERROR HY000: Transaction system versioning for `t1` is not supported
+create or replace table t1 (x int);
+alter table t1
+partition by system_time (
+partition p0 history,
+partition pn current);
+Got one of the listed errors
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+partition p0 current);
+ERROR HY000: Wrong partitions for `t1`: must have at least one HISTORY and exactly one last CURRENT
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+partition p0 current,
+partition p1 current);
+ERROR HY000: Wrong partitions for `t1`: must have at least one HISTORY and exactly one last CURRENT
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+partition p0 history,
+partition p1 history);
+ERROR HY000: Wrong partitions for `t1`: must have at least one HISTORY and exactly one last CURRENT
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+partition pn current,
+partition p0 history);
+ERROR HY000: Wrong partitions for `t1`: must have at least one HISTORY and exactly one last CURRENT
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+partition p0,
+partition pn current);
+ERROR HY000: Wrong partitions for `t1`: must have at least one HISTORY and exactly one last CURRENT
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+partition p0 history,
+partition pn current);
+## ALTER TABLE
+alter table t1 add partition (
+partition p1 current);
+ERROR HY000: Wrong partitions for `t1`: must have at least one HISTORY and exactly one last CURRENT
+alter table t1 add partition (
+partition p1 history);
+Warnings:
+Warning 4113 Maybe missing parameters: no rotation condition for multiple HISTORY partitions.
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `x` int(11) DEFAULT NULL
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+ PARTITION BY SYSTEM_TIME
+(PARTITION `p0` HISTORY ENGINE = DEFAULT_ENGINE,
+ PARTITION `p1` HISTORY ENGINE = DEFAULT_ENGINE,
+ PARTITION `pn` CURRENT ENGINE = DEFAULT_ENGINE)
+insert into t1 values (1), (2);
+alter table t1 drop partition pn;
+ERROR HY000: Wrong partitions for `t1`: must have at least one HISTORY and exactly one last CURRENT
+alter table t1 drop partition p1;
+alter table t1 drop partition p0;
+ERROR HY000: Wrong partitions for `t1`: must have at least one HISTORY and exactly one last CURRENT
+select x from t1;
+x
+1
+2
+# Bug #260: incorrect IB partitioning warning
+create or replace table t1 (x int)
+with system versioning
+partition by system_time limit 1 (
+partition p0 history,
+partition pn current);
+alter table t1 change x big int;
+create or replace table t1 (i int) engine myisam partition by hash(i) partitions 2;
+alter table t1 add partition (partition px history);
+ERROR HY000: Wrong partitioning type, expected type: `SYSTEM_TIME`
+## INSERT, UPDATE, DELETE
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+partition p0 history,
+partition pn current);
+set @now= now(6);
+insert into t1 values (1);
+set @str= concat('select x, row_start < @now as A, row_end > @now as B from t1 partition (p0)');
+prepare select_p0 from @str;
+set @str= concat('select x, row_start > @now as C, row_end = timestamp\'2038-01-19 03:14:07.999999\' as D from t1 partition (pn)');
+prepare select_pn from @str;
+execute select_p0;
+x A B
+execute select_pn;
+x C D
+1 1 1
+## pruning check
+explain partitions select * from tN;
+id select_type table partitions type possible_keys key key_len ref rows Extra
+N SIMPLE tN pN,pn system NULL NULL NULL NULL N
+set @str= concat('select row_start from t1 partition (pn) into @ts0');
+prepare stmt from @str;
+execute stmt;
+drop prepare stmt;
+set @now= now(6);
+delete from t1;
+execute select_p0;
+x A B
+1 1 1
+execute select_pn;
+x C D
+set @str= concat('select row_start from t1 partition (p0) into @ts1');
+prepare stmt from @str;
+execute stmt;
+drop prepare stmt;
+select @ts0 = @ts1;
+@ts0 = @ts1
+1
+set @now= now(6);
+insert into t1 values (2);
+execute select_p0;
+x A B
+1 1 0
+execute select_pn;
+x C D
+2 1 1
+set @str= concat('select row_start from t1 partition (pn) into @ts0');
+prepare stmt from @str;
+execute stmt;
+drop prepare stmt;
+set @now= now(6);
+update t1 set x = x + 1;
+execute select_p0;
+x A B
+1 1 0
+2 1 1
+execute select_pn;
+x C D
+3 1 1
+drop prepare select_p0;
+drop prepare select_pn;
+set @str= concat('select row_start from t1 partition (p0) where x = 2 into @ts1');
+prepare stmt from @str;
+execute stmt;
+drop prepare stmt;
+set @str= concat('select row_end from t1 partition (p0) where x = 2 into @ts2');
+prepare stmt from @str;
+execute stmt;
+drop prepare stmt;
+set @str= concat('select row_start from t1 partition (pn) into @ts3');
+prepare stmt from @str;
+execute stmt;
+drop prepare stmt;
+select @ts0 = @ts1;
+@ts0 = @ts1
+1
+select @ts2 = @ts3;
+@ts2 = @ts3
+1
+## rotation by LIMIT
+create or replace table t1 (x int)
+with system versioning
+partition by system_time limit 0 (
+partition p0 history,
+partition p1 history,
+partition pn current);
+ERROR HY000: Wrong parameters for partitioned `t1`: wrong value for 'LIMIT'
+create or replace table t1 (x int)
+with system versioning
+partition by system_time limit 2 (
+partition p0 history,
+partition p1 history,
+partition pn current);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `x` int(11) DEFAULT NULL
+) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+ PARTITION BY SYSTEM_TIME LIMIT 2
+(PARTITION `p0` HISTORY ENGINE = DEFAULT_ENGINE,
+ PARTITION `p1` HISTORY ENGINE = DEFAULT_ENGINE,
+ PARTITION `pn` CURRENT ENGINE = DEFAULT_ENGINE)
+alter table t1 drop partition non_existent;
+ERROR HY000: Error in list of partitions to DROP
+insert into t1 values (1), (2), (3);
+select * from t1 partition (pn);
+x
+1
+2
+3
+### warn about partition switching
+delete from t1;
+Warnings:
+Note 4114 Versioned table `test`.`t1`: switching from partition `p0` to `p1`
+select * from t1 partition (p0);
+x
+1
+2
+select * from t1 partition (p1);
+x
+3
+insert into t1 values (4), (5);
+### warn about full partition
+delete from t1;
+Warnings:
+Warning 4112 Versioned table `test`.`t1`: partition `p1` is full, add more HISTORY partitions
+select * from t1 partition (p1) order by x;
+x
+3
+4
+5
+### Assertion in ALTER on warning from partitioning LIMIT [#446]
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1), (2);
+delete from t1;
+alter table t1 partition by system_time limit 1 (
+partition p1 history,
+partition pn current);
+Warnings:
+Note 4112 Versioned table `test`.`t1`: partition `p1` is full, add more HISTORY partitions
+## rotation by INTERVAL
+create or replace table t1 (x int)
+with system versioning
+partition by system_time interval 0 second (
+partition p0 history,
+partition p1 history,
+partition pn current);
+ERROR HY000: Wrong parameters for partitioned `t1`: wrong value for 'INTERVAL'
+create or replace table t1 (x int)
+with system versioning
+partition by system_time interval 1 second (
+partition p0 history,
+partition p1 history,
+partition pn current);
+insert into t1 values (1), (2), (3);
+select * from t1 partition (pn);
+x
+1
+2
+3
+delete from t1;
+select * from t1 partition (p0);
+x
+1
+2
+3
+insert into t1 values (4);
+delete from t1;
+Warnings:
+Note 4114 Versioned table `test`.`t1`: switching from partition `p0` to `p1`
+select * from t1 partition (p1);
+x
+4
+## Subpartitions
+create or replace table t1 (x int)
+with system versioning
+partition by system_time limit 2
+subpartition by key (x)
+subpartitions 2 (
+partition p0 history,
+partition p1 history,
+partition pn current);
+insert into t1 (x) values (1), (2), (3), (4), (5);
+select * from t1 partition (pnsp0);
+x
+1
+3
+5
+select * from t1 partition (pnsp1);
+x
+2
+4
+### warn about partition switching and about full partition
+delete from t1;
+Warnings:
+Note 4114 Versioned table `test`.`t1`: switching from partition `p0` to `p1`
+Warning 4112 Versioned table `test`.`t1`: partition `p1` is full, add more HISTORY partitions
+select * from t1 partition (p0sp0);
+x
+1
+3
+select * from t1 partition (p0sp1);
+x
+select * from t1 partition (p1sp0);
+x
+5
+select * from t1 partition (p1sp1);
+x
+2
+4
+create or replace table t1 (a bigint)
+with system versioning
+partition by range (a)
+(partition p0 values less than (20) engine innodb,
+partition p1 values less than maxvalue engine innodb);
+insert into t1 values (1);
+create or replace table t1 (
+f_int1 integer default 0
+) with system versioning
+partition by range(f_int1)
+subpartition by hash(f_int1)
+( partition part1 values less than (1000)
+(subpartition subpart11 storage engine = 'innodb',
+subpartition subpart12 storage engine = 'innodb'));
+insert into t1 values (1);
+create or replace table t1 (i int) engine=innodb partition by key(i);
+alter table t1 add system versioning;
+insert into t1 values();
+# MDEV-14722 Assertion in ha_commit_trans for sub-statement
+create or replace table t1 (i int) with system versioning
+partition by system_time interval 1 day (
+partition p1 history,
+partition pc current);
+create or replace table t2 (f int);
+create or replace trigger tr before insert on t2
+for each row select table_rows from information_schema.tables
+where table_name = 't1' into @a;
+insert into t2 values (1);
+# MDEV-14740 Locking assertion for system_time partitioning
+create or replace table t1 (i int) with system versioning
+partition by system_time interval 1 week (
+partition p1 history,
+partition pn current);
+create or replace table t2 (f int);
+create or replace trigger tr before insert on t2
+for each row select count(*) from t1 into @a;
+insert into t2 values (1);
+# MDEV-14741 Assertion `(trx)->start_file == 0' failed in row_truncate_table_for_mysql()
+create or replace table t1 (i int) with system versioning
+partition by system_time interval 1 hour (
+partition p1 history,
+partition pn current);
+set autocommit= off;
+truncate table t1;
+set autocommit= on;
+# MDEV-14747 ALTER PARTITION BY SYSTEM_TIME after LOCK TABLES
+create or replace table t1 (x int) with system versioning;
+lock table t1 write;
+alter table t1 partition by system_time interval 1 week (
+partition p1 history,
+partition pn current);
+unlock tables;
+# MDEV-14748 Assertion in ha_myisammrg::attach_children()
+create or replace table t1 (x int) engine=myisam with system versioning
+partition by system_time interval 1 month (partition p1 history, partition pn current);
+create or replace table t2 (x int) engine=myisam;
+create or replace table t3 (x int) engine=merge union=(t2);
+create or replace table t4 (x int) engine=myisam;
+create or replace trigger tr after insert on t4 for each row insert into t2
+( select x from t3 ) union ( select x from t1 );
+insert into t4 values (1);
+# MDEV-14821 Assertion failure
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (0), (1);
+update t1 set x= x + 1;
+alter table t1 partition by system_time limit 1 (
+partition p1 history,
+partition p2 history,
+partition pn current);
+Warnings:
+Note 4114 Versioned table `test`.`t1`: switching from partition `p1` to `p2`
+delete from t1 where x = 1;
+Warnings:
+Warning 4112 Versioned table `test`.`t1`: partition `p2` is full, add more HISTORY partitions
+delete from t1 where x = 2;
+Warnings:
+Warning 4112 Versioned table `test`.`t1`: partition `p2` is full, add more HISTORY partitions
+# MDEV-14923 Assertion upon INSERT into locked versioned partitioned table
+create or replace table t1 (x int) with system versioning
+partition by system_time (partition p1 history, partition pn current);
+lock table t1 write;
+alter table t1 add partition (partition p1 history);
+ERROR HY000: Duplicate partition name p1
+insert into t1 values (1);
+unlock tables;
+# Test cleanup
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/r/replace.result b/mysql-test/suite/versioning/r/replace.result
new file mode 100644
index 00000000000..54ab5b49c2a
--- /dev/null
+++ b/mysql-test/suite/versioning/r/replace.result
@@ -0,0 +1,10 @@
+call create_table('t', 'x int');
+insert t values (1, 2);
+replace t values (1, 3);
+select *, row_end>TIMESTAMP'2038-01-01 00:00:00' as current from t for system_time all
+order by x;
+id x current
+1 2 0
+1 3 1
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/r/rpl.result b/mysql-test/suite/versioning/r/rpl.result
new file mode 100644
index 00000000000..b91c8fd33c8
--- /dev/null
+++ b/mysql-test/suite/versioning/r/rpl.result
@@ -0,0 +1,118 @@
+include/master-slave.inc
+[connection master]
+connection slave;
+connection master;
+CREATE TABLE t1 (x int) with system versioning;
+insert into t1 values (1);
+SELECT * FROM t1;
+x
+1
+delete from t1;
+select * from t1;
+x
+select * from t1 for system_time all;
+x
+1
+connection slave;
+select * from t1;
+x
+select * from t1 for system_time all;
+x
+1
+connection master;
+insert into t1 values (2);
+connection slave;
+select * from t1;
+x
+2
+connection master;
+update t1 set x = 3;
+connection slave;
+select * from t1;
+x
+3
+select * from t1 for system_time all;
+x
+1
+3
+2
+connection master;
+create or replace table t1 (x int primary key);
+connection slave;
+alter table t1 with system versioning;
+connection master;
+insert into t1 values (1);
+connection slave;
+select * from t1;
+x
+1
+select * from t1 for system_time all;
+x
+1
+connection master;
+update t1 set x= 2 where x = 1;
+connection slave;
+select * from t1;
+x
+2
+select * from t1 for system_time all;
+x
+1
+2
+connection master;
+delete from t1;
+connection slave;
+select * from t1;
+x
+select * from t1 for system_time all;
+x
+1
+2
+connection master;
+create or replace table t1 (x int);
+connection slave;
+alter table t1 with system versioning;
+connection master;
+insert into t1 values (1);
+update t1 set x= 2 where x = 1;
+connection slave;
+select * from t1;
+x
+2
+select * from t1 for system_time all;
+x
+2
+1
+connection master;
+delete from t1;
+connection slave;
+select * from t1;
+x
+select * from t1 for system_time all;
+x
+2
+1
+connection master;
+create or replace table t1 (x int) with system versioning;
+create or replace table t2 (x int) with system versioning;
+insert into t1 values (1);
+insert into t2 values (2);
+update t1, t2 set t1.x=11, t2.x=22;
+connection slave;
+select * from t1;
+x
+11
+select * from t2;
+x
+22
+select * from t1 for system_time all;
+x
+11
+1
+select * from t2 for system_time all;
+x
+22
+2
+connection master;
+drop table t1, t2;
+include/rpl_end.inc
diff --git a/mysql-test/suite/versioning/r/select.result b/mysql-test/suite/versioning/r/select.result
new file mode 100644
index 00000000000..1f7e0306b9b
--- /dev/null
+++ b/mysql-test/suite/versioning/r/select.result
@@ -0,0 +1,515 @@
+create or replace table t1 (
+x int unsigned,
+y int unsigned,
+sys_trx_start SYS_DATATYPE as row start invisible,
+sys_trx_end SYS_DATATYPE as row end invisible,
+period for system_time (sys_trx_start, sys_trx_end)
+) with system versioning;
+insert into t1 (x, y) values
+(0, 100),
+(1, 101),
+(2, 102),
+(3, 103),
+(4, 104),
+(5, 105),
+(6, 106),
+(7, 107),
+(8, 108),
+(9, 109);
+set @t0= now(6);
+delete from t1 where x = 3;
+delete from t1 where x > 7;
+insert into t1(x, y) values(3, 33);
+select sys_trx_start from t1 where x = 3 and y = 33 into @t1;
+select x, y from t1;
+x y
+0 100
+1 101
+2 102
+4 104
+5 105
+6 106
+7 107
+3 33
+select x as ASOF_x, y from t1 for system_time as of timestamp @t0;
+ASOF_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+select x as FROMTO_x, y from t1 for system_time from timestamp '0-0-0 0:0:0' to timestamp @t1;
+FROMTO_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+select x as BETWAND_x, y from t1 for system_time between timestamp '0-0-0 0:0:0' and timestamp @t1;
+BETWAND_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+3 33
+select x as ALL_x, y from t1 for system_time all;
+ALL_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+3 33
+ASOF2_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+FROMTO2_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+BETWAND2_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+3 33
+create or replace table t1 (
+x int unsigned,
+y int unsigned
+) with system versioning;
+create or replace table t2 (
+x int unsigned,
+y int unsigned
+) with system versioning;
+insert into t1 values (1, 1), (1, 2), (1, 3), (4, 4), (5, 5);
+insert into t2 values (1, 2), (2, 1), (3, 1);
+set @t0= now(6);
+select t1.x as IJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x;
+IJ1_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+select t1.x as LJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 left join t2 on t1.x = t2.x;
+LJ1_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+4 4 NULL NULL
+5 5 NULL NULL
+select t1.x as RJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x;
+RJ1_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+NULL NULL 2 1
+NULL NULL 3 1
+delete from t1;
+delete from t2;
+explain extended select * from (select t1.x as IJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
+1 SIMPLE t1 ALL NULL NULL NULL NULL 5 100.00 Using where; Using join buffer (flat, BNL join)
+Warnings:
+Note 1003 select `test`.`t1`.`x` AS `IJ2_x1`,`test`.`t1`.`y` AS `y1`,`test`.`t2`.`x` AS `x2`,`test`.`t2`.`y` AS `y2` from `test`.`t1` FOR SYSTEM_TIME ALL join `test`.`t2` FOR SYSTEM_TIME ALL where `test`.`t1`.`x` = `test`.`t2`.`x` and `test`.`t1`.`row_end` > <cache>(cast(@`t0` as datetime(6))) and `test`.`t1`.`row_start` <= <cache>(cast(@`t0` as datetime(6))) and `test`.`t2`.`row_end` > <cache>(cast(@`t0` as datetime(6))) and `test`.`t2`.`row_start` <= <cache>(cast(@`t0` as datetime(6)))
+explain extended select * from (select t1.x as LJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 left join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 5 100.00
+1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
+Warnings:
+Note 1003 select `test`.`t1`.`x` AS `LJ2_x1`,`test`.`t1`.`y` AS `y1`,`test`.`t2`.`x` AS `x2`,`test`.`t2`.`y` AS `y2` from `test`.`t1` FOR SYSTEM_TIME ALL left join `test`.`t2` FOR SYSTEM_TIME ALL on(`test`.`t2`.`x` = `test`.`t1`.`x` and `test`.`t1`.`row_end` > <cache>(cast(@`t0` as datetime(6))) and `test`.`t1`.`row_start` <= <cache>(cast(@`t0` as datetime(6))) and `test`.`t2`.`row_end` > <cache>(cast(@`t0` as datetime(6))) and `test`.`t2`.`row_start` <= <cache>(cast(@`t0` as datetime(6)))) where 1
+explain extended select * from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00
+1 SIMPLE t1 ALL NULL NULL NULL NULL 5 100.00 Using where; Using join buffer (flat, BNL join)
+Warnings:
+Note 1003 select `test`.`t1`.`x` AS `RJ2_x1`,`test`.`t1`.`y` AS `y1`,`test`.`t2`.`x` AS `x2`,`test`.`t2`.`y` AS `y2` from `test`.`t2` FOR SYSTEM_TIME ALL left join `test`.`t1` FOR SYSTEM_TIME ALL on(`test`.`t1`.`x` = `test`.`t2`.`x` and `test`.`t1`.`row_end` > <cache>(cast(@`t0` as datetime(6))) and `test`.`t1`.`row_start` <= <cache>(cast(@`t0` as datetime(6))) and `test`.`t2`.`row_end` > <cache>(cast(@`t0` as datetime(6))) and `test`.`t2`.`row_start` <= <cache>(cast(@`t0` as datetime(6)))) where 1
+select * from (select t1.x as IJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+IJ2_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+select * from (select t1.x as LJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 left join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+LJ2_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+4 4 NULL NULL
+5 5 NULL NULL
+select * from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+RJ2_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+NULL NULL 2 1
+NULL NULL 3 1
+drop table t1;
+drop table t2;
+create table t1(
+A int
+) with system versioning;
+insert into t1 values(1);
+select * from t1;
+A
+1
+create or replace table t1 (x int);
+insert into t1 values (1);
+select * from t1 for system_time all;
+ERROR HY000: Table `t1` is not system-versioned
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1);
+select * from t1 for system_time all for update;
+x
+1
+create or replace table t1 (a int not null auto_increment primary key) with system versioning;
+select * from (t1 as t2 left join t1 as t3 using (a)) natural left join t1;
+a
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (a int) with system versioning;
+insert into t1 values(1);
+insert into t2 values(1);
+create view v1 as select * from t2 inner join t1 using (a);
+select * from v1;
+a
+1
+drop view v1;
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+create view vt1 as select a from t1;
+select * from t1 natural join vt1;
+a
+1
+drop view vt1;
+create or replace table t1(x int) with system versioning;
+select * from (t1 as r left join t1 as u using (x)), t1;
+x x
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+create trigger read_end after update on t1
+for each row set @end = old.row_end;
+update t1 set a=2;
+select @end;
+@end
+MAX_RESULT
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (b int) with system versioning;
+insert into t1 values (1);
+insert into t2 values (2);
+select * from (select * from t1 cross join t2) as tmp;
+a b
+1 2
+select * from (select * from (select * from t1 cross join t2) as tmp1) as tmp2;
+a b
+1 2
+select * from (select * from t1 cross join t2 for system_time as of timestamp '0-0-0') as tmp;
+a b
+create or replace table t1(a1 int) with system versioning;
+create or replace table t2(a2 int) with system versioning;
+insert into t1 values(1),(2);
+insert into t2 values(1),(2);
+select * from t1 for system_time all natural left join t2 for system_time all;
+a1 a2
+1 1
+2 1
+1 2
+2 2
+create or replace table t1(a1 int) with system versioning;
+create or replace table t2(a2 int) with system versioning;
+insert into t1 values(1),(2);
+insert into t2 values(1),(2);
+create or replace view v1 as select a1 from t1;
+select * from v1 natural join t2;
+a1 a2
+1 1
+2 1
+1 2
+2 2
+select * from v1 natural left join t2;
+a1 a2
+1 1
+2 1
+1 2
+2 2
+select * from v1 natural right join t2;
+a2 a1
+1 1
+2 1
+1 2
+2 2
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+insert into t1 values (2);
+insert into t1 values (3);
+select * from t1 left outer join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
+a a
+2 1
+3 1
+2 2
+3 2
+2 3
+3 3
+1 NULL
+create or replace table t1 (x int) with system versioning;
+create or replace table t2 (y int) with system versioning;
+insert into t1 values (1), (2), (3);
+delete from t1 where x = 3;
+insert into t2 values (1);
+select * from t1, t2 for system_time all;
+x y
+1 1
+2 1
+select * from (select * from t1 for system_time all, t2 for system_time all)
+for system_time all as t;
+ERROR HY000: Table `t` is not system-versioned
+# TRANSACTION/TIMESTAMP specifier in SYSTEM_TIME [MDEV-14645, Issue #396]
+create or replace table t1 (x int) with system versioning engine myisam;
+select * from t1 for system_time as of transaction 1;
+ERROR HY000: Transaction system versioning for `t1` is not supported
+create or replace table t1 (
+x int,
+sys_trx_start bigint unsigned as row start invisible,
+sys_trx_end bigint unsigned as row end invisible,
+period for system_time (sys_trx_start, sys_trx_end)
+) with system versioning engine innodb;
+insert into t1 values (1);
+set @ts= now(6);
+delete from t1;
+select sys_trx_start from t1 for system_time all into @trx_start;
+## ensure @trx_start is much lower than unix timestamp
+select @trx_start < unix_timestamp(@ts) - 100 as trx_start_good;
+trx_start_good
+1
+## TIMESTAMP specifier
+select x from t1 for system_time as of timestamp @ts;
+x
+1
+select x from t1 for system_time as of timestamp unix_timestamp(@ts);
+x
+1
+select x from t1 for system_time as of timestamp @trx_start;
+x
+set @ts= timestamp'1-1-1 0:0:0';
+## TRANSACTION specifier
+select x from t1 for system_time as of transaction @ts;
+x
+select x from t1 for system_time as of transaction unix_timestamp(@ts);
+x
+select x from t1 for system_time as of transaction @trx_start;
+x
+1
+## no specifier (auto-detection)
+select x from t1 for system_time as of @ts;
+x
+select x from t1 for system_time as of unix_timestamp(@ts);
+x
+select x from t1 for system_time as of @trx_start;
+x
+1
+### Issue #365, bug 4 (related to #226, optimized fields)
+create or replace table t1 (i int, b int) with system versioning;
+insert into t1 values (0, 0), (0, 0);
+select min(i) over (partition by b) as f
+from (select i + 0 as i, b from t1) as tt
+order by i;
+f
+0
+0
+### Issue #365, bug 5 (dangling AND)
+create or replace table t1 (a int);
+create or replace table t2 (b int) with system versioning;
+select * from t1
+where exists (select 1 from t2 where t2.b = t1.a and t2.b = t1.a);
+a
+### Issue #365, bug 9 (not a derived subquery)
+create or replace table t1 (x int) with system versioning;
+select t1.x in (select x from t1) a from t1, (select x from t1) b;
+a
+### Issue #365, bug 10 (WHERE cond freed prematurely for PS)
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1);
+create or replace view v1 as select x from t1 where x = 1;
+prepare stmt from "
+select x from t1 where x in (select x from v1);";
+execute stmt;
+x
+1
+execute stmt;
+x
+1
+### Issue #365, bug 11 (WHERE cond not top level item)
+create or replace table t1 (a int, b int, key idx(a)) with system versioning;
+insert into t1 values (1, 1), (2, 2);
+select * from t1 where (a, 2) in ((1, 1), (2, 2)) and b = 1;
+a b
+### Issue #398, NOW is now non-magic
+create or replace table t1 (x int) with system versioning;
+select * from t1 for system_time as of current_timestamp;
+x
+select * from t1 for system_time as of now;
+ERROR 42S22: Unknown column 'now' in 'where clause'
+### Issue #405, NATURAL JOIN failure
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (b int);
+create or replace view v1 as select a, row_start, row_end from t1 where a > round(rand()*1000);
+select * from v1 natural join t2;
+a b
+### Issue #406, MDEV-14633 Assertion on TRT read
+create or replace table t1 (pk int primary key, i int, t time, key (i)) with system versioning;
+insert into t1 values (1, 10, '15:01:53'), (2, 20, '00:00:00');
+delete from t1;
+select * from t1 where t = '00:00:00' and i > 0 and row_end <> '2012-12-12 00:00:00';
+pk i t
+### MDEV-14816 Assertion `join->best_read < double(1.797...e+308L)' failed in bool greedy_search
+create or replace table t1 (f1 int) with system versioning;
+create or replace table t2 (f2 int) with system versioning;
+create or replace table t3 (f3 int);
+create or replace table t4 (f4 int);
+insert into t1 values (1), (2), (3), (4);
+insert into t2 values (1), (2), (3);
+insert into t3 values (1), (2);
+insert into t4 values (1);
+select * from
+t1 as t1a
+left join t2 as t2a left join (t3 as t3a inner join t1) on t2a.f2 = t3a.f3 on t1a.f1 = t2a.f2
+left join (t2 join t3 inner join t4) on t2a.f2 = t1a.f1;
+f1 f2 f3 f1 f2 f3 f4
+1 1 1 1 1 1 1
+2 2 2 1 1 1 1
+1 1 1 2 1 1 1
+2 2 2 2 1 1 1
+1 1 1 3 1 1 1
+2 2 2 3 1 1 1
+1 1 1 4 1 1 1
+2 2 2 4 1 1 1
+1 1 1 1 1 2 1
+2 2 2 1 1 2 1
+1 1 1 2 1 2 1
+2 2 2 2 1 2 1
+1 1 1 3 1 2 1
+2 2 2 3 1 2 1
+1 1 1 4 1 2 1
+2 2 2 4 1 2 1
+1 1 1 1 2 1 1
+2 2 2 1 2 1 1
+1 1 1 2 2 1 1
+2 2 2 2 2 1 1
+1 1 1 3 2 1 1
+2 2 2 3 2 1 1
+1 1 1 4 2 1 1
+2 2 2 4 2 1 1
+1 1 1 1 2 2 1
+2 2 2 1 2 2 1
+1 1 1 2 2 2 1
+2 2 2 2 2 2 1
+1 1 1 3 2 2 1
+2 2 2 3 2 2 1
+1 1 1 4 2 2 1
+2 2 2 4 2 2 1
+1 1 1 1 3 1 1
+2 2 2 1 3 1 1
+1 1 1 2 3 1 1
+2 2 2 2 3 1 1
+1 1 1 3 3 1 1
+2 2 2 3 3 1 1
+1 1 1 4 3 1 1
+2 2 2 4 3 1 1
+1 1 1 1 3 2 1
+2 2 2 1 3 2 1
+1 1 1 2 3 2 1
+2 2 2 2 3 2 1
+1 1 1 3 3 2 1
+2 2 2 3 3 2 1
+1 1 1 4 3 2 1
+2 2 2 4 3 2 1
+3 3 NULL NULL 1 1 1
+3 3 NULL NULL 1 2 1
+3 3 NULL NULL 2 1 1
+3 3 NULL NULL 2 2 1
+3 3 NULL NULL 3 1 1
+3 3 NULL NULL 3 2 1
+4 NULL NULL NULL NULL NULL NULL
+drop view v1;
+drop table t1, t2, t3, t4;
+call verify_vtq_dummy(34);
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+3 1 1 1 1
+4 1 1 1 1
+5 1 1 1 1
+6 1 1 1 1
+7 1 1 1 1
+8 1 1 1 1
+9 1 1 1 1
+10 1 1 1 1
+11 1 1 1 1
+12 1 1 1 1
+13 1 1 1 1
+14 1 1 1 1
+15 1 1 1 1
+16 1 1 1 1
+17 1 1 1 1
+18 1 1 1 1
+19 1 1 1 1
+20 1 1 1 1
+21 1 1 1 1
+22 1 1 1 1
+23 1 1 1 1
+24 1 1 1 1
+25 1 1 1 1
+26 1 1 1 1
+27 1 1 1 1
+28 1 1 1 1
+29 1 1 1 1
+30 1 1 1 1
+31 1 1 1 1
+32 1 1 1 1
+33 1 1 1 1
+34 1 1 1 1
diff --git a/mysql-test/suite/versioning/r/select2,myisam.rdiff b/mysql-test/suite/versioning/r/select2,myisam.rdiff
new file mode 100644
index 00000000000..b24682fbb9f
--- /dev/null
+++ b/mysql-test/suite/versioning/r/select2,myisam.rdiff
@@ -0,0 +1,38 @@
+--- suite/versioning/r/select_sp.result
++++ suite/versioning/r/select_sp.result
+@@ -22,8 +22,6 @@
+ delete from t1 where x > 7;
+ insert into t1(x, y) values(3, 33);
+ select sys_start from t1 where x = 3 and y = 33 into @t1;
+-set @x1= @t1;
+-select vtq_commit_ts(@x1) into @t1;
+ select x, y from t1;
+ x y
+ 0 100
+@@ -84,7 +82,7 @@
+ 8 108
+ 9 109
+ 3 33
+-select x as ASOF2_x, y from t1 for system_time as of @x0;
++select x as ASOF2_x, y from t1 for system_time as of @t0;
+ ASOF2_x y
+ 0 100
+ 1 101
+@@ -96,7 +94,7 @@
+ 7 107
+ 8 108
+ 9 109
+-select x as FROMTO2_x, y from t1 for system_time from @x0 to @x1;
++select x as FROMTO2_x, y from t1 for system_time from '0-0-0 0:0:0' to @t1;
+ FROMTO2_x y
+ 0 100
+ 1 101
+@@ -108,7 +106,7 @@
+ 7 107
+ 8 108
+ 9 109
+-select x as BETWAND2_x, y from t1 for system_time between transaction @x0 and transaction @x1;
++select x as BETWAND2_x, y from t1 for system_time between timestamp '0-0-0 0:0:0' and timestamp @t1;
+ BETWAND2_x y
+ 0 100
+ 1 101
diff --git a/mysql-test/suite/versioning/r/select2.result b/mysql-test/suite/versioning/r/select2.result
new file mode 100644
index 00000000000..79c4416a291
--- /dev/null
+++ b/mysql-test/suite/versioning/r/select2.result
@@ -0,0 +1,338 @@
+create table t1(
+x int unsigned,
+y int unsigned,
+sys_start SYS_TYPE as row start invisible,
+sys_end SYS_TYPE as row end invisible,
+period for system_time (sys_start, sys_end))
+with system versioning engine=ENGINE;
+insert into t1 (x, y) values
+(0, 100),
+(1, 101),
+(2, 102),
+(3, 103),
+(4, 104),
+(5, 105),
+(6, 106),
+(7, 107),
+(8, 108),
+(9, 109);
+set @t0= now(6);
+select sys_start from t1 limit 1 into @x0;
+delete from t1 where x = 3;
+delete from t1 where x > 7;
+insert into t1(x, y) values(3, 33);
+select sys_start from t1 where x = 3 and y = 33 into @t1;
+set @x1= @t1;
+select vtq_commit_ts(@x1) into @t1;
+select x, y from t1;
+x y
+0 100
+1 101
+2 102
+4 104
+5 105
+6 106
+7 107
+3 33
+select x as ASOF_x, y from t1 for system_time as of timestamp @t0;
+ASOF_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+select x as FROMTO_x, y from t1 for system_time from '0-0-0 0:0:0' to timestamp @t1;
+FROMTO_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+select x as BETWAND_x, y from t1 for system_time between '0-0-0 0:0:0' and timestamp @t1;
+BETWAND_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+3 33
+select x as ALL_x, y from t1 for system_time all;
+ALL_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+3 33
+select x as ASOF2_x, y from t1 for system_time as of @x0;
+ASOF2_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+select x as FROMTO2_x, y from t1 for system_time from @x0 to @x1;
+FROMTO2_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+select x as BETWAND2_x, y from t1 for system_time between transaction @x0 and transaction @x1;
+BETWAND2_x y
+0 100
+1 101
+2 102
+3 103
+4 104
+5 105
+6 106
+7 107
+8 108
+9 109
+3 33
+drop table t1;
+create table t1(
+x int,
+y int,
+sys_start SYS_TYPE as row start invisible,
+sys_end SYS_TYPE as row end invisible,
+period for system_time (sys_start, sys_end))
+with system versioning engine=ENGINE;
+create table t2 like t1;
+insert into t1 values (1, 1), (1, 2), (1, 3), (4, 4), (5, 5);
+insert into t2 values (1, 2), (2, 1), (3, 1);
+set @t0= now(6);
+select t1.x as IJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x;
+IJ1_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+select t1.x as LJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 left join t2 on t1.x = t2.x;
+LJ1_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+4 4 NULL NULL
+5 5 NULL NULL
+select t1.x as RJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x;
+RJ1_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+NULL NULL 2 1
+NULL NULL 3 1
+delete from t1;
+delete from t2;
+select IJ2_x1,y1,x2,y2 from (select t1.x as IJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+IJ2_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+select LJ2_x1,y1,x2,y2 from (select t1.x as LJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 left join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+LJ2_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+4 4 NULL NULL
+5 5 NULL NULL
+select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+RJ2_x1 y1 x2 y2
+1 1 1 2
+1 2 1 2
+1 3 1 2
+NULL NULL 2 1
+NULL NULL 3 1
+drop table t1;
+drop table t2;
+# MDEV-14686 Server crashes in Item_field::used_tables on 2nd call of SP [#422]
+create or replace table t1 (called int, bad int) with system versioning;
+create or replace procedure bad() select * from t1 where bad in (select called from t1);
+called bad
+called bad
+called bad
+called bad
+called bad
+called bad
+called bad
+called bad
+# bad() is good.
+# MDEV-14751 Server crashes in TABLE::versioned on 2nd execution of SP [#431]
+create or replace table t1 (called_bad int);
+create or replace table t2 (b int);
+create or replace procedure bad() select * from t1 where ( 5, 6 ) in ( select b, b from t2 ) and called_bad in ( select max(b) from t2 );
+called_bad
+called_bad
+called_bad
+called_bad
+called_bad
+called_bad
+called_bad
+called_bad
+# bad() is good.
+# MDEV-14786 Server crashes in Item_cond::transform on 2nd execution of SP querying from a view [#436]
+create or replace table t1 (called_bad int) with system versioning;
+create or replace view v1 as select called_bad from t1 where called_bad < 5;
+create or replace procedure bad() select called_bad from v1;
+called_bad
+called_bad
+called_bad
+called_bad
+called_bad
+called_bad
+called_bad
+called_bad
+# bad() is good.
+# wildcard expansion on hidden fields.
+create or replace table t1(
+A int
+) with system versioning;
+insert into t1 values(1);
+select * from t1;
+A
+1
+create or replace table t1 (x int);
+insert into t1 values (1);
+select * from t1 for system_time all;
+ERROR HY000: Table `t1` is not system-versioned
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1);
+select * from t1 for system_time as of now() for update;
+x
+1
+create or replace table t1 (a int not null auto_increment primary key) with system versioning;
+select * from (t1 as t2 left join t1 as t3 using (a)) natural left join t1;
+a
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (a int) with system versioning;
+insert into t1 values(1);
+insert into t2 values(1);
+create or replace view v1 as select * from t2 inner join t1 using (a);
+select * from v1;
+a
+1
+drop view v1;
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+create view vt1 as select a from t1;
+select * from t1 natural join vt1;
+a
+1
+drop view vt1;
+create or replace table t1(x int) with system versioning;
+select * from (t1 as r left join t1 as u using (x)), t1;
+x x
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+create trigger read_end after update on t1
+for each row set @end = old.row_end;
+update t1 set a=2;
+select @end;
+@end
+MAX_RESULT
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (b int) with system versioning;
+insert into t1 values (1);
+insert into t2 values (2);
+select * from (select * from t1 cross join t2) as tmp;
+a b
+1 2
+select * from (select * from (select * from t1 cross join t2) as tmp1) as tmp2;
+a b
+1 2
+select * from (select * from t1 cross join t2 for system_time as of timestamp '0-0-0') as tmp;
+a b
+create or replace table t1(a1 int) with system versioning;
+create or replace table t2(a2 int) with system versioning;
+insert into t1 values(1),(2);
+insert into t2 values(1),(2);
+select * from t1 for system_time all natural left join t2 for system_time all;
+a1 a2
+1 1
+2 1
+1 2
+2 2
+create or replace table t1(a1 int) with system versioning;
+create or replace table t2(a2 int) with system versioning;
+insert into t1 values(1),(2);
+insert into t2 values(1),(2);
+create or replace view v1 as select a1 from t1;
+select * from v1 natural join t2;
+a1 a2
+1 1
+2 1
+1 2
+2 2
+select * from v1 natural left join t2;
+a1 a2
+1 1
+2 1
+1 2
+2 2
+select * from v1 natural right join t2;
+a2 a1
+1 1
+2 1
+1 2
+2 2
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+insert into t1 values (2);
+insert into t1 values (3);
+select * from t1 left outer join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
+a a
+2 1
+3 1
+2 2
+3 2
+2 3
+3 3
+1 NULL
+create or replace table t1 (x int) with system versioning;
+create or replace table t2 (y int) with system versioning;
+insert into t1 values (1), (2), (3);
+delete from t1 where x = 3;
+insert into t2 values (1);
+select * from t1, t2 for system_time all;
+x y
+1 1
+2 1
+select * from (select * from t1 for system_time all, t2 for system_time all) for system_time all as t;
+ERROR HY000: Table `t` is not system-versioned
+select * from (t1 for system_time all join t2 for system_time all) for system_time all;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
+drop view v1;
+drop table t1, t2;
diff --git a/mysql-test/suite/versioning/r/simple.result b/mysql-test/suite/versioning/r/simple.result
new file mode 100644
index 00000000000..f6a1ba37f53
--- /dev/null
+++ b/mysql-test/suite/versioning/r/simple.result
@@ -0,0 +1,73 @@
+set default_storage_engine=innodb;
+create or replace table dept (
+dept_id int(10) primary key,
+name varchar(100)
+)
+with system versioning;
+create or replace table emp (
+emp_id int(10) primary key,
+dept_id int(10),
+name varchar(100),
+salary int(10),
+constraint `dept-emp-fk`
+ foreign key (dept_id) references dept (dept_id)
+on delete cascade
+on update restrict
+)
+with system versioning;
+select now() into @ts_0;
+insert into dept (dept_id, name) values (10, "accounting");
+commit;
+select row_start into @ts_1 from dept where dept_id=10;
+insert into emp (emp_id, name, salary, dept_id) values (1, "bill", 1000, 10);
+commit;
+select row_start into @ts_2 from emp where name="bill";
+select * from emp;
+emp_id dept_id name salary
+1 10 bill 1000
+update emp set salary=2000 where name="bill";
+commit;
+select row_start into @ts_3 from emp where name="bill";
+select * from emp;
+emp_id dept_id name salary
+1 10 bill 2000
+select * from emp for system_time as of timestamp @ts_2;
+emp_id dept_id name salary
+1 10 bill 1000
+select * from emp for system_time as of timestamp @ts_3;
+emp_id dept_id name salary
+1 10 bill 2000
+select * from emp e, dept d
+where d.dept_id = 10
+and d.dept_id = e.dept_id;
+emp_id dept_id name salary dept_id name
+1 10 bill 2000 10 accounting
+select * from
+emp for system_time from timestamp @ts_1 to timestamp @ts_2 e,
+dept for system_time from timestamp @ts_1 to timestamp @ts_2 d
+where d.dept_id = 10
+and d.dept_id = e.dept_id;
+emp_id dept_id name salary dept_id name
+set statement system_versioning_asof=@ts_0 for
+select * from emp e, dept d
+where d.dept_id = 10
+and d.dept_id = e.dept_id;
+emp_id dept_id name salary dept_id name
+set statement system_versioning_asof=@ts_1 for
+select * from emp e, dept d
+where d.dept_id = 10
+and d.dept_id = e.dept_id;
+emp_id dept_id name salary dept_id name
+set statement system_versioning_asof=@ts_2 for
+select * from emp e, dept d
+where d.dept_id = 10
+and d.dept_id = e.dept_id;
+emp_id dept_id name salary dept_id name
+1 10 bill 1000 10 accounting
+set statement system_versioning_asof=@ts_3 for
+select * from emp e, dept d
+where d.dept_id = 10
+and d.dept_id = e.dept_id;
+emp_id dept_id name salary dept_id name
+1 10 bill 2000 10 accounting
+drop table emp, dept;
diff --git a/mysql-test/suite/versioning/r/sysvars.result b/mysql-test/suite/versioning/r/sysvars.result
new file mode 100644
index 00000000000..22f53ca6fbe
--- /dev/null
+++ b/mysql-test/suite/versioning/r/sysvars.result
@@ -0,0 +1,129 @@
+create table t (a int) with system versioning;
+insert into t values (1);
+update t set a= 2;
+show global variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof DEFAULT
+show variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof DEFAULT
+select * from t;
+a
+2
+set system_versioning_asof= '2031-1-1 0:0:0';
+show variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof 2031-01-01 00:00:00.000000
+select * from t;
+a
+2
+set system_versioning_asof= '2011-1-1 0:0:0';
+show variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof 2011-01-01 00:00:00.000000
+select * from t;
+a
+set global system_versioning_asof= 'alley';
+ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of 'alley'
+set global system_versioning_asof= null;
+ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of 'NULL'
+set global system_versioning_asof= 1;
+ERROR 42000: Incorrect argument type to variable 'system_versioning_asof'
+set global system_versioning_asof= 1.1;
+ERROR 42000: Incorrect argument type to variable 'system_versioning_asof'
+set system_versioning_asof= 'alley';
+ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of 'alley'
+set system_versioning_asof= null;
+ERROR 42000: Variable 'system_versioning_asof' can't be set to the value of 'NULL'
+set system_versioning_asof= 1;
+ERROR 42000: Incorrect argument type to variable 'system_versioning_asof'
+set system_versioning_asof= 1.1;
+ERROR 42000: Incorrect argument type to variable 'system_versioning_asof'
+# GLOBAL @@system_versioning_asof
+set global system_versioning_asof= '1911-11-11 11:11:11.1111119';
+Warnings:
+Note 1292 Truncated incorrect datetime value: '1911-11-11 11:11:11.1111119'
+Note 1292 Truncated incorrect datetime value: '1911-11-11 11:11:11.1111119'
+show global variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof 1911-11-11 11:11:11.111111
+set global system_versioning_asof= '1900-01-01 00:00:00';
+show global variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof 1900-01-01 00:00:00.000000
+set global system_versioning_asof= timestamp'1911-11-11 11:11:11.1111119';
+Warnings:
+Note 1292 Truncated incorrect datetime value: '1911-11-11 11:11:11.1111119'
+show global variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof 1911-11-11 11:11:11.111111
+set @ts= timestamp'1900-01-01 00:00:00';
+set global system_versioning_asof= @ts;
+show global variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof 1900-01-01 00:00:00.000000
+set global system_versioning_asof= default;
+select @@global.system_versioning_asof;
+@@global.system_versioning_asof
+DEFAULT
+# SESSION @@system_versioning_asof
+set system_versioning_asof= '1911-11-11 11:11:11.1111119';
+Warnings:
+Note 1292 Truncated incorrect datetime value: '1911-11-11 11:11:11.1111119'
+Note 1292 Truncated incorrect datetime value: '1911-11-11 11:11:11.1111119'
+show variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof 1911-11-11 11:11:11.111111
+set system_versioning_asof= '1900-01-01 00:00:00';
+show variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof 1900-01-01 00:00:00.000000
+set system_versioning_asof= timestamp'1911-11-11 11:11:11.1111119';
+Warnings:
+Note 1292 Truncated incorrect datetime value: '1911-11-11 11:11:11.1111119'
+show variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof 1911-11-11 11:11:11.111111
+set @ts= timestamp'1900-01-01 00:00:00';
+set system_versioning_asof= @ts;
+show variables like 'system_versioning_asof';
+Variable_name Value
+system_versioning_asof 1900-01-01 00:00:00.000000
+# DEFAULT: value is copied from GLOBAL to SESSION
+set global system_versioning_asof= timestamp'1911-11-11 11:11:11.111111';
+set system_versioning_asof= '1900-01-01 00:00:00';
+select @@global.system_versioning_asof != @@system_versioning_asof as different;
+different
+1
+set system_versioning_asof= default;
+select @@global.system_versioning_asof = @@system_versioning_asof as equal;
+equal
+1
+set global system_versioning_asof= DEFAULT;
+set system_versioning_asof= DEFAULT;
+select @@global.system_versioning_asof, @@system_versioning_asof;
+@@global.system_versioning_asof @@system_versioning_asof
+DEFAULT DEFAULT
+select * from t for system_time all;
+a
+2
+1
+select * from t;
+a
+2
+select * from t for system_time as of timestamp current_timestamp(6);
+a
+2
+select * from t for system_time all;
+a
+2
+1
+select * from t for system_time from '0-0-0' to current_timestamp(6);
+a
+2
+1
+select * from t for system_time between '0-0-0' and current_timestamp(6);
+a
+2
+1
+drop table t;
diff --git a/mysql-test/suite/versioning/r/truncate.result b/mysql-test/suite/versioning/r/truncate.result
new file mode 100644
index 00000000000..48b7fbbcf55
--- /dev/null
+++ b/mysql-test/suite/versioning/r/truncate.result
@@ -0,0 +1,71 @@
+create table t (a int);
+delete history from t before system_time now();
+ERROR HY000: Table `t` is not system-versioned
+create or replace table t (a int) with system versioning;
+insert into t values (1);
+update t set a=2;
+set @test = 'correct';
+create trigger trg_before before delete on t for each row set @test = 'incorrect';
+create trigger trg_after after delete on t for each row set @test = 'incorrect';
+delete history from t;
+select @test from t;
+@test
+correct
+drop table t;
+create table t (a int) with system versioning;
+insert into t values (1), (2);
+update t set a=11 where a=1;
+set @ts1=now(6);
+update t set a=22 where a=2;
+select * from t for system_time all;
+a
+11
+22
+1
+2
+delete history from t before system_time timestamp @ts1;
+select * from t for system_time all;
+a
+11
+22
+2
+prepare stmt from 'delete history from t';
+execute stmt;
+drop prepare stmt;
+select * from t for system_time all;
+a
+11
+22
+delete from t;
+create or replace procedure truncate_sp()
+begin
+delete history from t before system_time timestamp now(6);
+end~~
+call truncate_sp;
+select * from t for system_time all;
+a
+drop procedure truncate_sp;
+### Issue #399, truncate partitioned table is now unimplemented
+create or replace table t (a int)
+with system versioning
+engine myisam
+partition by system_time (
+partition p0 history,
+partition pn current);
+delete history from t;
+ERROR 42000: The used command is not allowed with this MariaDB version
+create or replace table t (i int) with system versioning;
+delete history from t;
+create or replace view v as select * from t;
+delete history from v;
+ERROR HY000: DELETE HISTORY from VIEW is prohibited
+create or replace table t (i int);
+delete history from t;
+ERROR HY000: Table `t` is not system-versioned
+create or replace view v as select * from t;
+delete history from v;
+ERROR HY000: DELETE HISTORY from VIEW is prohibited
+prepare stmt from 'delete history from t';
+ERROR HY000: Table `t` is not system-versioned
+drop table t;
+drop view v;
diff --git a/mysql-test/suite/versioning/r/truncate_privilege.result b/mysql-test/suite/versioning/r/truncate_privilege.result
new file mode 100644
index 00000000000..e378407afde
--- /dev/null
+++ b/mysql-test/suite/versioning/r/truncate_privilege.result
@@ -0,0 +1,33 @@
+connect root,localhost,root,,test;
+connection root;
+create database mysqltest;
+create user mysqltest_1@localhost;
+connect user1,localhost,mysqltest_1,,test;
+connection user1;
+connection root;
+create table mysqltest.t (a int) with system versioning;
+connection user1;
+show grants;
+Grants for mysqltest_1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
+delete history from mysqltest.t before system_time now();
+ERROR 42000: DELETE VERSIONING ROWS command denied to user 'mysqltest_1'@'localhost' for table 't'
+connection root;
+grant delete history on mysqltest.* to mysqltest_1@localhost;
+grant delete history on mysqltest.t to mysqltest_1@localhost;
+connection user1;
+show grants;
+Grants for mysqltest_1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
+GRANT DELETE VERSIONING ROWS ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
+GRANT DELETE VERSIONING ROWS ON `mysqltest`.`t` TO 'mysqltest_1'@'localhost'
+delete history from mysqltest.t before system_time now();
+connection root;
+grant all on *.* to mysqltest_1@localhost;
+show grants for mysqltest_1@localhost;
+Grants for mysqltest_1@localhost
+GRANT ALL PRIVILEGES ON *.* TO 'mysqltest_1'@'localhost'
+GRANT DELETE VERSIONING ROWS ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
+GRANT DELETE VERSIONING ROWS ON `mysqltest`.`t` TO 'mysqltest_1'@'localhost'
+drop user mysqltest_1@localhost;
+drop database mysqltest;
diff --git a/mysql-test/suite/versioning/r/trx_id.result b/mysql-test/suite/versioning/r/trx_id.result
new file mode 100644
index 00000000000..74b75bfa154
--- /dev/null
+++ b/mysql-test/suite/versioning/r/trx_id.result
@@ -0,0 +1,72 @@
+create or replace table t1 (
+x int,
+sys_trx_start bigint(20) unsigned as row start invisible,
+sys_trx_end bigint(20) unsigned as row end invisible,
+period for system_time (sys_trx_start, sys_trx_end)
+) with system versioning engine innodb;
+insert into t1 (x) values (1);
+# ALTER ADD SYSTEM VERSIONING should write to mysql.transaction_registry
+create function check_result (cond boolean)
+returns char(50) deterministic
+return if(cond = 1, '[CORRECT]', '[INCORRECT]');
+set @@system_versioning_alter_history=keep;
+create or replace table t1 (x int) engine innodb;
+insert into t1 values (1);
+alter table t1
+add column s bigint unsigned as row start,
+add column e bigint unsigned as row end,
+add period for system_time(s, e),
+add system versioning,
+algorithm=inplace;
+select s from t1 into @trx_start;
+select check_result(count(*) = 1) from mysql.transaction_registry where transaction_id = @trx_start;
+check_result(count(*) = 1)
+[CORRECT]
+create or replace table t1 (x int) engine innodb;
+select count(*) from mysql.transaction_registry into @tmp;
+alter table t1
+add column s bigint unsigned as row start,
+add column e bigint unsigned as row end,
+add period for system_time(s, e),
+add system versioning,
+algorithm=inplace;
+select check_result(count(*) = @tmp) from mysql.transaction_registry;
+check_result(count(*) = @tmp)
+[CORRECT]
+create or replace table t1 (x int) engine innodb;
+insert into t1 values (1);
+alter table t1
+add column s bigint unsigned as row start,
+add column e bigint unsigned as row end,
+add period for system_time(s, e),
+add system versioning,
+algorithm=copy;
+select s from t1 into @trx_start;
+select check_result(count(*) = 1) from mysql.transaction_registry where transaction_id = @trx_start;
+check_result(count(*) = 1)
+[CORRECT]
+create or replace table t1 (x int) engine innodb;
+select count(*) from mysql.transaction_registry into @tmp;
+alter table t1
+add column s bigint unsigned as row start,
+add column e bigint unsigned as row end,
+add period for system_time(s, e),
+add system versioning,
+algorithm=copy;
+select check_result(count(*) = @tmp + 1) from mysql.transaction_registry;
+check_result(count(*) = @tmp + 1)
+[CORRECT]
+# TRX_ID to TIMESTAMP versioning switch
+create or replace table t1 (
+x int,
+sys_start bigint unsigned as row start invisible,
+sys_end bigint unsigned as row end invisible,
+period for system_time (sys_start, sys_end)
+) engine innodb with system versioning;
+insert into t1 values (1);
+alter table t1 drop column sys_start, drop column sys_end;
+select row_end = 18446744073709551615 as transaction_based from t1 for system_time all;
+transaction_based
+1
+drop table t1;
+drop function check_result;
diff --git a/mysql-test/suite/versioning/r/update.result b/mysql-test/suite/versioning/r/update.result
new file mode 100644
index 00000000000..e0daf1d6588
--- /dev/null
+++ b/mysql-test/suite/versioning/r/update.result
@@ -0,0 +1,625 @@
+create procedure test_01(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('
+ create table t1(
+ x int unsigned,
+ y int unsigned,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end))
+ with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+insert into t1(x, y) values
+(1, 1000),
+(2, 2000),
+(3, 3000),
+(4, 4000),
+(5, 5000),
+(6, 6000),
+(7, 7000),
+(8, 8000),
+(9, 9000);
+select x, y from t1;
+update t1 set y = y + 1 where x > 7;
+select x, y from t1;
+select x, y from t1 for system_time
+between timestamp '0000-0-0 0:0:0'
+ and timestamp '2038-01-19 04:14:07';
+drop table t1;
+end~~
+create procedure test_02(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('
+ create table t1 (
+ id bigint primary key,
+ x int,
+ y int without system versioning,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end))
+ with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+insert into t1 values(1, 1, 1);
+set @ins_t= now(6);
+select sys_trx_start into @tmp1 from t1;
+update t1 set x= 11, y= 11 where id = 1;
+select @tmp1 < sys_trx_start as A1, x, y from t1;
+select sys_trx_start into @tmp1 from t1;
+update t1 set y= 1 where id = 1;
+select @tmp1 = sys_trx_start as A2, x from t1;
+drop table t1;
+end~~
+create procedure test_03(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('
+ create table t1 (
+ x int,
+ y int,
+ sys_trx_start bigint unsigned as row start invisible,
+ sys_trx_end bigint unsigned as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end)
+ ) with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+insert into t1 (x, y) values (1, 1), (2, 1), (3, 1), (4, 1), (5, 1);
+start transaction;
+update t1 set y= y + 1 where x = 3;
+update t1 set y= y + 1 where x = 2;
+update t1 set y= y + 1 where x = 3;
+update t1 set y= y + 1 where x > 3;
+update t1 set y= y + 1 where x > 4;
+commit;
+select x, y, sys_trx_end = 18446744073709551615 as current from t1 for system_time all;
+drop table t1;
+end~~
+create procedure test_04(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('
+ create table t1 (
+ id int primary key auto_increment,
+ x int,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end))
+ with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+set @t0= now(6);
+insert into t1 (x) values (1);
+set @t1= now(6);
+update t1 set x= 2 where id = 1;
+set @t2= now(6);
+update t1 set x= 3 where id = 1;
+select x from t1 for system_time as of timestamp @t0;
+select x from t1 for system_time as of timestamp @t1;
+select x from t1 for system_time as of timestamp @t2;
+select x from t1 for system_time as of timestamp now(6);
+drop table t1;
+end~~
+create procedure test_05(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('
+ create table t1(
+ x int unsigned,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ y int unsigned,
+ period for system_time (sys_trx_start, sys_trx_end),
+ primary key(x, y))
+ with system versioning
+ engine ', engine);
+prepare stmt from @str; execute stmt; drop prepare stmt;
+insert into t1(x, y) values
+(1, 1000),
+(3, 3000),
+(4, 4000),
+(5, 5000);
+insert into t1(x, y) values(3, 3000) on duplicate key update y = y+1;
+insert into t1(x, y) values(4, 4444) on duplicate key update y = y+1;
+select x, y from t1 for system_time all;
+select x, y from t1;
+drop table t1;
+end~~
+create procedure test_06(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('(
+ x int unsigned,
+ y int unsigned,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end))
+ with system versioning
+ engine ', engine);
+set @str2= concat('create table t1', @str);
+prepare stmt from @str2; execute stmt; drop prepare stmt;
+set @str2= concat('create table t2', @str);
+prepare stmt from @str2; execute stmt; drop prepare stmt;
+insert into t1(x, y) values
+(1, 1000),
+(2, 2000),
+(3, 3000),
+(4, 4000),
+(5, 5000),
+(6, 6000),
+(7, 7000),
+(8, 8000),
+(9, 9000);
+insert into t2(x, y) values
+(1, 1010),
+(2, 2010),
+(3, 3010),
+(4, 4010),
+(5, 5010),
+(6, 6010),
+(7, 7010),
+(8, 8010),
+(9, 9010);
+update t1, t2 set t1.y = t1.x + t1.y, t2.y = t2.x + t2.y where t1.x > 7 and t2.x < 7;
+select x, y from t1 for system_time between timestamp '0-0-0 0:0:0' and timestamp '9999-1-1 0:0:0';
+select x, y from t1;
+select x, y from t2 for system_time between timestamp '0-0-0 0:0:0' and timestamp '9999-1-1 0:0:0';
+select x, y from t2;
+drop table t1;
+drop table t2;
+end~~
+create procedure test_07(
+sys_type varchar(255),
+engine varchar(255),
+fields varchar(255))
+begin
+set @str= concat('(
+ id bigint primary key without system versioning,
+ name varchar(128),
+ salary bigint without system versioning,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end))
+ with system versioning
+ engine ', engine);
+set @str2= concat('create table t1', @str);
+prepare stmt from @str2; execute stmt; drop prepare stmt;
+set @str2= concat('create table t2', @str);
+prepare stmt from @str2; execute stmt; drop prepare stmt;
+insert into t1 values (1, "Jeremy", 3000);
+insert into t2 values (1, "Jeremy", 4000);
+select sys_trx_start into @tmp1 from t1;
+select sys_trx_start into @tmp2 from t2;
+update t1, t2 set t1.name= "Jerry", t2.name= "Jerry" where t1.id = t2.id and t1.name = "Jeremy";
+select @tmp1 < sys_trx_start as A1, name from t1;
+select @tmp2 < sys_trx_start as A2, name from t2;
+select sys_trx_start into @tmp1 from t1;
+select sys_trx_start into @tmp2 from t2;
+update t1, t2 set t1.salary= 2500, t2.salary= 2500 where t1.id = t2.id and t1.name = "Jerry";
+select @tmp1 = sys_trx_start as B1, salary from t1;
+select @tmp2 = sys_trx_start as B2, salary from t2;
+drop table t1;
+drop table t2;
+end~~
+call test_01('timestamp(6)', 'myisam', 'sys_trx_end');
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8000
+9 9000
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8001
+9 9001
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8001
+9 9001
+8 8000
+9 9000
+call test_01('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8000
+9 9000
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8001
+9 9001
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8001
+9 9001
+8 8000
+9 9000
+call test_01('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8000
+9 9000
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8001
+9 9001
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8001
+9 9001
+8 8000
+9 9000
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+call test_02('timestamp(6)', 'myisam', 'sys_trx_end');
+A1 x y
+1 11 11
+A2 x
+1 11
+call test_02('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+A1 x y
+1 11 11
+A2 x
+1 11
+call test_02('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+A1 x y
+1 11 11
+A2 x
+1 11
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+# Multiple UPDATE of same rows in single transaction create historical
+# rows only once (applicable to transaction-based only).
+call test_03('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+x y current
+1 1 1
+2 2 1
+3 3 1
+4 2 1
+5 3 1
+3 1 0
+2 1 0
+4 1 0
+5 1 0
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+call test_04('timestamp(6)', 'myisam', 'sys_trx_end');
+x
+x
+1
+x
+2
+x
+3
+call test_04('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+x
+x
+1
+x
+2
+x
+3
+call test_04('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+x
+x
+1
+x
+2
+x
+3
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+3 1 1 1 1
+call test_05('timestamp(6)', 'myisam', 'sys_trx_end');
+x y
+1 1000
+3 3000
+3 3001
+4 4000
+4 4444
+5 5000
+x y
+1 1000
+3 3001
+4 4000
+4 4444
+5 5000
+call test_05('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+x y
+1 1000
+3 3000
+3 3001
+4 4000
+4 4444
+5 5000
+x y
+1 1000
+3 3001
+4 4000
+4 4444
+5 5000
+call test_05('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+x y
+1 1000
+3 3000
+3 3001
+4 4000
+4 4444
+5 5000
+x y
+1 1000
+3 3001
+4 4000
+4 4444
+5 5000
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+3 1 1 1 1
+call test_06('timestamp(6)', 'myisam', 'sys_trx_end');
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8008
+9 9009
+8 8000
+9 9000
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8008
+9 9009
+x y
+1 1011
+2 2012
+3 3013
+4 4014
+5 5015
+6 6016
+7 7010
+8 8010
+9 9010
+1 1010
+2 2010
+3 3010
+4 4010
+5 5010
+6 6010
+x y
+1 1011
+2 2012
+3 3013
+4 4014
+5 5015
+6 6016
+7 7010
+8 8010
+9 9010
+call test_06('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8008
+9 9009
+8 8000
+9 9000
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8008
+9 9009
+x y
+1 1011
+2 2012
+3 3013
+4 4014
+5 5015
+6 6016
+7 7010
+8 8010
+9 9010
+1 1010
+2 2010
+3 3010
+4 4010
+5 5010
+6 6010
+x y
+1 1011
+2 2012
+3 3013
+4 4014
+5 5015
+6 6016
+7 7010
+8 8010
+9 9010
+call test_06('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8008
+9 9009
+8 8000
+9 9000
+x y
+1 1000
+2 2000
+3 3000
+4 4000
+5 5000
+6 6000
+7 7000
+8 8008
+9 9009
+x y
+1 1011
+2 2012
+3 3013
+4 4014
+5 5015
+6 6016
+7 7010
+8 8010
+9 9010
+1 1010
+2 2010
+3 3010
+4 4010
+5 5010
+6 6010
+x y
+1 1011
+2 2012
+3 3013
+4 4014
+5 5015
+6 6016
+7 7010
+8 8010
+9 9010
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+3 1 1 1 1
+# Optimized fields
+call test_07('timestamp(6)', 'myisam', 'sys_trx_end');
+A1 name
+1 Jerry
+A2 name
+1 Jerry
+B1 salary
+1 2500
+B2 salary
+1 2500
+call test_07('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+A1 name
+1 Jerry
+A2 name
+1 Jerry
+B1 salary
+1 2500
+B2 salary
+1 2500
+call test_07('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+A1 name
+1 Jerry
+A2 name
+1 Jerry
+B1 salary
+1 2500
+B2 salary
+1 2500
+call verify_vtq;
+No A B C D
+1 1 1 1 1
+2 1 1 1 1
+3 1 1 1 1
+### Issue #365, bug 7 (duplicate of historical row)
+create or replace table t1 (a int primary key, b int)
+with system versioning engine myisam;
+insert into t1 (a) values (1);
+replace t1 values (1,2),(1,3),(2,4);
+ERROR 23000: Duplicate entry '1-YYYY-MM-DD hh:mm:ss.uuuuuu' for key 'PRIMARY'
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/r/view.result b/mysql-test/suite/versioning/r/view.result
new file mode 100644
index 00000000000..f94cf4567db
--- /dev/null
+++ b/mysql-test/suite/versioning/r/view.result
@@ -0,0 +1,137 @@
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1);
+select now(6) into @t1;
+update t1 set x= 2;
+select now(6) into @t2;
+delete from t1;
+set @vt1= concat("create or replace view vt1 as select * from t1 for system_time as of timestamp '", @t1, "'");
+prepare stmt from @vt1;
+execute stmt;
+drop prepare stmt;
+set @vt2= concat("create or replace view vt2 as select *, row_end from t1 for system_time as of timestamp '", @t2, "'");
+prepare stmt from @vt2;
+execute stmt;
+drop prepare stmt;
+select * from t1;
+x
+create or replace view vt1 as select * from t1;
+show create view vt1;
+View Create View character_set_client collation_connection
+vt1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vt1` AS select `t1`.`x` AS `x` from `t1` latin1 latin1_swedish_ci
+drop view vt1;
+drop view vt2;
+create or replace view vt1 as select * from t1 for system_time all;
+select * from vt1;
+x
+2
+1
+prepare stmt from 'select * from vt1';
+execute stmt;
+x
+2
+1
+drop prepare stmt;
+set @str= concat('create or replace view vt1 as
+select * from t1 for system_time as of timestamp "', @t1, '"');
+prepare stmt from @str;
+execute stmt;
+drop prepare stmt;
+select * from t1 for system_time as of timestamp @t1;
+x
+1
+select * from vt1;
+x
+1
+insert into vt1 values (3);
+select * from t1;
+x
+3
+select * from vt1;
+x
+1
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1), (2);
+set @t1=now(6);
+delete from t1 where x=2;
+set @t2=now(6);
+delete from t1 where x=1;
+set @t3=now(6);
+set @tmp= concat("create or replace view vt1 as select * from t1 for system_time as of timestamp '", @t1, "'");
+prepare stmt from @tmp;
+execute stmt;
+drop prepare stmt;
+select * from vt1;
+x
+1
+2
+# VIEW with parameters [#151]
+create or replace table t1 (x int) with system versioning;
+create or replace view vt1(c) as select x from t1;
+show create view vt1;
+View Create View character_set_client collation_connection
+vt1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vt1` AS select `t1`.`x` AS `c` from `t1` latin1 latin1_swedish_ci
+# VIEW over JOIN of versioned tables [#153]
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (b int) with system versioning;
+insert into t1 values (1);
+insert into t2 values (2);
+create or replace view vt12 as select * from t1 cross join t2;
+select * from vt12;
+a b
+1 2
+create or replace view vt12 as select * from t1 for system_time as of timestamp '0-0-0' cross join t2;
+select * from vt12;
+a b
+# VIEW improvements [#183]
+create or replace table t3 (x int);
+create or replace view vt1 as select * from t1, t2, t3;
+show create view vt1;
+View Create View character_set_client collation_connection
+vt1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vt1` AS select `t1`.`a` AS `a`,`t2`.`b` AS `b`,`t3`.`x` AS `x` from ((`t1` join `t2`) join `t3`) latin1 latin1_swedish_ci
+create or replace view vt1 as select * from t3, t2, t1;
+show create view vt1;
+View Create View character_set_client collation_connection
+vt1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vt1` AS select `t3`.`x` AS `x`,`t2`.`b` AS `b`,`t1`.`a` AS `a` from ((`t3` join `t2`) join `t1`) latin1 latin1_swedish_ci
+create or replace view vt1 as select a, t2.row_end as endo from t3, t1, t2;
+show create view vt1;
+View Create View character_set_client collation_connection
+vt1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vt1` AS select `t1`.`a` AS `a`,`t2`.`row_end` AS `endo` from ((`t3` join `t1`) join `t2`) latin1 latin1_swedish_ci
+# VIEW over UNION [#269]
+create or replace view vt1 as select * from t1 union select * from t1;
+select * from vt1;
+a
+1
+# VIEW over UNION with non-versioned [#393]
+create or replace table t2 (a int);
+create or replace view vt1 as select * from t1 union select * from t2;
+select * from vt1;
+a
+1
+# MDEV-14689 crash on second PS execute
+create or replace table t1 (a int);
+create or replace view v1 as select * from t1;
+create or replace table t2 (b int) with system versioning;
+prepare stmt from 'select a from v1 inner join t2 group by a order by a';
+execute stmt;
+a
+execute stmt;
+a
+drop database test;
+create database test;
+use test;
+create table t1 (a int) with system versioning;
+insert t1 values (1),(2);
+set @a=now(6);
+create view v1 as select * from t1;
+delete from t1;
+select * from v1;
+a
+select * from v1 for system_time as of @a;
+a
+1
+2
+show create view v1;
+View Create View character_set_client collation_connection
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a` from `t1` latin1 latin1_swedish_ci
+drop view v1;
+drop table t1;
diff --git a/mysql-test/suite/versioning/r/vtmd.result b/mysql-test/suite/versioning/r/vtmd.result
new file mode 100644
index 00000000000..ece5f5af61a
--- /dev/null
+++ b/mysql-test/suite/versioning/r/vtmd.result
@@ -0,0 +1,365 @@
+create or replace procedure drop_archives (in vtmd_name varchar(64))
+begin
+declare archive_name varchar(64);
+declare cur_done bool default false;
+declare cur cursor for
+select cur_tmp.archive_name from cur_tmp;
+declare continue handler for not found set cur_done = true;
+set @tmp= concat('
+ create or replace temporary table
+ cur_tmp as
+ select vtmd.archive_name from ', vtmd_name, '
+ for system_time all as vtmd
+ where vtmd.archive_name is not null
+ group by vtmd.archive_name');
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+open cur;
+fetch_loop: loop
+fetch cur into archive_name;
+if cur_done then
+leave fetch_loop;
+end if;
+set @tmp= concat('drop table ', archive_name);
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+end loop;
+drop table cur_tmp;
+end~~
+create or replace procedure check_vtmd (in vtmd_name varchar(64))
+begin
+set @tmp= concat('
+ create or replace temporary table
+ tmp_vtmd with system versioning as
+ select * from ', vtmd_name, '
+ for system_time all as vtmd');
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+set @inf= 0xFFFFFFFFFFFFFFFF + 0;
+set @start= null;
+select start from tmp_vtmd for system_time all order by start limit 1 into @start;
+select @start > 0 and @start < @inf;
+select
+start >= @start as A_start,
+(@start:= end) and end = @inf as B_end,
+name,
+substr(archive_name, 1, instr(archive_name, '_')) as C_archive_name
+from tmp_vtmd for system_time all;
+drop table tmp_vtmd;
+end~~
+create or replace procedure show_tables()
+begin
+show tables;
+select table_name, table_schema from information_schema.tables
+where table_schema not in ('mysql', 'performance_schema', 'information_schema', 'mtr')
+order by table_name;
+end~~
+set versioning_alter_history= keep;
+create table t0 (z int) with system versioning;
+show tables;
+Tables_in_test
+t0
+set versioning_alter_history= survive;
+create or replace table t0 (y int) with system versioning;
+show tables;
+Tables_in_test
+t0
+t0_vtmd
+show create table t0_vtmd;
+Table Create Table
+t0_vtmd CREATE TABLE `t0_vtmd` (
+ `start` bigint(20) unsigned GENERATED ALWAYS AS ROW START COMMENT 'TRX_ID of table lifetime start',
+ `end` bigint(20) unsigned GENERATED ALWAYS AS ROW END NOT NULL COMMENT 'TRX_ID of table lifetime end',
+ `name` varchar(64) COLLATE utf8_bin NOT NULL COMMENT 'Table name during current lifetime period',
+ `archive_name` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT 'Name of archive table',
+ `col_renames` blob DEFAULT NULL COMMENT 'Column name mappings from previous lifetime',
+ PRIMARY KEY (`end`),
+ KEY `archive_name` (`archive_name`),
+ PERIOD FOR SYSTEM_TIME (`start`, `end`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0 WITH SYSTEM VERSIONING
+call check_vtmd('t0_vtmd');
+@start > 0 and @start < @inf
+1
+A_start B_end name C_archive_name
+1 1 t0 NULL
+set versioning_alter_history= keep;
+drop table t0;
+set versioning_alter_history= survive;
+create table t0 (x int) with system versioning;
+ERROR HY000: VTMD error: `test.t0_vtmd` exists and not empty!
+drop table t0_vtmd;
+create table t0 (y int) with system versioning;
+create or replace table t0 (x int) with system versioning;
+insert into t0 values (1);
+set @t0= now(6);
+alter table t0 add column (y int);
+select * from t0 for system_time as of @t0;
+x
+1
+select * from t0;
+x y
+1 NULL
+call check_vtmd('t0_vtmd');
+@start > 0 and @start < @inf
+1
+A_start B_end name C_archive_name
+1 0 t0 t0_
+1 0 t0 t0_
+1 1 t0 NULL
+call drop_archives('t0_vtmd');
+drop table t0_vtmd;
+alter table t0 drop column y;
+call check_vtmd('t0_vtmd');
+@start > 0 and @start < @inf
+1
+A_start B_end name C_archive_name
+1 1 t0 t0_
+call drop_archives('t0_vtmd');
+set versioning_alter_history= keep;
+drop tables t0, t0_vtmd;
+set versioning_alter_history= survive;
+set versioning_alter_history= keep;
+create or replace table x0 (x int) with system versioning;
+set versioning_alter_history= survive;
+rename table x0 to d0;
+show tables;
+Tables_in_test
+d0
+set versioning_alter_history= keep;
+drop table d0;
+set versioning_alter_history= survive;
+create or replace table x0 (x int) with system versioning;
+rename table x0 to d0;
+show tables;
+Tables_in_test
+d0
+d0_vtmd
+call check_vtmd('d0_vtmd');
+@start > 0 and @start < @inf
+1
+A_start B_end name C_archive_name
+1 0 x0 NULL
+1 1 d0 NULL
+set versioning_alter_history= keep;
+drop table d0;
+set versioning_alter_history= survive;
+create or replace table x0 (x int) with system versioning;
+rename table x0 to d0;
+ERROR HY000: VTMD error: `test.d0_vtmd` table already exists!
+show tables;
+Tables_in_test
+d0_vtmd
+x0
+x0_vtmd
+drop table x0_vtmd;
+rename table x0 to d0;
+Warnings:
+Warning 4122 `test.d0_vtmd` table already exists!
+show tables;
+Tables_in_test
+d0
+d0_vtmd
+rename table d0 to duck;
+rename table duck to bay;
+rename table bay to sheer;
+rename table sheer to t0;
+call check_vtmd('t0_vtmd');
+@start > 0 and @start < @inf
+1
+A_start B_end name C_archive_name
+1 0 x0 NULL
+1 0 d0 NULL
+1 0 duck NULL
+1 0 bay NULL
+1 0 sheer NULL
+1 1 t0 NULL
+alter table t0 add column (y int);
+call check_vtmd('t0_vtmd');
+@start > 0 and @start < @inf
+1
+A_start B_end name C_archive_name
+1 0 x0 t0_
+1 0 d0 t0_
+1 0 duck t0_
+1 0 bay t0_
+1 0 sheer t0_
+1 0 t0 t0_
+1 1 t0 NULL
+alter table t0 add column (z int);
+alter table t0 drop column y;
+alter table t0 drop column z;
+create database db0;
+rename table t0 to db0.t0;
+show tables;
+Tables_in_test
+use db0;
+show tables;
+Tables_in_db0
+t0
+t0_vtmd
+call test.check_vtmd('db0.t0_vtmd');
+@start > 0 and @start < @inf
+1
+A_start B_end name C_archive_name
+1 0 x0 t0_
+1 0 d0 t0_
+1 0 duck t0_
+1 0 bay t0_
+1 0 sheer t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 1 t0 NULL
+create database db1;
+rename table t0 to db1.other_name;
+show tables;
+Tables_in_db0
+use db1;
+show tables;
+Tables_in_db1
+other_name
+other_name_vtmd
+call test.check_vtmd('db1.other_name_vtmd');
+@start > 0 and @start < @inf
+1
+A_start B_end name C_archive_name
+1 0 x0 t0_
+1 0 d0 t0_
+1 0 duck t0_
+1 0 bay t0_
+1 0 sheer t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 0 t0 NULL
+1 1 other_name NULL
+alter table other_name rename to t1;
+call test.check_vtmd('db1.t1_vtmd');
+@start > 0 and @start < @inf
+1
+A_start B_end name C_archive_name
+1 0 x0 t0_
+1 0 d0 t0_
+1 0 duck t0_
+1 0 bay t0_
+1 0 sheer t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 0 t0 NULL
+1 0 other_name NULL
+1 1 t1 NULL
+alter table t1 rename to test.t2, add column (y int);
+use test;
+show tables;
+Tables_in_test
+t2
+t2_vtmd
+call check_vtmd('t2_vtmd');
+@start > 0 and @start < @inf
+1
+A_start B_end name C_archive_name
+1 0 x0 t0_
+1 0 d0 t0_
+1 0 duck t0_
+1 0 bay t0_
+1 0 sheer t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 0 t0 t0_
+1 0 t0 t1_
+1 0 other_name t1_
+1 0 t1 t1_
+1 1 t2 NULL
+create or replace table t3 (x int) with system versioning;
+alter table t3 change x x bigint;
+alter table t3 change x x bigint after sys_trx_start;
+call check_vtmd('t3_vtmd');
+@start > 0 and @start < @inf
+1
+A_start B_end name C_archive_name
+1 0 t3 t3_
+1 0 t3 t3_
+1 1 t3 NULL
+set versioning_hide= auto;
+call show_tables();
+Tables_in_test
+t2
+t2_vtmd
+t3
+t3_vtmd
+table_name table_schema
+t2 test
+t2_vtmd test
+t3 test
+t3_vtmd test
+set versioning_hide= implicit;
+call show_tables();
+Tables_in_test
+t2
+t2_vtmd
+t3
+t3_vtmd
+table_name table_schema
+t2 test
+t2_vtmd test
+t3 test
+t3_vtmd test
+set versioning_hide= full;
+call show_tables();
+Tables_in_test
+t2
+t2_vtmd
+t3
+t3_vtmd
+table_name table_schema
+t2 test
+t2_vtmd test
+t3 test
+t3_vtmd test
+set versioning_hide= never;
+call show_tables();
+Tables_in_test
+t0_TIMESTAMP_SUFFIX
+t0_TIMESTAMP_SUFFIX
+t0_TIMESTAMP_SUFFIX
+t0_TIMESTAMP_SUFFIX
+t2
+t2_vtmd
+t3
+t3_TIMESTAMP_SUFFIX
+t3_TIMESTAMP_SUFFIX
+t3_vtmd
+table_name table_schema
+t0_TIMESTAMP_SUFFIX test
+t0_TIMESTAMP_SUFFIX test
+t0_TIMESTAMP_SUFFIX test
+t0_TIMESTAMP_SUFFIX test
+t1_TIMESTAMP_SUFFIX db1
+t2 test
+t2_vtmd test
+t3 test
+t3_TIMESTAMP_SUFFIX test
+t3_TIMESTAMP_SUFFIX test
+t3_vtmd test
+set versioning_hide= auto;
+create or replace table u0_vtmd (x int) with system versioning;
+show tables;
+Tables_in_test
+t2
+t2_vtmd
+t3
+t3_vtmd
+u0_vtmd
+u0_vtmd_vtmd
+Warnings:
+Warning 4122 Table `test.u0_vtmd` is not a VTMD table
+set versioning_alter_history= survive;
+create or replace table t (x int) with system versioning;
+select * from t for system_time all;
+x sys_trx_start sys_trx_end
+drop database db0;
+drop database db1;
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/r/vtmd_show.result b/mysql-test/suite/versioning/r/vtmd_show.result
new file mode 100644
index 00000000000..4c77182c5de
--- /dev/null
+++ b/mysql-test/suite/versioning/r/vtmd_show.result
@@ -0,0 +1,229 @@
+create or replace procedure drop_archives (in vtmd_name varchar(64))
+begin
+declare archive_name varchar(64);
+declare cur_done bool default false;
+declare cur cursor for
+select cur_tmp.archive_name from cur_tmp;
+declare continue handler for not found set cur_done = true;
+set @tmp= concat('
+ create or replace temporary table
+ cur_tmp as
+ select vtmd.archive_name from ', vtmd_name, '
+ for system_time all as vtmd
+ where vtmd.archive_name is not null
+ group by vtmd.archive_name');
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+open cur;
+fetch_loop: loop
+fetch cur into archive_name;
+if cur_done then
+leave fetch_loop;
+end if;
+set @tmp= concat('drop table ', archive_name);
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+end loop;
+drop table cur_tmp;
+end~~
+create procedure test_01(in engine varchar(64))
+begin
+set @tmp = concat('create table t (a int) with system versioning engine ', engine);
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+set @tm1 = now(6);
+alter table t add column b int;
+set @tm2 = now(6);
+alter table t add column c int;
+show create table t for system_time as of timestamp @tm1;
+show create table t for system_time as of timestamp @tm2;
+show create table t for system_time as of now;
+show create table t for system_time as of timestamp now(6);
+show create table t;
+set @tm3 = now(6);
+rename table t to tt;
+show create table tt for system_time as of timestamp @tm3;
+set @tm4 = now(6);
+alter table tt add column d int;
+show create table tt for system_time as of timestamp @tm3;
+show create table tt for system_time as of timestamp @tm4;
+show create table tt;
+drop table tt;
+call drop_archives('tt_vtmd');
+drop table tt_vtmd;
+end~~
+create table t (a int) with system versioning;
+show create table t for system_time as of now;
+ERROR HY000: VTMD error: Table 'test.t_vtmd' doesn't exist
+set versioning_alter_history=survive;
+create or replace table t (a int) with system versioning;
+show create table t for system_time between timestamp @tm1 and timestamp @tm1;
+ERROR HY000: SYSTEM_TIME range selector is prohibited
+show create table t for system_time from timestamp @tm1 to timestamp @tm1;
+ERROR HY000: SYSTEM_TIME range selector is prohibited
+show create table t for system_time as of timestamp '01-01-1990';
+ERROR HY000: VTMD error: Table 'test.t' doesn't exist
+show create table t for system_time as of timestamp '01-01-2020';
+ERROR HY000: VTMD error: Table 'test.t' doesn't exist
+drop table t;
+call drop_archives('t_vtmd');
+drop table t_vtmd;
+call test_01('myisam');
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` timestamp(6) GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` timestamp(6) GENERATED ALWAYS AS ROW END,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` timestamp(6) GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` timestamp(6) GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` timestamp(6) GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` timestamp(6) GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` timestamp(6) GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` timestamp(6) GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` timestamp(6) GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` timestamp(6) GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+tt CREATE TABLE `tt` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` timestamp(6) GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` timestamp(6) GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+tt CREATE TABLE `tt` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` timestamp(6) GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` timestamp(6) GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+tt CREATE TABLE `tt` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` timestamp(6) GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` timestamp(6) GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+tt CREATE TABLE `tt` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` timestamp(6) GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` timestamp(6) GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ `d` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+call test_01('innodb');
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` bigint(20) unsigned GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` bigint(20) unsigned GENERATED ALWAYS AS ROW END,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` bigint(20) unsigned GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` bigint(20) unsigned GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` bigint(20) unsigned GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` bigint(20) unsigned GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` bigint(20) unsigned GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` bigint(20) unsigned GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+t CREATE TABLE `t` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` bigint(20) unsigned GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` bigint(20) unsigned GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+tt CREATE TABLE `tt` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` bigint(20) unsigned GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` bigint(20) unsigned GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+tt CREATE TABLE `tt` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` bigint(20) unsigned GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` bigint(20) unsigned GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+tt CREATE TABLE `tt` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` bigint(20) unsigned GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` bigint(20) unsigned GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+Table Create Table
+tt CREATE TABLE `tt` (
+ `a` int(11) DEFAULT NULL,
+ `sys_trx_start` bigint(20) unsigned GENERATED ALWAYS AS ROW START,
+ `sys_trx_end` bigint(20) unsigned GENERATED ALWAYS AS ROW END,
+ `b` int(11) DEFAULT NULL,
+ `c` int(11) DEFAULT NULL,
+ `d` int(11) DEFAULT NULL,
+ PERIOD FOR SYSTEM_TIME (`sys_trx_start`, `sys_trx_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
+drop procedure test_01;
+drop procedure drop_archives;
diff --git a/mysql-test/suite/versioning/t/alter.test b/mysql-test/suite/versioning/t/alter.test
new file mode 100644
index 00000000000..d0fef1e8fcd
--- /dev/null
+++ b/mysql-test/suite/versioning/t/alter.test
@@ -0,0 +1,414 @@
+select @@system_versioning_alter_history;
+
+create table t(
+ a int
+);
+show create table t;
+--error ER_VERS_NOT_VERSIONED
+alter table t drop system versioning;
+
+alter table t add system versioning;
+show create table t;
+
+--error ER_VERS_ALTER_NOT_ALLOWED
+alter table t add column y int;
+--error ER_VERS_ALTER_ENGINE_PROHIBITED
+alter table t engine innodb;
+
+alter table t drop system versioning;
+show create table t;
+
+set system_versioning_alter_history= keep;
+
+alter table t add system versioning;
+--error ER_CANT_DROP_FIELD_OR_KEY
+alter table t drop system versioning, drop column row_start;
+alter table t drop system versioning;
+
+--error ER_VERS_FIELD_WRONG_TYPE
+alter table t
+ add column trx_start bigint(20) unsigned as row start invisible,
+ add column trx_end bigint(20) unsigned as row end invisible,
+ add period for system_time(trx_start, trx_end),
+ add system versioning;
+
+--error ER_VERS_FIELD_WRONG_TYPE
+alter table t
+ add column trx_start timestamp as row start invisible,
+ add column trx_end timestamp as row end invisible,
+ add period for system_time(trx_start, trx_end),
+ add system versioning;
+
+--error ER_PARSE_ERROR
+alter table t
+ add column trx_start timestamp(6) not null as row start invisible,
+ add column trx_end timestamp(6) not null as row end invisible,
+ add period for system_time(trx_start, trx_end),
+ add system versioning;
+
+alter table t
+ add column trx_start timestamp(6) as row start invisible,
+ add column trx_end timestamp(6) as row end invisible,
+ add period for system_time(trx_start, trx_end),
+ add system versioning;
+show create table t;
+
+--error ER_VERS_SYS_FIELD_EXISTS
+alter table t drop system versioning;
+
+alter table t drop column trx_start, drop column trx_end;
+select row_start from t;
+alter table t drop system versioning;
+show create table t;
+
+--error ER_VERS_NOT_VERSIONED
+alter table t add column trx_start timestamp(6) as row start;
+
+alter table t add system versioning;
+show create table t;
+
+alter table t add column b int;
+show create table t;
+
+alter table t add column c int;
+show create table t;
+
+alter table t add column d int first;
+show create table t;
+
+alter table t add column e int after d;
+show create table t;
+
+alter table t drop column a;
+show create table t;
+
+create or replace table t (
+ a int,
+ row_start timestamp(6) as row start invisible,
+ row_end timestamp(6) as row end invisible,
+ period for system_time(row_start, row_end))
+with system versioning;
+
+select * from t for system_time all;
+--error ER_MISSING
+alter table t drop column row_start;
+--error ER_MISSING
+alter table t drop column row_end;
+alter table t drop column row_start, drop column row_end;
+select * from t for system_time all;
+show create table t;
+
+--error ER_CANT_DROP_FIELD_OR_KEY
+alter table t drop column row_start;
+--error ER_CANT_DROP_FIELD_OR_KEY
+alter table t drop column row_end;
+
+create or replace table t (
+ a int,
+ row_start timestamp(6) as row start invisible,
+ row_end timestamp(6) as row end invisible,
+ period for system_time(row_start, row_end))
+with system versioning;
+
+select * from t for system_time all;
+alter table t drop column row_start, drop column row_end;
+select * from t for system_time all;
+
+create or replace table t(
+ a int
+);
+insert into t values(1);
+alter table t add system versioning;
+show create table t;
+insert into t values(2);
+select * from t for system_time all;
+select * from t;
+
+update t set a=3 where a=1;
+select * from t;
+select * from t for system_time all;
+select row_start from t where a=3 into @tm;
+alter table t add column b int;
+select @tm=row_start from t where a=3;
+show create table t;
+select * from t;
+select * from t for system_time all;
+
+alter table t drop system versioning;
+select * from t;
+show create table t;
+
+--error ER_VERS_NOT_VERSIONED
+alter table t modify a int with system versioning;
+--error ER_VERS_NOT_VERSIONED
+alter table t modify a int without system versioning;
+
+alter table t add system versioning;
+
+alter table t modify a int without system versioning;
+show create table t;
+
+alter table t modify a int with system versioning;
+show create table t;
+
+# TODO: move TRX_ID cases to separate test
+-- source suite/versioning/common.inc
+create or replace table t(
+ a int
+) engine=innodb;
+
+alter table t
+ add column trx_start timestamp(6) as row start invisible,
+ add column trx_end timestamp(6) as row end invisible,
+ add period for system_time(trx_start, trx_end),
+ add system versioning;
+
+show create table t;
+--echo # Issue #211: drop of system columns required before drop system versioning
+alter table t drop column trx_start, drop column trx_end;
+show create table t;
+
+alter table t drop system versioning;
+
+insert into t values(1);
+
+call verify_vtq;
+alter table t
+ add column trx_start bigint(20) unsigned as row start invisible,
+ add column trx_end bigint(20) unsigned as row end invisible,
+ add period for system_time(trx_start, trx_end),
+ add system versioning;
+call verify_vtq;
+
+show create table t;
+alter table t drop column trx_start, drop column trx_end;
+
+call verify_vtq;
+alter table t drop system versioning, algorithm=copy;
+call verify_vtq;
+
+alter table t add system versioning, algorithm=copy;
+call verify_vtq;
+
+show create table t;
+
+update t set a= 2;
+select * from t for system_time all;
+
+alter table t add column b int, algorithm=copy;
+show create table t;
+select * from t;
+call verify_vtq;
+
+alter table t drop column b, algorithm=copy;
+show create table t;
+select * from t for system_time all;
+call verify_vtq;
+
+## FIXME: #414 IB: inplace for VERS_TIMESTAMP versioning
+if (0)
+{
+alter table t drop system versioning, algorithm=inplace;
+call verify_vtq;
+
+alter table t add system versioning, algorithm=inplace;
+call verify_vtq;
+show create table t;
+
+update t set a= 1;
+select * from t for system_time all;
+call verify_vtq;
+
+alter table t add column b int, algorithm=inplace;
+show create table t;
+select * from t;
+call verify_vtq;
+
+alter table t drop column b, algorithm=inplace;
+show create table t;
+select * from t for system_time all;
+}
+## FIXME END
+
+alter table t drop system versioning, algorithm=copy;
+show create table t;
+call verify_vtq;
+
+# nullable autoinc test w/o versioning
+create or replace table t (a int);
+insert t values (1),(2),(3),(4);
+alter table t add b int auto_increment null unique;
+select * from t;
+drop table t;
+
+create or replace table t (a int) with system versioning engine=innodb;
+insert into t values (1), (2), (3);
+delete from t where a<3;
+--error ER_DUP_ENTRY, ER_DUP_ENTRY
+alter table t add b int not null unique;
+--error ER_UNSUPPORTED_EXTENSION, ER_UNSUPPORTED_EXTENSION
+alter table t add b int auto_increment unique;
+alter table t add b int auto_increment null unique;
+select * from t;
+select * from t for system_time all;
+insert into t values (4, 0);
+select * from t for system_time all;
+
+create or replace table t (a int) with system versioning;
+insert into t values (1), (2), (3);
+delete from t where a<3;
+--error ER_DUP_ENTRY, ER_DUP_ENTRY
+alter table t add b int not null unique;
+--error ER_UNSUPPORTED_EXTENSION, ER_UNSUPPORTED_EXTENSION
+alter table t add b int auto_increment unique;
+alter table t add b int auto_increment null unique;
+select * from t;
+select * from t for system_time all;
+insert into t values (4, 0);
+select * from t for system_time all;
+
+create or replace table t (a int, b int primary key, c int unique) with system versioning;
+insert t values (1,2,3),(1,3,4),(1,4,5);
+alter table t drop system versioning;
+show create table t;
+select * from t;
+
+create or replace table t (
+ a int,
+ row_start timestamp(6) as row start invisible,
+ row_end timestamp(6) as row end invisible,
+ period for system_time(row_start, row_end)
+) with system versioning;
+--error ER_VERS_ALTER_SYSTEM_FIELD
+alter table t change column row_start asdf timestamp(6);
+insert into t values (1);
+--error ER_VERS_ALTER_SYSTEM_FIELD
+alter table t modify column row_start bigint unsigned;
+
+## These experimental options are now disabled
+
+--error ER_WRONG_VALUE_FOR_VAR
+set system_versioning_alter_history= SURVIVE;
+
+--error ER_WRONG_VALUE_FOR_VAR
+set system_versioning_alter_history= 'DROP';
+
+if (0)
+{
+create or replace table t (a int) with system versioning engine innodb;
+insert into t values (1);
+update t set a = 2;
+select * from t for system_time all;
+alter table t add column b int;
+select * from t for system_time all;
+
+create or replace table t (a int) with system versioning engine myisam;
+insert into t values (1);
+update t set a = 2;
+select * from t for system_time all;
+alter table t add column b int;
+select * from t for system_time all;
+
+create or replace table non_empty (
+ a int,
+ row_start bigint(20) unsigned,
+ row_end bigint(20) unsigned
+) engine innodb;
+insert into non_empty values (1, 100, 200);
+
+--error ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN
+alter table non_empty
+ change column row_start row_start bigint(20) unsigned as row start invisible;
+--error ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN
+alter table non_empty
+ change column row_end row_end bigint(20) unsigned as row end invisible;
+drop table non_empty;
+
+create or replace table t (a int primary key) with system versioning;
+insert into t values (1);
+update t set a=2;
+alter table t drop primary key, add primary key (a), drop system versioning;
+select * from t;
+--replace_result InnoDB INNODB_OR_MYISAM MyISAM INNODB_OR_MYISAM
+show create table t;
+
+create or replace table t (a int primary key) with system versioning;
+insert into t values (1);
+update t set a=2;
+alter table t drop system versioning;
+select * from t;
+--replace_result InnoDB INNODB_OR_MYISAM MyISAM INNODB_OR_MYISAM
+show create table t;
+
+
+call verify_vtq;
+}
+
+create or replace table t (a int) with system versioning;
+--error ER_VERS_ALREADY_VERSIONED
+alter table t add system versioning;
+--error ER_VERS_ALREADY_VERSIONED
+alter table t add system versioning, drop system versioning;
+
+set @@system_versioning_alter_history=keep;
+create or replace table t(x int, y int) with system versioning engine=innodb;
+alter table t modify y int without system versioning;
+insert into t values(1, 1);
+update t set y=2;
+
+--echo # MDEV-14681 Bogus ER_UNSUPPORTED_EXTENSION
+create or replace table t1 (pk int auto_increment unique) with system versioning;
+insert into t1 values (1);
+delete from t1;
+alter table t1 engine=myisam;
+
+--echo # MDEV-14692 crash in MDL_context::upgrade_shared_lock()
+create or replace temporary table t (a int);
+--error ER_VERS_TEMPORARY
+alter table t change column if exists b c bigint unsigned generated always as row start;
+--error ER_VERS_TEMPORARY
+alter table t change column if exists b c bigint unsigned generated always as row end;
+--error ER_VERS_TEMPORARY
+alter table t add system versioning;
+drop table t;
+
+--echo # MDEV-14744 trx_id-based and transaction-based mixup in assertion
+create or replace table t (c text) engine=innodb with system versioning;
+show create table t;
+alter table t add fulltext key (c);
+
+create or replace table t (a int) with system versioning;
+--error ER_VERS_TABLE_MUST_HAVE_COLUMNS
+alter table t drop column a;
+--error ER_CANT_DROP_FIELD_OR_KEY
+alter table t drop column a, drop column a;
+
+create or replace table t1 (row_start int);
+--error ER_DUP_FIELDNAME
+alter table t1 with system versioning;
+
+create or replace table t1 (row_end int);
+--error ER_DUP_FIELDNAME
+alter table t1 with system versioning;
+
+--error ER_DUP_FIELDNAME
+create or replace table t1 (a int, row_start int) with system versioning;
+
+create or replace table t1 (a int) with system versioning;
+
+--error ER_DUP_FIELDNAME
+set statement system_versioning_alter_history=keep for
+alter table t1 add column row_start int;
+
+--error ER_DUP_FIELDNAME
+set statement system_versioning_alter_history=keep for
+alter table t1 add column row_start timestamp(6);
+
+--echo # MDEV-14798 Add, drop system versioning semantic and syntax
+create or replace table t (a int) with system versioning;
+
+--error ER_VERS_ALREADY_VERSIONED
+alter table t add period for system_time(sys_trx_start, sys_trx_end);
+
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/t/auto_increment.test b/mysql-test/suite/versioning/t/auto_increment.test
new file mode 100644
index 00000000000..6108f6d9818
--- /dev/null
+++ b/mysql-test/suite/versioning/t/auto_increment.test
@@ -0,0 +1,68 @@
+-- source suite/versioning/common.inc
+
+delimiter ~~;
+create procedure test_01(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('
+ create table t1(
+ id int unsigned auto_increment primary key,
+ x int unsigned,
+ y int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+
+ set @str= concat('
+ create table t2(
+ id int unsigned auto_increment primary key,
+ x int unsigned,
+ y int unsigned)
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+
+ insert into t1(x, y) values(1, 11);
+ insert into t2(x, y) values(1, 11);
+ insert into t1(x, y) values(2, 12);
+ insert into t2(x, y) values(2, 12);
+ insert into t1(x, y) values(3, 13);
+ insert into t2(x, y) values(3, 13);
+ insert into t1(x, y) values(4, 14);
+ insert into t2(x, y) values(4, 14);
+ insert into t1(x, y) values(5, 15);
+ insert into t2(x, y) values(5, 15);
+ insert into t1(x, y) values(6, 16);
+ insert into t2(x, y) values(6, 16);
+ insert into t1(x, y) values(7, 17);
+ insert into t2(x, y) values(7, 17);
+ insert into t1(x, y) values(8, 18);
+ insert into t2(x, y) values(8, 18);
+ insert into t1(x, y) values(9, 19);
+ insert into t2(x, y) values(9, 19);
+
+ select t1.x = t2.x and t1.y = t2.y as A, t1.x, t1.y, t2.x, t2.y from t1 inner join t2 on t1.id = t2.id;
+ delete from t1 where x = 2;
+ delete from t2 where x = 2;
+
+ select t1.x = t2.x and t1.y = t2.y as A, t1.x, t1.y, t2.x, t2.y from t1 inner join t2 on t1.id = t2.id;
+ delete from t1 where x > 7;
+ delete from t2 where x > 7;
+
+ select t1.x = t2.x and t1.y = t2.y as A, t1.x, t1.y, t2.x, t2.y from t1 inner join t2 on t1.id = t2.id;
+ drop table t1;
+ drop table t2;
+end~~
+delimiter ;~~
+
+call test_01('timestamp(6)', 'myisam', 'sys_end');
+call test_01('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+call verify_vtq;
+
+drop procedure test_01;
+
+-- source suite/versioning/common_finish.inc
diff --git a/mysql-test/suite/versioning/t/commit_id.test b/mysql-test/suite/versioning/t/commit_id.test
new file mode 100644
index 00000000000..66a9db64e10
--- /dev/null
+++ b/mysql-test/suite/versioning/t/commit_id.test
@@ -0,0 +1,94 @@
+-- source suite/versioning/common.inc
+
+create table t1(
+ id int auto_increment primary key,
+ sys_trx_start bigint unsigned as row start invisible,
+ sys_trx_end bigint unsigned as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end)
+)
+with system versioning
+engine innodb;
+
+
+# VTQ_TRX_ID, VTQ_COMMIT_ID, VTQ_TRX_SEES #
+
+insert into t1 values ();
+
+--real_sleep 0.01
+set @ts0= now(6);
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx0;
+select transaction_id = @tx0 from mysql.transaction_registry
+order by transaction_id desc limit 1;
+
+set @ts1= now(6);
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx1;
+select transaction_id = @tx1 from mysql.transaction_registry
+order by transaction_id desc limit 1;
+
+set @ts2= now(6);
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx2;
+select transaction_id = @tx2 from mysql.transaction_registry
+order by transaction_id desc limit 1;
+
+set @ts3= now(6);
+
+select
+ vtq_trx_id(@ts0) < @tx0 as A,
+ vtq_trx_id(@ts0, true) = @tx0 as B,
+ vtq_trx_id(@ts1) = @tx0 as C,
+ vtq_trx_id(@ts1, true) = @tx1 as D,
+ vtq_trx_id(@ts2) = @tx1 as E,
+ vtq_trx_id(@ts2, true) = @tx2 as F,
+ vtq_trx_id(@ts3) = @tx2 as G,
+ vtq_trx_id(@ts3, true) is null as H;
+
+select
+ vtq_commit_id(@ts0) < @tx0 as A,
+ vtq_commit_id(@ts0, true) = vtq_commit_id(null, @tx0) as B,
+ vtq_commit_id(@ts1) = vtq_commit_id(null, @tx0) as C,
+ vtq_commit_id(@ts1, true) = vtq_commit_id(null, @tx1) as D,
+ vtq_commit_id(@ts2) = vtq_commit_id(null, @tx1) as E,
+ vtq_commit_id(@ts2, true) = vtq_commit_id(null, @tx2) as F,
+ vtq_commit_id(@ts3) = vtq_commit_id(null, @tx2) as G,
+ vtq_commit_id(@ts3, true) is null as H;
+
+select
+ vtq_trx_sees(@tx1, @tx0) as A,
+ not vtq_trx_sees(@tx0, @tx1) as B,
+ vtq_trx_sees_eq(@tx1, @tx1) as C,
+ not vtq_trx_sees(@tx1, @tx1) as D,
+ vtq_trx_sees(@tx2, 0) as E,
+ vtq_trx_sees(0, @tx2) is null as F,
+ vtq_trx_sees(-1, @tx2) as H;
+
+
+# VTQ_ISO_LEVEL #
+
+set transaction isolation level read uncommitted;
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx3;
+select isolation_level = 'READ-UNCOMMITTED' from mysql.transaction_registry where transaction_id = @tx3;
+
+set transaction isolation level read committed;
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx4;
+select isolation_level = 'READ-COMMITTED' from mysql.transaction_registry where transaction_id = @tx4;
+
+set transaction isolation level serializable;
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx5;
+select isolation_level = 'SERIALIZABLE' from mysql.transaction_registry where transaction_id = @tx5;
+
+set transaction isolation level repeatable read;
+insert into t1 values ();
+select sys_trx_start from t1 where id = last_insert_id() into @tx6;
+select isolation_level = 'REPEATABLE-READ' from mysql.transaction_registry where transaction_id = @tx6;
+
+
+drop table t1;
+call verify_vtq;
+
+-- source suite/versioning/common_finish.inc
diff --git a/mysql-test/suite/versioning/t/create.test b/mysql-test/suite/versioning/t/create.test
new file mode 100644
index 00000000000..24d8d335020
--- /dev/null
+++ b/mysql-test/suite/versioning/t/create.test
@@ -0,0 +1,367 @@
+--source suite/versioning/engines.inc
+--source suite/versioning/common.inc
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype_expl SYS_DATATYPE NULL ''
+eval create table t1 (
+ x1 int unsigned,
+ Sys_start $sys_datatype_expl as row start invisible comment 'start',
+ Sys_end $sys_datatype_expl as row end invisible comment 'end',
+ period for system_time (Sys_start, Sys_end)
+) with system versioning;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype_expl SYS_DATATYPE
+show create table t1;
+
+--query_vertical select table_catalog,table_schema,table_name,table_type,version,table_rows,avg_row_length,data_free,auto_increment,check_time,table_collation,checksum,create_options,table_comment from information_schema.tables where table_name='t1'
+--query_vertical select table_catalog,table_schema,table_name,column_name,ordinal_position,column_default,character_maximum_length,character_octet_length,character_set_name,collation_name,column_key,extra,column_comment,is_generated,generation_expression from information_schema.columns where table_name='t1'
+
+--echo # Implicit fields test
+create or replace table t1 (
+ x2 int unsigned
+) with system versioning;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t1;
+
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+--error ER_VERS_PERIOD_COLUMNS
+eval create or replace table t1 (
+ x3 int unsigned,
+ Sys_start $sys_datatype as row start invisible,
+ Sys_end $sys_datatype as row end invisible,
+ period for system_time (x, Sys_end)
+) with system versioning;
+
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+--error ER_VERS_PERIOD_COLUMNS
+eval create or replace table t1 (
+ x4 int unsigned,
+ Sys_start $sys_datatype as row start invisible,
+ Sys_end2 $sys_datatype as row end invisible,
+ period for system_time (Sys_start, Sys_end)
+) with system versioning;
+
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+--error ER_VERS_PERIOD_COLUMNS
+eval create or replace table t1 (
+ x5 int unsigned,
+ Sys_start $sys_datatype as row start invisible,
+ Sys_end $sys_datatype as row end invisible,
+ period for system_time (Sys_start, x)
+) with system versioning;
+
+--error ER_MISSING
+create or replace table t1 (
+ x6 int unsigned,
+ period for system_time (Sys_start, Sys_end)
+) with system versioning;
+
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+--error ER_MISSING
+eval create or replace table t1 (
+ x7 int unsigned,
+ Sys_start $sys_datatype as row start invisible,
+ Sys_end $sys_datatype as row end invisible,
+ period for system_time (Sys_start, Sys_end)
+);
+
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+--error ER_VERS_PERIOD_COLUMNS
+eval create or replace table t1 (
+ x8 int unsigned,
+ Sys_start $sys_datatype as row start invisible,
+ Sys_end $sys_datatype as row end invisible,
+ period for system_time (sys_insert, sys_remove)
+) with system versioning;
+
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+--error ER_MISSING
+eval create or replace table t1 (
+ x9 int unsigned,
+ Sys_start $sys_datatype as row start invisible,
+ Sys_end $sys_datatype as row end invisible,
+ period for system_time (Sys_start, Sys_end)
+);
+
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+--error ER_MISSING
+eval create or replace table t1 (
+ x10 int unsigned,
+ Sys_start $sys_datatype as row start invisible,
+ Sys_end $sys_datatype as row end invisible,
+ period for system_time (Sys_start, Sys_start)
+);
+
+--error ER_VERS_FIELD_WRONG_TYPE, ER_VERS_FIELD_WRONG_TYPE
+create or replace table t1 (
+ x11 int unsigned,
+ Sys_start bigint unsigned as row start invisible,
+ Sys_end timestamp(6) as row end invisible,
+ period for system_time (Sys_start, Sys_end)
+) with system versioning;
+
+--error ER_VERS_FIELD_WRONG_TYPE, ER_VERS_FIELD_WRONG_TYPE
+create or replace table t1 (
+ x12 int unsigned,
+ Sys_start timestamp(6) as row start invisible,
+ Sys_end bigint unsigned as row end invisible,
+ period for system_time (Sys_start, Sys_end)
+) with system versioning;
+
+--error ER_VERS_FIELD_WRONG_TYPE
+create or replace table t1 (
+ x13 int unsigned,
+ Sys_start bigint as row start invisible,
+ Sys_end bigint unsigned as row end invisible,
+ period for system_time (Sys_start, Sys_end)
+) with system versioning engine innodb;
+
+--error ER_VERS_FIELD_WRONG_TYPE
+create or replace table t1 (
+ x14 int unsigned,
+ Sys_start bigint unsigned as row start invisible,
+ Sys_end bigint as row end invisible,
+ period for system_time (Sys_start, Sys_end)
+) with system versioning engine innodb;
+
+# columns with/without system versioning
+
+create or replace table t1 (
+ x15 int with system versioning,
+ B int
+);
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t1;
+
+create or replace table t1 (
+ x16 int with system versioning,
+ B int
+) with system versioning;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t1;
+
+create or replace table t1 (
+ x17 int,
+ B int without system versioning
+);
+
+create or replace table t1 (
+ x18 int,
+ B int without system versioning
+) with system versioning;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t1;
+
+create or replace table t1 (
+ x19 int with system versioning,
+ B int without system versioning
+);
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t1;
+
+create or replace table t1 (
+ x20 int with system versioning,
+ B int without system versioning
+) with system versioning;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t1;
+
+create or replace table t1 (
+ x21 int without system versioning
+);
+
+--error ER_VERS_TABLE_MUST_HAVE_COLUMNS
+create or replace table t1 (
+ x22 int without system versioning
+) with system versioning;
+
+# CREATE TABLE ... LIKE
+create or replace table t1 (a int) with system versioning;
+create table tt1 like t1;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table tt1;
+drop table tt1;
+create temporary table tt1 like t1;
+--echo # Temporary is stripped from versioning
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table tt1;
+
+--echo # CREATE TABLE ... SELECT
+create or replace table t1 (x23 int) with system versioning;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+eval create or replace table t0(
+ y int,
+ st $sys_datatype as row start,
+ en $sys_datatype as row end,
+ period for system_time (st, en)
+) with system versioning;
+
+--echo ## For non-versioned table:
+--echo ### 1. invisible fields are not included
+create or replace table t2 as select * from t1;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t2;
+
+--echo ### 2. all visible fields are included
+create or replace table t3 as select * from t0;
+select * from t0;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE $sys_datatype_null SYS_DATATYPE $sys_datatype_not_null SYS_DATATYPE $sys_datatype_default_null SYS_DATATYPE
+show create table t3;
+
+--echo ## For versioned table
+insert into t1 values (1);
+select row_start from t1 into @row_start;
+insert into t0 (y) values (2);
+select st from t0 into @st;
+
+create or replace table t2 with system versioning as select * from t1;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t2;
+--echo #### invisible fields are not copied
+select * from t2;
+select * from t2 where row_start <= @row_start;
+
+--echo ### 2. source table with visible system fields, target with invisible
+create or replace table t3 with system versioning as select * from t0;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE $sys_datatype_null SYS_DATATYPE $sys_datatype_not_null SYS_DATATYPE $sys_datatype_default_null SYS_DATATYPE
+show create table t3;
+select * from t3 where y > 2;
+select y from t3 where st = @st and row_start > @st;
+
+--echo ### 3. source and target table with visible system fields
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+eval create or replace table t3 (
+ st $sys_datatype as row start invisible,
+ en $sys_datatype as row end invisible,
+ period for system_time (st, en)
+) with system versioning as select * from t0;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE $sys_datatype_null SYS_DATATYPE $sys_datatype_not_null SYS_DATATYPE $sys_datatype_default_null SYS_DATATYPE
+show create table t3;
+select y from t3;
+select y from t3 where st = @st;
+
+--echo ### 4. system fields not or wrongly selected
+create or replace table t3 with system versioning select x23 from t1;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE $sys_datatype_null SYS_DATATYPE $sys_datatype_not_null SYS_DATATYPE $sys_datatype_default_null SYS_DATATYPE
+show create table t3;
+select * from t3;
+--error ER_MISSING
+create or replace table t3 with system versioning select x23, row_start from t1;
+--error ER_MISSING
+create or replace table t3 with system versioning select x23, row_end from t1;
+
+--echo # Prepare checking for historical row
+delete from t1;
+select row_end from t1 for system_time all into @row_end;
+delete from t0;
+select en from t0 for system_time all into @en;
+
+--echo ## Combinations of versioned + non-versioned
+create or replace table t2 (y int);
+insert into t2 values (3);
+create or replace table t3 with system versioning select * from t1 for system_time all, t2;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t3;
+select * from t3 for system_time all;
+select * from t3 for system_time all where row_start = @row_start and row_end = @row_end;
+
+create or replace table t2 like t0;
+insert into t2 (y) values (1), (2);
+delete from t2 where y = 2;
+
+create or replace table t3 select * from t2 for system_time all;
+select st, en from t3 where y = 1 into @st, @en;
+select y from t2 for system_time all where st = @st and en = @en;
+select st, en from t3 where y = 2 into @st, @en;
+select y from t2 for system_time all where st = @st and en = @en;
+
+--echo ## Default engine detection
+--replace_result $non_default_engine NON_DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+eval create or replace table t1 (x25 int) with system versioning engine $non_default_engine;
+create or replace table t2
+as select x25, row_start, row_end from t1 for system_time all;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE $sys_datatype_null SYS_DATATYPE
+show create table t2;
+
+create or replace table t2 with system versioning
+as select x25, row_start, row_end from t1;
+--replace_result $non_default_engine NON_DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t2;
+
+create or replace table t1 (
+ x26 int,
+ st bigint unsigned as row start,
+ en bigint unsigned as row end,
+ period for system_time (st, en)
+) with system versioning engine innodb;
+--error ER_VERS_FIELD_WRONG_TYPE
+create or replace table t2 with system versioning engine myisam
+as select * from t1;
+
+--replace_result $non_default_engine NON_DEFAULT_ENGINE
+eval create or replace table t1 (x27 int, id int) with system versioning engine $non_default_engine;
+create or replace table t2 (b int, id int);
+create or replace table t3 with system versioning
+as select t2.b, t1.x27, t1.row_start, t1.row_end from t2 inner join t1 on t2.id=t1.id;
+--replace_result $non_default_engine NON_DEFAULT_ENGINE $sys_datatype SYS_DATATYPE $sys_datatype_null SYS_DATATYPE
+show create table t3;
+
+--echo ## Errors
+
+--error ER_VERS_TEMPORARY
+create or replace temporary table t (x28 int) with system versioning;
+
+--error ER_VERS_DUPLICATE_ROW_START_END
+create or replace table t1 (
+ x29 int unsigned,
+ Sys_start0 timestamp(6) as row start invisible,
+ Sys_start timestamp(6) as row start invisible,
+ Sys_end timestamp(6) as row end invisible,
+ period for system_time (Sys_start, Sys_end)
+) with system versioning;
+
+--error ER_VERS_DUPLICATE_ROW_START_END
+create or replace table t1 (
+ x29 int unsigned,
+ Sys_end0 timestamp(6) as row end invisible,
+ Sys_start timestamp(6) as row start invisible,
+ Sys_end timestamp(6) as row end invisible,
+ period for system_time (Sys_start, Sys_end)
+) with system versioning;
+
+--echo ## System fields detection
+create or replace table t1 (x30 int) with system versioning;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+eval create or replace table t2 (
+ y int,
+ st $sys_datatype as row start invisible,
+ en $sys_datatype as row end invisible,
+ period for system_time (st, en)
+) with system versioning;
+
+create or replace table t3
+as select x30, y, row_start, row_end, st, en from t1, t2;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE $sys_datatype_null SYS_DATATYPE $sys_datatype_not_null SYS_DATATYPE $sys_datatype_default_null SYS_DATATYPE
+show create table t3;
+
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+eval create or replace table t3 (
+ y int,
+ st $sys_datatype as row start invisible,
+ en $sys_datatype as row end invisible,
+ period for system_time (st, en)
+) with system versioning
+as select x30, y, row_start, row_end, st, en from t1, t2;
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE $sys_datatype_null SYS_DATATYPE $sys_datatype_not_null SYS_DATATYPE $sys_datatype_default_null SYS_DATATYPE
+show create table t3;
+
+--echo # MDEV-14828 Server crashes in JOIN::prepare / setup_fields on 2nd execution of PS [#437]
+create or replace table t1 (x int) with system versioning;
+prepare bad from 'create or replace table t2 with system versioning as select * from t1';
+execute bad; execute bad; execute bad; execute bad; execute bad; execute bad; execute bad; execute bad;
+--echo # bad is good.
+
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/t/cte.test b/mysql-test/suite/versioning/t/cte.test
new file mode 100644
index 00000000000..9df0bb3dfba
--- /dev/null
+++ b/mysql-test/suite/versioning/t/cte.test
@@ -0,0 +1,101 @@
+-- source include/have_innodb.inc
+set default_storage_engine=innodb;
+create or replace table dept (
+ dept_id int(10) primary key,
+ name varchar(100)
+)
+with system versioning;
+
+create or replace table emp (
+ emp_id int(10) primary key,
+ dept_id int(10) not null,
+ name varchar(100) not null,
+ mgr int(10),
+ salary int(10) not null,
+ constraint `dept-emp-fk`
+ foreign key (dept_id) references dept (dept_id)
+ on delete cascade
+ on update restrict,
+ constraint `mgr-fk`
+ foreign key (mgr) references emp (emp_id)
+ on delete restrict
+ on update restrict
+)
+with system versioning;
+
+insert into dept (dept_id, name) values (10, "accounting");
+
+insert into emp (emp_id, name, salary, dept_id, mgr) values
+(1, "bill", 1000, 10, null),
+(20, "john", 500, 10, 1),
+(30, "jane", 750, 10,1 );
+
+select max(sys_trx_start) into @ts_1 from emp;
+
+update emp set mgr=30 where name ="john";
+select sys_trx_start into @ts_2 from emp where name="john";
+
+/* All report to 'Bill' */
+with recursive
+ancestors
+as
+(
+ select e.emp_id, e.name, e.mgr, e.salary
+ from emp for system_time as of timestamp @ts_1 as e
+ where name = 'bill'
+ union
+ select e.emp_id, e.name, e.mgr, e.salary
+ from emp for system_time as of timestamp @ts_1 as e,
+ ancestors as a
+ where e.mgr = a.emp_id
+)
+select * from ancestors;
+
+/* Expected 3 rows */
+with recursive
+ancestors
+as
+(
+ select e.emp_id, e.name, e.mgr, e.salary
+ from emp for system_time as of timestamp @ts_2 as e
+ where name = 'bill'
+ union
+ select e.emp_id, e.name, e.mgr, e.salary
+ from emp for system_time as of timestamp @ts_2 as e,
+ ancestors as a
+ where e.mgr = a.emp_id
+)
+select * from ancestors;
+
+create or replace table emp ( emp_id int, name varchar(127), mgr int) with system versioning;
+create or replace table addr ( emp_id int, address varchar(100)) with system versioning;
+insert emp values (1, 'bill', 0), (2, 'bill', 1), (3, 'kate', 1);
+insert addr values (1, 'Moscow'), (2, 'New York'), (3, 'London');
+set @ts=now(6);
+delete from emp;
+delete from addr;
+
+with recursive
+ancestors
+as
+(
+ select e.emp_id, e.name, e.mgr
+ from emp for system_time as of timestamp @ts as e
+ where name = 'bill'
+ union
+ select ee.emp_id, ee.name, ee.mgr
+ from emp for system_time as of timestamp @ts as ee, ancestors as a
+ where ee.mgr = a.emp_id
+)
+select * from ancestors;
+
+insert emp values (4, 'john', 1);
+insert addr values (4, 'Paris');
+with ancestors as (select * from emp natural join addr) select * from ancestors;
+with ancestors as (select * from emp natural join addr) select * from ancestors for system_time all;
+with ancestors as (select * from (select * from emp natural join addr) for system_time all as t) select * from ancestors;
+select * from (select * from emp natural join addr) for system_time all as t;
+
+drop table emp;
+drop table dept;
+drop table addr;
diff --git a/mysql-test/suite/versioning/t/ddl.test b/mysql-test/suite/versioning/t/ddl.test
new file mode 100644
index 00000000000..5be62281a6d
--- /dev/null
+++ b/mysql-test/suite/versioning/t/ddl.test
@@ -0,0 +1,105 @@
+-- source suite/versioning/common.inc
+
+delimiter ~~;
+create function get_archive_table_name()
+returns varchar(255)
+begin
+ return (select archive_name from t_vtmd for system_time all where archive_name is not NULL
+ order by start desc limit 1);
+end~~
+
+create procedure drop_last_archive()
+begin
+ call concat_exec2('drop table ', get_archive_table_name());
+end~~
+delimiter ;~~
+
+set versioning_alter_history= survive;
+
+create or replace table t (a int) with system versioning;
+insert into t values (1);
+update t set a=2 where a=1;
+select sys_trx_start from t where a=2 into @tm;
+alter table t add column b int;
+
+select * from t;
+call concat_exec3('select * from ', get_archive_table_name(), ' for system_time all');
+
+call concat_exec3('select @tm=sys_trx_start from ', get_archive_table_name(), ' for system_time all where a=2');
+select @tm<sys_trx_start from t where a=2;
+select sys_trx_start from t where a=2 into @tm;
+call concat_exec3('select @tm=sys_trx_end from ', get_archive_table_name(), ' for system_time all where a=2');
+
+call drop_last_archive();
+
+
+set versioning_alter_history= keep;
+drop table t_vtmd;
+drop table t;
+set versioning_alter_history= survive;
+
+# same for INNODB ALGORITHM=COPY
+create or replace table t (a int) with system versioning;
+insert into t values (1);
+update t set a=2 where a=1;
+select sys_trx_start from t where a=2 into @tm;
+alter table t add column b int;
+
+select * from t;
+call concat_exec3('select * from ', get_archive_table_name(), ' for system_time all');
+
+call concat_exec3('select @tm=sys_trx_start from ', get_archive_table_name(), ' for system_time all where a=2');
+select @tm<sys_trx_start from t where a=2;
+select sys_trx_start from t where a=2 into @tm;
+call concat_exec3('select @tm=sys_trx_end from ', get_archive_table_name(), ' for system_time all where a=2');
+
+call drop_last_archive();
+
+
+set versioning_alter_history= keep;
+drop table t_vtmd;
+drop table t;
+set versioning_alter_history= survive;
+
+# same for INNODB default ALGORITHM
+create or replace table t (a int) with system versioning engine innodb;
+insert into t values (1);
+update t set a=2 where a=1;
+select sys_trx_start from t where a=2 into @tm;
+alter table t add column b int;
+
+select * from t;
+call concat_exec3('select * from ', get_archive_table_name(), ' for system_time all');
+
+call concat_exec3('select @tm=sys_trx_start from ', get_archive_table_name(), ' for system_time all where a=2');
+select @tm<sys_trx_start from t where a=2;
+select sys_trx_start from t where a=2 into @tm;
+call concat_exec3('select @tm=sys_trx_end from ', get_archive_table_name(), ' for system_time all where a=2');
+
+call drop_last_archive();
+
+
+set versioning_alter_history= keep;
+drop table t_vtmd;
+drop table t;
+set versioning_alter_history= survive;
+
+# no DDL for INNODB explicit ALGORITHM=INPLACE
+create or replace table t (a int) with system versioning engine innodb;
+insert into t values (1);
+update t set a=2 where a=1;
+alter table t add column b int, algorithm=inplace;
+
+set versioning_alter_history = keep;
+
+drop function get_archive_table_name;
+drop procedure drop_last_archive;
+
+select * from mysql.vtmd_template;
+show create table mysql.vtmd_template;
+
+call verify_vtq;
+drop table t;
+drop table t_vtmd;
+
+-- source suite/versioning/common_finish.inc
diff --git a/mysql-test/suite/versioning/t/debug.test b/mysql-test/suite/versioning/t/debug.test
new file mode 100644
index 00000000000..c6d5bd60861
--- /dev/null
+++ b/mysql-test/suite/versioning/t/debug.test
@@ -0,0 +1,35 @@
+--source include/have_debug.inc
+
+create table t1 (a int);
+show create table t1;
+
+--error ER_VERS_TEMPORARY
+create temporary table tt1 (a int) with system versioning;
+
+set @old_dbug=@@global.debug_dbug;
+set global debug_dbug='+d,sysvers_force';
+
+create table t2 (a int);
+show create table t2;
+
+create temporary table tt2 (a int) with system versioning;
+show create table tt2;
+
+--connect con1, localhost, root
+
+create table t3 (a int);
+show create table t3;
+
+create temporary table tt3 (a int) with system versioning;
+show create table tt3;
+--disconnect con1
+--connection default
+
+set debug_dbug='+d,sysvers_show';
+
+show create table t3;
+create table t4 (a int);
+show create table t4;
+
+set global debug_dbug=@old_dbug;
+drop table t1, t2, t3, t4;
diff --git a/mysql-test/suite/versioning/t/delete.test b/mysql-test/suite/versioning/t/delete.test
new file mode 100644
index 00000000000..55420a21185
--- /dev/null
+++ b/mysql-test/suite/versioning/t/delete.test
@@ -0,0 +1,129 @@
+-- source suite/versioning/common.inc
+
+delimiter ~~;
+create or replace procedure test_01(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('
+ create or replace table t1(
+ XNo int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ insert into t1(XNo) values(0);
+ insert into t1(XNo) values(1);
+ insert into t1(XNo) values(2);
+ insert into t1(XNo) values(3);
+ insert into t1(XNo) values(4);
+ insert into t1(XNo) values(5);
+ insert into t1(XNo) values(6);
+ insert into t1(XNo) values(7);
+ insert into t1(XNo) values(8);
+ insert into t1(XNo) values(9);
+ set @str= concat('select XNo, ',
+ fields, " < '2038-01-19 03:14:07'
+ from t1 for system_time
+ between timestamp '0000-0-0 0:0:0'
+ and timestamp '2038-01-19 04:14:07'");
+ prepare stmt from @str; execute stmt;
+ delete from t1 where XNo = 0;
+ select "Deleted 0";
+ execute stmt;
+ delete from t1 where XNo = 1;
+ select "Deleted 1";
+ execute stmt;
+ delete from t1 where XNo > 5;
+ select "Deleted >5";
+ create view vt1 as select XNo from t1;
+ select XNo as XNo_vt1 from vt1;
+ delete from vt1 where XNo = 3;
+ select "Deleted from VIEW 3";
+ select XNo as XNo_vt1 from vt1;
+ execute stmt; drop prepare stmt;
+ drop view vt1;
+ drop table t1;
+end~~
+
+create or replace procedure test_02(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('create or replace table t1 (
+ x int,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ insert into t1(x) values (1);
+ select sys_start into @sys_start from t1;
+ delete from t1;
+ select * from t1;
+ select x = 1 as A, sys_start = @sys_start as B, sys_end > sys_start as C
+ from t1 for system_time between timestamp '0-0-0' and timestamp '2038-01-19 04:14:07';
+ drop table t1;
+end~~
+
+create or replace procedure test_03(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str0= concat('(
+ x int,
+ y int,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+ set @str= concat('create or replace table t1', @str0);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ set @str= concat('create or replace table t2', @str0);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ insert into t1(x, y) values (1, 1), (2, 2), (3, 3), (14, 4);
+ insert into t2(x, y) values (11, 1), (12, 2), (13, 32), (14, 4);
+ delete t1, t2 from t1 join t2 where t1.y = 3 and t2.y = 32;
+ select x as t1_x from t1;
+ select x as t2_x from t2;
+ delete t1, t2 from t1 join t2 where t1.x = t2.x;
+ select x as t1_x from t1;
+ select x as t2_x from t2;
+ select x as t1_x_all from t1 for system_time between timestamp '0-0-0' and timestamp '2038-01-19 04:14:07';
+ select x as t2_x_all from t2 for system_time between timestamp '0-0-0' and timestamp '2038-01-19 04:14:07';
+ drop table t1;
+ drop table t2;
+end~~
+delimiter ;~~
+
+--echo # Basic + delete from view
+call test_01('timestamp(6)', 'myisam', 'sys_end');
+call test_01('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+call verify_vtq;
+
+--echo # Check sys_start, sys_end
+call test_02('timestamp(6)', 'myisam', 'sys_end');
+call test_02('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+call verify_vtq;
+
+--echo # Multi-delete
+call test_03('timestamp(6)', 'myisam', 'sys_end');
+call test_03('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+call verify_vtq;
+
+--echo # Update + delete
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1);
+update t1 set x= 2;
+delete from t1;
+select x from t1 for system_time all;
+
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/t/derived.test b/mysql-test/suite/versioning/t/derived.test
new file mode 100644
index 00000000000..9784a4a0d2f
--- /dev/null
+++ b/mysql-test/suite/versioning/t/derived.test
@@ -0,0 +1,236 @@
+create table emp
+(
+ emp_id int,
+ name varchar(127),
+ mgr int
+) with system versioning;
+
+insert into emp values (1, 'bill', 0),
+ (2, 'bill', 1),
+ (3, 'kate', 1);
+set @ts=now(6);
+delete from emp;
+insert into emp values (4, 'john', 1);
+
+with ancestors as (select * from emp) select * from ancestors;
+set @tmp= "with ancestors as (select * from emp) select * from ancestors";
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+
+with ancestors as (select * from emp for system_time all) select * from ancestors;
+set @tmp= "with ancestors as (select * from emp for system_time all) select * from ancestors";
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+
+with recursive ancestors as (select * from emp) select * from ancestors;
+set @tmp= "with recursive ancestors as (select * from emp) select * from ancestors";
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+
+select emp_id from (select emp_id from emp where row_end>'2031-1-1') as tmp;
+set @tmp= "select emp_id from (select emp_id from emp where row_end>'2031-1-1') as tmp";
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+
+with recursive
+ancestors
+as
+(
+ select e.emp_id, e.name, e.mgr
+ from emp as e
+ where name = 'john'
+ union
+ select ee.emp_id, ee.name, ee.mgr
+ from emp as ee, ancestors as a
+ where ee.mgr = a.emp_id
+)
+select * from ancestors;
+set @tmp= "
+with recursive
+ancestors
+as
+(
+ select e.emp_id, e.name, e.mgr
+ from emp as e
+ where name = 'john'
+ union
+ select ee.emp_id, ee.name, ee.mgr
+ from emp as ee, ancestors as a
+ where ee.mgr = a.emp_id
+)
+select * from ancestors";
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+
+#385
+with recursive
+ancestors
+as
+(
+ select e.emp_id, e.name, e.mgr
+ from emp for system_time as of timestamp @ts as e
+ where name = 'bill'
+ union
+ select ee.emp_id, ee.name, ee.mgr
+ from emp for system_time as of timestamp @ts as ee,
+ ancestors as a
+ where ee.mgr = a.emp_id
+)
+select * from ancestors;
+set @tmp= "
+with recursive
+ancestors
+as
+(
+ select e.emp_id, e.name, e.mgr
+ from emp for system_time as of timestamp @ts as e
+ where name = 'bill'
+ union
+ select ee.emp_id, ee.name, ee.mgr
+ from emp for system_time as of timestamp @ts as ee,
+ ancestors as a
+ where ee.mgr = a.emp_id
+)
+select * from ancestors";
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+
+drop table emp;
+
+create or replace table t1 (x int) with system versioning;
+create or replace table t2 (y int) with system versioning;
+insert into t1 values (1);
+set @t0= now(6);
+delete from t1;
+insert into t1 values (2);
+insert into t2 values (10);
+
+--replace_column 2 # 3 #
+select * from (select *, t1.row_end, t1.row_end as endo from t1) as s0;
+--replace_column 3 # 4 #
+select * from (select *, t1.row_end, t2.row_start from t1, t2) as s0;
+
+--echo # SYSTEM_TIME propagation from inner to outer
+select * from (select * from t1 for system_time as of timestamp @t0, t2) as s0;
+with s1 as (select * from t1 for system_time as of timestamp @t0, t2) select * from s1;
+--echo # leading table selection
+--replace_column 3 #
+select * from (select *, t1.row_end from t2, t1 for system_time as of timestamp @t0) as s2;
+--replace_column 3 #
+with s3 as (select *, t1.row_end from t2, t1 for system_time as of timestamp @t0) select * from s3;
+
+--echo ### VIEW instead of t1
+set @q= concat("create view vt1 as select * from t1 for system_time as of timestamp '", @t0, "'");
+prepare q from @q; execute q; drop prepare q;
+create view vt2 as select * from t1;
+
+--echo # SYSTEM_TIME propagation from view
+select * from vt1;
+--echo # SYSTEM_TIME propagation from inner to outer
+select * from (select * from vt1, t2) as s0;
+
+--echo ### SYSTEM_TIME clash
+--error ER_VERS_NOT_VERSIONED
+select * from (select * from t1 for system_time all) for system_time all as dt0;
+--error ER_VERS_NOT_VERSIONED
+select * from vt1 for system_time all;
+--error ER_VERS_NOT_VERSIONED
+with dt1 as (select * from t1 for system_time all)
+select * from dt1 for system_time all;
+
+--echo ### UNION
+set @t1= now(6);
+delete from t2;
+insert into t2 values (3);
+--echo # SYSTEM_TIME is not propagated
+select x from t1 union
+select y from t2;
+select x from t1 for system_time as of @t0 union
+select y from t2;
+select x from t1 union
+select y from t2 for system_time as of @t1;
+select x from t1 for system_time as of @t0 union
+select y from t2 for system_time as of @t1;
+
+--echo # LEFT/RIGHT JOIN
+create or replace table t1 (x int, y int) with system versioning;
+create or replace table t2 (x int, y int) with system versioning;
+
+insert into t1 values (1, 1), (1, 2), (1, 3), (4, 4), (5, 5);
+insert into t2 values (1, 2), (2, 1), (3, 1);
+
+--echo ## Outer or inner SYSTEM_TIME produces same expression
+
+--disable_warnings
+--disable_query_log
+explain extended
+select * from (
+ select t1.x, t1.y as y1, t2.x as x2, t2.y as y2
+ from t1 join t2 on t1.x = t2.x) for system_time as of now() as t;
+
+let $a=`show warnings`;
+--echo Query A:
+echo $a;
+
+explain extended
+select * from (
+ select t1.x, t1.y as y1, t2.x as x2, t2.y as y2
+ from t1 for system_time as of now()
+ join t2 for system_time as of now() on t1.x = t2.x) as t;
+
+let $b=`show warnings`;
+--echo Query B:
+echo $b;
+
+if ($a == $b)
+{
+ --echo Fine result: queries A and B are equal.
+}
+--enable_query_log
+--enable_warnings
+
+--echo ## LEFT JOIN: t1, t2 versioned
+select * from (
+ select t1.x as LJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2
+ from t1 left join t2 on t1.x = t2.x)
+as derived;
+
+alter table t2 drop system versioning;
+
+--echo ## LEFT JOIN: t1 versioned
+select * from (
+ select t1.x as LJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2
+ from t1 left join t2 on t1.x = t2.x)
+as derived;
+
+alter table t1 drop system versioning;
+alter table t2 add system versioning;
+
+--echo ## LEFT JOIN: t2 versioned
+select * from (
+ select t1.x as LJ3_x1, t1.y as y1, t2.x as x2, t2.y as y2
+ from t1 left join t2 on t1.x = t2.x)
+as derived;
+
+alter table t1 add system versioning;
+
+--echo ## RIGHT JOIN: t1, t2 versioned
+select * from (
+ select t1.x as RJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2
+ from t1 right join t2 on t1.x = t2.x)
+as derived;
+
+alter table t2 drop system versioning;
+
+--echo ## RIGHT JOIN: t1 versioned
+select * from (
+ select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2
+ from t1 right join t2 on t1.x = t2.x)
+as derived;
+
+alter table t1 drop system versioning;
+alter table t2 add system versioning;
+
+--echo ## RIGHT JOIN: t2 versioned
+select * from (
+ select t1.x as RJ3_x1, t1.y as y1, t2.x as x2, t2.y as y2
+ from t1 right join t2 on t1.x = t2.x)
+as derived;
+
+drop table t1, t2;
+drop view vt1, vt2;
+
diff --git a/mysql-test/suite/versioning/t/engines.combinations b/mysql-test/suite/versioning/t/engines.combinations
new file mode 100644
index 00000000000..561c5656929
--- /dev/null
+++ b/mysql-test/suite/versioning/t/engines.combinations
@@ -0,0 +1,8 @@
+[timestamp]
+default-storage-engine=innodb
+
+[trx_id]
+default-storage-engine=innodb
+
+[myisam]
+default-storage-engine=myisam
diff --git a/mysql-test/suite/versioning/t/foreign.combinations b/mysql-test/suite/versioning/t/foreign.combinations
new file mode 100644
index 00000000000..1a0812cfafe
--- /dev/null
+++ b/mysql-test/suite/versioning/t/foreign.combinations
@@ -0,0 +1,5 @@
+[timestamp]
+default-storage-engine=innodb
+
+[trx_id]
+default-storage-engine=innodb
diff --git a/mysql-test/suite/versioning/t/foreign.test b/mysql-test/suite/versioning/t/foreign.test
new file mode 100644
index 00000000000..81d1caa2594
--- /dev/null
+++ b/mysql-test/suite/versioning/t/foreign.test
@@ -0,0 +1,282 @@
+--source suite/versioning/common.inc
+
+--echo #################
+--echo # Test RESTRICT #
+--echo #################
+
+create table parent(
+ id int unique key
+) engine innodb;
+
+--replace_result $sys_datatype_expl SYS_DATATYPE
+eval create table child(
+ parent_id int,
+ sys_start $sys_datatype_expl as row start invisible,
+ sys_end $sys_datatype_expl as row end invisible,
+ period for system_time(sys_start, sys_end),
+ foreign key(parent_id) references parent(id)
+ on delete restrict
+ on update restrict
+) engine innodb with system versioning;
+
+insert into parent values(1);
+insert into child values(1);
+
+-- error ER_ROW_IS_REFERENCED_2
+delete from parent where id = 1;
+delete from child where parent_id = 1;
+delete from parent where id = 1;
+
+insert into parent values(1);
+insert into child values(1);
+-- error ER_ROW_IS_REFERENCED_2
+update parent set id=id+1;
+delete from child;
+update parent set id=id+1;
+select * from child for system_time from timestamp '1-1-1' to timestamp now(6);
+
+drop table child;
+drop table parent;
+
+--echo ##############################################
+--echo # Test when clustered index is a foreign key #
+--echo ##############################################
+
+create table parent(
+ id int(10) unsigned unique key
+) engine innodb;
+
+--replace_result $sys_datatype_expl SYS_DATATYPE
+eval create table child(
+ parent_id int(10) unsigned primary key,
+ sys_start $sys_datatype_expl as row start invisible,
+ sys_end $sys_datatype_expl as row end invisible,
+ period for system_time(sys_start, sys_end),
+ foreign key(parent_id) references parent(id)
+) engine innodb with system versioning;
+
+insert into parent values(1);
+insert into child values(1);
+
+-- error ER_ROW_IS_REFERENCED_2
+delete from parent where id = 1;
+
+drop table child;
+drop table parent;
+
+--echo ################
+--echo # Test CASCADE #
+--echo ################
+
+create table parent(
+ id int unique key
+) engine innodb;
+
+--replace_result $sys_datatype_expl SYS_DATATYPE
+eval create table child(
+ parent_id int,
+ sys_start $sys_datatype_expl as row start invisible,
+ sys_end $sys_datatype_expl as row end invisible,
+ period for system_time(sys_start, sys_end),
+ foreign key(parent_id) references parent(id)
+ on delete cascade
+ on update cascade
+) engine innodb with system versioning;
+
+insert into parent values(1);
+insert into child values(1);
+
+--echo ## FIXME: #415 update of foreign constraints is disabled
+call mtr.add_suppression("foreign key constraints in timestamp-based temporal table");
+--error ER_UNSUPPORTED_EXTENSION
+delete from parent where id = 1;
+delete from child where parent_id = 1;
+--echo ## FIXME END
+delete from parent where id = 1;
+select * from child;
+select * from child for system_time all;
+
+insert into parent values(1);
+insert into child values(1);
+update parent set id = id + 1;
+select * from child;
+select * from child for system_time all;
+
+drop table child;
+drop table parent;
+
+--replace_result $sys_datatype_expl SYS_DATATYPE
+eval create or replace table parent (
+ id int primary key,
+ sys_start $sys_datatype_expl as row start invisible,
+ sys_end $sys_datatype_expl as row end invisible,
+ period for system_time(sys_start, sys_end)
+) with system versioning
+engine innodb;
+
+create or replace table child (
+ x int,
+ parent_id int not null,
+ constraint `parent-fk`
+ foreign key (parent_id) references parent (id)
+ on delete cascade
+ on update restrict
+)
+engine innodb;
+
+insert into parent (id) values (2);
+insert into child (x, parent_id) values (2, 2);
+delete from parent;
+select * from child;
+
+drop table child;
+drop table parent;
+
+create or replace table parent (
+ id int primary key
+)
+engine innodb;
+
+create or replace table child (
+ id int primary key,
+ parent_id int not null,
+ constraint `parent-fk`
+ foreign key (parent_id) references parent (id)
+ on delete cascade
+ on update restrict
+) with system versioning
+engine innodb;
+
+insert into parent (id) values (3);
+insert into child (id, parent_id) values (3, 3);
+--echo ## FIXME: #415 update of foreign constraints is disabled
+delete from child;
+--echo ## FIXME END
+delete from parent;
+select * from child;
+select * from child for system_time all;
+
+drop table child;
+drop table parent;
+
+--echo #################
+--echo # Test SET NULL #
+--echo #################
+
+create table parent(
+ id int unique key
+) engine innodb;
+
+--replace_result $sys_datatype_expl SYS_DATATYPE
+eval create table child(
+ parent_id int,
+ sys_start $sys_datatype_expl as row start invisible,
+ sys_end $sys_datatype_expl as row end invisible,
+ period for system_time(sys_start, sys_end),
+ foreign key(parent_id) references parent(id)
+ on delete set null
+ on update set null
+) engine innodb with system versioning;
+
+insert into parent values(1);
+insert into child values(1);
+delete from child;
+insert into child values(1);
+
+--echo ## FIXME: #415 update of foreign constraints is disabled
+delete from child where parent_id = 1;
+--echo ## FIXME END
+delete from parent where id = 1;
+select * from child;
+select * from child for system_time from timestamp '1-1-1' to timestamp now(6);
+delete from child;
+
+insert into parent values(1);
+insert into child values(1);
+## FIXME: #415 update of foreign constraints is disabled
+if (0)
+{
+update parent set id=id+1;
+select * from child;
+select * from child for system_time from timestamp '1-1-1' to timestamp now(6);
+}
+## FIXME END
+
+drop table child;
+drop table parent;
+
+--echo ###########################
+--echo # Parent table is foreign #
+--echo ###########################
+
+--replace_result $sys_datatype_expl SYS_DATATYPE
+eval create or replace table parent(
+ id int unique key,
+ sys_start $sys_datatype_expl as row start invisible,
+ sys_end $sys_datatype_expl as row end invisible,
+ period for system_time(sys_start, sys_end)
+) engine innodb with system versioning;
+
+create or replace table child(
+ parent_id int,
+ foreign key(parent_id) references parent(id)
+) engine innodb;
+
+insert into parent values(1);
+insert into child values(1);
+-- error ER_ROW_IS_REFERENCED_2
+delete from parent;
+-- error ER_ROW_IS_REFERENCED_2
+update parent set id=2;
+
+delete from child;
+delete from parent;
+
+-- error ER_NO_REFERENCED_ROW_2
+insert into child values(1);
+
+insert into parent values(1);
+insert into child values(1);
+-- error ER_ROW_IS_REFERENCED_2
+delete from parent;
+-- error ER_ROW_IS_REFERENCED_2
+update parent set id=2;
+
+drop table child;
+drop table parent;
+
+--echo ###################
+--echo # crash on DELETE #
+--echo ###################
+
+--replace_result $sys_datatype_expl SYS_DATATYPE
+eval create or replace table a (
+ cola int(10) primary key,
+ v_cola int(10) as (cola mod 10) virtual,
+ sys_start $sys_datatype_expl as row start invisible,
+ sys_end $sys_datatype_expl as row end invisible,
+ period for system_time(sys_start, sys_end)
+) engine=innodb with system versioning;
+
+create index v_cola on a (v_cola);
+
+--replace_result $sys_datatype_expl SYS_DATATYPE
+eval create or replace table b(
+ cola int(10),
+ v_cola int(10),
+ sys_start $sys_datatype_expl as row start invisible,
+ sys_end $sys_datatype_expl as row end invisible,
+ period for system_time(sys_start, sys_end)
+) engine=innodb with system versioning;
+
+alter table b add constraint `v_cola_fk`
+foreign key (v_cola) references a (v_cola);
+
+insert into a(cola) values (12);
+insert into b(cola, v_cola) values (10,2);
+--error ER_ROW_IS_REFERENCED_2
+delete from a;
+
+drop table b, a;
+
+--source suite/versioning/common_finish.inc
diff --git a/mysql-test/suite/versioning/t/insert.test b/mysql-test/suite/versioning/t/insert.test
new file mode 100644
index 00000000000..b3c344d6f12
--- /dev/null
+++ b/mysql-test/suite/versioning/t/insert.test
@@ -0,0 +1,271 @@
+-- source suite/versioning/common.inc
+
+delimiter ~~;
+create procedure test_01(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('
+ create table t1(
+ x int unsigned,
+ y int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ insert into t1(x, y) values(3, 4);
+ insert delayed into t1(x, y) values(2, 3);
+ insert into t1 values(40, 33);
+ set @str= concat('select x, y, ', fields, ' from t1');
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ drop table t1;
+end~~
+
+create procedure test_02(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('
+ create table t1(
+ id int unsigned auto_increment primary key,
+ x int unsigned,
+ y int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ insert into t1(x, y) values(33, 44);
+ insert into t1(id, x, y) values(20, 33, 44);
+ insert into t1 values(40, 33, 44);
+ set @str= concat('select id, x, y, ', fields, ' from t1');
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ drop table t1;
+end~~
+
+create procedure test_03(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('
+ create table t1(
+ x int unsigned,
+ y int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ create view vt1_1 as select x, y from t1;
+ insert into t1(x, y) values(8001, 9001);
+ insert into vt1_1(x, y) values(1001, 2001);
+ insert into vt1_1 values(1002, 2002);
+ set @str= concat('select x, y, ', fields, ' from t1');
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ select x, y from vt1_1;
+end~~
+
+create procedure test_04(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('
+ create table t1(
+ id bigint primary key,
+ a int,
+ b int)
+ with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ insert into t1 values(1, 1, 1);
+ select row_start, row_end from t1 into @sys_start, @sys_end;
+ select id, a, b from t1;
+ insert into t1 values(2, 2, 2);
+ select id, a, b, row_start > @sys_start as C, row_end = @sys_end as D from t1 where id = 2;
+ drop table t1;
+end~~
+
+create procedure test_05(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('(
+ x int unsigned,
+ y int unsigned,
+ sys_start ', sys_type, ' as row start invisible,
+ sys_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_start, sys_end))
+ with system versioning
+ engine ', engine);
+ set @str2= concat('create table t1', @str);
+ prepare stmt from @str2; execute stmt; drop prepare stmt;
+ set @str2= concat('create table t2', @str);
+ prepare stmt from @str2; execute stmt; drop prepare stmt;
+ insert into t1(x, y) values
+ (1, 1000),
+ (2, 2000),
+ (3, 3000),
+ (4, 4000),
+ (5, 5000),
+ (6, 6000),
+ (7, 7000),
+ (8, 8000),
+ (9, 9000);
+ delete from t1 where x >= 1;
+ insert into t1(x, y) values
+ (1, 1001),
+ (2, 2001),
+ (3, 3001),
+ (4, 4001),
+ (5, 5001),
+ (6, 6001);
+ insert into t1(x, y, sys_start) values
+ (7, 7001, DEFAULT);
+ insert into t1(x, y, sys_end) values
+ (8, 8001, DEFAULT);
+ insert into t1(x, y, sys_start, sys_end) values
+ (9, 9001, DEFAULT, DEFAULT);
+ insert into t2 select x, y from t1 for system_time between timestamp '0000-0-0 0:0:0' and timestamp '9999-1-1 0:0:0';
+ select x, y from t1;
+ select x, y from t2;
+ drop table t1;
+ drop table t2;
+end~~
+delimiter ;~~
+
+call test_01('timestamp(6)', 'myisam', 'sys_end');
+call test_01('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+
+call test_02('timestamp(6)', 'myisam', 'sys_end');
+call test_02('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+
+call test_03('timestamp(6)', 'myisam', 'sys_end');
+drop table t1;
+drop view vt1_1;
+
+call test_03('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+drop table t1;
+drop view vt1_1;
+
+call test_04('timestamp(6)', 'myisam', 'sys_end');
+call test_04('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+
+call test_05('timestamp(6)', 'myisam', 'sys_end');
+call test_05('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
+
+# VTQ test
+
+call verify_vtq;
+
+create table t1(
+ x int unsigned,
+ sys_start bigint unsigned as row start invisible,
+ sys_end bigint unsigned as row end invisible,
+ period for system_time (sys_start, sys_end))
+with system versioning engine=innodb;
+
+create table t2(x int unsigned) engine=innodb;
+
+start transaction;
+insert into t1(x) values(1);
+commit;
+call verify_vtq;
+
+start transaction;
+insert into t2(x) values(1);
+savepoint a;
+insert into t1(x) values(1);
+rollback to a;
+commit;
+call verify_vtq;
+
+insert into t2(x) values (1);
+
+# virtual columns
+create or replace table t1 (
+ x int,
+ y int as (x) virtual,
+ sys_trx_start bigint unsigned as row start invisible,
+ sys_trx_end bigint unsigned as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end)
+) engine=innodb with system versioning;
+insert into t1 values (1, null);
+update t1 set x= x + 1;
+select x, y, sys_trx_end = 18446744073709551615 as current from t1 for system_time all;
+
+create or replace table t1 (
+ x int,
+ row_start timestamp(6) as row start invisible,
+ row_end timestamp(6) as row end invisible,
+ period for system_time (row_start, row_end)
+) with system versioning;
+insert into t1 values (1), (2);
+--error ER_WARNING_NON_DEFAULT_VALUE_FOR_GENERATED_COLUMN
+insert into t1 (row_start) select row_end from t1;
+set sql_mode='';
+insert into t1 (row_start, row_end) values (DEFAULT, 1);
+set sql_mode=default;
+select @@sql_mode into @saved_mode;
+set sql_mode= '';
+insert into t1 (x, row_start, row_end) values (3, 4, 5);
+set sql_mode= @saved_mode;
+insert into t1 (row_start, row_end) values (DEFAULT, DEFAULT);
+select * from t1;
+
+--echo # MDEV-14792 INSERT without column list into table with explicit versioning columns produces bad data
+create or replace table t1 (
+ i int,
+ s timestamp(6) as row start,
+ e timestamp(6) as row end,
+ c varchar(8),
+ period for system_time(s, e))
+with system versioning;
+insert into t1 values (1, null, null, 'foo');
+select i, c, e>TIMESTAMP'2038-01-01 00:00:00' AS current_row from t1;
+
+drop table t1;
+drop table t2;
+
+drop procedure test_01;
+drop procedure test_02;
+drop procedure test_03;
+drop procedure test_04;
+drop procedure test_05;
+
+-- source suite/versioning/common_finish.inc
+
+#
+# MDEV-14788 System versioning cannot be based on local timestamps, as it is now
+#
+set timestamp=1000000019;
+select now() < sysdate();
+create table t1 (a int) with system versioning;
+insert t1 values (1);
+
+--source suite/versioning/wait_system_clock.inc
+set @a=sysdate(6);
+
+select * from t1 for system_time as of now(6);
+select * from t1 for system_time as of sysdate(6);
+update t1 set a=2;
+delete from t1;
+--sorted_result
+select *, row_start > @a, row_end > @a from t1 for system_time all;
+
+--echo #
+--echo # MDEV-14871 Server crashes in fill_record / fill_record_n_invoke_before_triggers upon inserting into versioned table with trigger
+--echo #
+create or replace table t1 (pk int primary key) with system versioning;
+create trigger tr before insert on t1 for each row select 1 into @a;
+insert into t1 values (1),(2);
+
+drop table t1;
diff --git a/mysql-test/suite/versioning/t/online.test b/mysql-test/suite/versioning/t/online.test
new file mode 100644
index 00000000000..4fbd5d85100
--- /dev/null
+++ b/mysql-test/suite/versioning/t/online.test
@@ -0,0 +1,42 @@
+--source include/have_innodb.inc
+
+set system_versioning_alter_history=keep;
+
+create or replace table t (a int, b int) engine=innodb;
+
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+alter table t add system versioning, lock=none;
+alter table t add system versioning, lock=shared;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+alter table t drop column b, lock=none;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+alter table t drop column b, algorithm=inplace;
+alter table t add index idx(a), lock=none;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+alter table t drop system versioning, lock=none;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+alter table t drop system versioning, algorithm=inplace;
+
+
+create or replace table t (a int, b int) engine=innodb;
+
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+alter table t
+ add s bigint unsigned as row start,
+ add e bigint unsigned as row end,
+ add period for system_time(s, e),
+ add system versioning,
+ lock=none;
+alter table t
+ add s bigint unsigned as row start,
+ add e bigint unsigned as row end,
+ add period for system_time(s, e),
+ add system versioning;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+alter table t drop column b, lock=none;
+alter table t add index idx(a), lock=none;
+alter table t drop column s, drop column e;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
+alter table t drop system versioning, lock=none;
+
+drop table t;
diff --git a/mysql-test/suite/versioning/t/optimized.test b/mysql-test/suite/versioning/t/optimized.test
new file mode 100644
index 00000000000..93dd6ed6fc6
--- /dev/null
+++ b/mysql-test/suite/versioning/t/optimized.test
@@ -0,0 +1,33 @@
+create table t (
+ a int,
+ b int without system versioning
+) with system versioning;
+
+insert into t values(1, 2);
+insert into t values(3, 4);
+select * from t;
+select a from t for system_time as of timestamp now(6);
+select a, b, b+0 from t for system_time as of timestamp now(6);
+select * from t for system_time as of timestamp now(6);
+select count(*) from t for system_time as of timestamp now(6) group by b;
+select * from t for system_time as of timestamp now(6) order by b asc;
+select * from t for system_time as of timestamp now(6) order by b desc;
+select * from t for system_time as of timestamp now(6) group by a having a=2;
+select * from t for system_time as of timestamp now(6) group by b having b=2;
+select a from t for system_time as of timestamp now(6) where b=2;
+select a from t for system_time as of timestamp now(6) where b=NULL;
+select a from t for system_time as of timestamp now(6) where b is NULL;
+select count(*), b from t for system_time as of timestamp now(6) group by b having b=NULL;
+select a, b from t;
+
+create or replace table t (
+ a int,
+ b int not null without system versioning
+) with system versioning;
+
+insert into t values (1, 2), (3, 4);
+
+select * from t for system_time as of timestamp now(6);
+select * from t for system_time as of timestamp now(6) where b is NULL;
+
+drop table t;
diff --git a/mysql-test/suite/versioning/t/partition.combinations b/mysql-test/suite/versioning/t/partition.combinations
new file mode 100644
index 00000000000..4d73ef5a5ea
--- /dev/null
+++ b/mysql-test/suite/versioning/t/partition.combinations
@@ -0,0 +1,5 @@
+[timestamp]
+default-storage-engine=innodb
+
+[myisam]
+default-storage-engine=myisam
diff --git a/mysql-test/suite/versioning/t/partition.opt b/mysql-test/suite/versioning/t/partition.opt
new file mode 100644
index 00000000000..71be6744916
--- /dev/null
+++ b/mysql-test/suite/versioning/t/partition.opt
@@ -0,0 +1 @@
+--system-versioning-alter-history=keep
diff --git a/mysql-test/suite/versioning/t/partition.test b/mysql-test/suite/versioning/t/partition.test
new file mode 100644
index 00000000000..1dea9f7c69c
--- /dev/null
+++ b/mysql-test/suite/versioning/t/partition.test
@@ -0,0 +1,373 @@
+-- source include/have_partition.inc
+-- source suite/versioning/common.inc
+
+--echo # Check conventional partitioning on temporal tables
+
+create table t1 (x int)
+with system versioning
+partition by range columns (x) (
+ partition p0 values less than (100),
+ partition p1 values less than (1000));
+
+insert into t1 values (3), (300);
+select * from t1;
+select * from t1 partition (p0);
+select * from t1 partition (p1);
+
+delete from t1;
+select * from t1;
+select * from t1 partition (p0);
+select * from t1 partition (p1);
+select * from t1 for system_time all;
+select * from t1 partition (p0) for system_time all;
+select * from t1 partition (p1) for system_time all;
+
+--echo # Engine change native <-> non-native versioning prohibited
+--replace_result $default_engine DEFAULT_ENGINE
+eval create or replace table t1 (i int) engine=$default_engine with system versioning partition by hash(i);
+--replace_result $non_default_engine NON_DEFAULT_ENGINE
+--error ER_VERS_ALTER_ENGINE_PROHIBITED
+eval alter table t1 engine=$non_default_engine;
+
+
+--echo ## CREATE TABLE
+
+--error ER_VERS_ENGINE_UNSUPPORTED
+create or replace table t1 (x int)
+partition by system_time (
+ partition p0 history,
+ partition pn current);
+
+create or replace table t1 (x int);
+--error ER_VERS_ENGINE_UNSUPPORTED,ER_VERS_ENGINE_UNSUPPORTED
+alter table t1
+partition by system_time (
+ partition p0 history,
+ partition pn current);
+
+--error ER_VERS_WRONG_PARTS
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+ partition p0 current);
+
+--error ER_VERS_WRONG_PARTS
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+ partition p0 current,
+ partition p1 current);
+
+--error ER_VERS_WRONG_PARTS
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+ partition p0 history,
+ partition p1 history);
+
+--error ER_VERS_WRONG_PARTS
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+ partition pn current,
+ partition p0 history);
+
+--error ER_VERS_WRONG_PARTS
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+ partition p0,
+ partition pn current);
+
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+ partition p0 history,
+ partition pn current);
+
+
+--echo ## ALTER TABLE
+
+--error ER_VERS_WRONG_PARTS
+alter table t1 add partition (
+ partition p1 current);
+
+alter table t1 add partition (
+ partition p1 history);
+
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t1;
+
+insert into t1 values (1), (2);
+
+--error ER_VERS_WRONG_PARTS
+alter table t1 drop partition pn;
+alter table t1 drop partition p1;
+--error ER_VERS_WRONG_PARTS
+alter table t1 drop partition p0;
+
+select x from t1;
+
+--echo # Bug #260: incorrect IB partitioning warning
+create or replace table t1 (x int)
+with system versioning
+partition by system_time limit 1 (
+ partition p0 history,
+ partition pn current);
+alter table t1 change x big int;
+
+create or replace table t1 (i int) engine myisam partition by hash(i) partitions 2;
+--error ER_PARTITION_WRONG_TYPE
+alter table t1 add partition (partition px history);
+
+
+--echo ## INSERT, UPDATE, DELETE
+
+create or replace table t1 (x int)
+with system versioning
+partition by system_time (
+ partition p0 history,
+ partition pn current);
+
+set @now= now(6);
+insert into t1 values (1);
+set @str= concat('select x, row_start < @now as A, row_end > @now as B from t1 partition (p0)');
+prepare select_p0 from @str;
+set @str= concat('select x, row_start > @now as C, row_end = timestamp\'2038-01-19 03:14:07.999999\' as D from t1 partition (pn)');
+prepare select_pn from @str;
+
+execute select_p0;
+execute select_pn;
+
+--echo ## pruning check
+--replace_regex /\d/N/ /ALL/system/ /Using where//
+explain partitions select * from t1;
+
+set @str= concat('select row_start from t1 partition (pn) into @ts0');
+prepare stmt from @str; execute stmt; drop prepare stmt;
+
+--source suite/versioning/wait_system_clock.inc
+
+set @now= now(6);
+delete from t1;
+execute select_p0;
+execute select_pn;
+
+set @str= concat('select row_start from t1 partition (p0) into @ts1');
+prepare stmt from @str; execute stmt; drop prepare stmt;
+
+select @ts0 = @ts1;
+
+set @now= now(6);
+insert into t1 values (2);
+
+--source suite/versioning/wait_system_clock.inc
+
+execute select_p0;
+execute select_pn;
+
+set @str= concat('select row_start from t1 partition (pn) into @ts0');
+prepare stmt from @str; execute stmt; drop prepare stmt;
+
+set @now= now(6);
+update t1 set x = x + 1;
+
+--source suite/versioning/wait_system_clock.inc
+
+execute select_p0;
+execute select_pn;
+
+drop prepare select_p0;
+drop prepare select_pn;
+
+set @str= concat('select row_start from t1 partition (p0) where x = 2 into @ts1');
+prepare stmt from @str; execute stmt; drop prepare stmt;
+set @str= concat('select row_end from t1 partition (p0) where x = 2 into @ts2');
+prepare stmt from @str; execute stmt; drop prepare stmt;
+set @str= concat('select row_start from t1 partition (pn) into @ts3');
+prepare stmt from @str; execute stmt; drop prepare stmt;
+
+select @ts0 = @ts1;
+select @ts2 = @ts3;
+
+--echo ## rotation by LIMIT
+--error ER_PART_WRONG_VALUE
+create or replace table t1 (x int)
+with system versioning
+partition by system_time limit 0 (
+ partition p0 history,
+ partition p1 history,
+ partition pn current);
+
+create or replace table t1 (x int)
+with system versioning
+partition by system_time limit 2 (
+ partition p0 history,
+ partition p1 history,
+ partition pn current);
+
+--replace_result $default_engine DEFAULT_ENGINE $sys_datatype SYS_DATATYPE
+show create table t1;
+
+--error ER_DROP_PARTITION_NON_EXISTENT
+alter table t1 drop partition non_existent;
+
+insert into t1 values (1), (2), (3);
+select * from t1 partition (pn);
+--echo ### warn about partition switching
+delete from t1;
+select * from t1 partition (p0);
+select * from t1 partition (p1);
+
+insert into t1 values (4), (5);
+--echo ### warn about full partition
+delete from t1;
+select * from t1 partition (p1) order by x;
+
+--echo ### Assertion in ALTER on warning from partitioning LIMIT [#446]
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1), (2);
+delete from t1;
+alter table t1 partition by system_time limit 1 (
+ partition p1 history,
+ partition pn current);
+
+--echo ## rotation by INTERVAL
+--error ER_PART_WRONG_VALUE
+create or replace table t1 (x int)
+with system versioning
+partition by system_time interval 0 second (
+ partition p0 history,
+ partition p1 history,
+ partition pn current);
+
+create or replace table t1 (x int)
+with system versioning
+partition by system_time interval 1 second (
+ partition p0 history,
+ partition p1 history,
+ partition pn current);
+
+insert into t1 values (1), (2), (3);
+select * from t1 partition (pn);
+delete from t1;
+select * from t1 partition (p0);
+
+--sleep 2
+insert into t1 values (4);
+delete from t1;
+select * from t1 partition (p1);
+
+--echo ## Subpartitions
+create or replace table t1 (x int)
+with system versioning
+partition by system_time limit 2
+subpartition by key (x)
+subpartitions 2 (
+ partition p0 history,
+ partition p1 history,
+ partition pn current);
+
+insert into t1 (x) values (1), (2), (3), (4), (5);
+select * from t1 partition (pnsp0);
+select * from t1 partition (pnsp1);
+
+--echo ### warn about partition switching and about full partition
+delete from t1;
+select * from t1 partition (p0sp0);
+select * from t1 partition (p0sp1);
+select * from t1 partition (p1sp0);
+select * from t1 partition (p1sp1);
+
+create or replace table t1 (a bigint)
+with system versioning
+partition by range (a)
+(partition p0 values less than (20) engine innodb,
+ partition p1 values less than maxvalue engine innodb);
+insert into t1 values (1);
+
+create or replace table t1 (
+ f_int1 integer default 0
+) with system versioning
+partition by range(f_int1)
+subpartition by hash(f_int1)
+( partition part1 values less than (1000)
+(subpartition subpart11 storage engine = 'innodb',
+subpartition subpart12 storage engine = 'innodb'));
+insert into t1 values (1);
+
+create or replace table t1 (i int) engine=innodb partition by key(i);
+alter table t1 add system versioning;
+insert into t1 values();
+
+--echo # MDEV-14722 Assertion in ha_commit_trans for sub-statement
+create or replace table t1 (i int) with system versioning
+partition by system_time interval 1 day (
+ partition p1 history,
+ partition pc current);
+create or replace table t2 (f int);
+create or replace trigger tr before insert on t2
+for each row select table_rows from information_schema.tables
+where table_name = 't1' into @a;
+insert into t2 values (1);
+
+--echo # MDEV-14740 Locking assertion for system_time partitioning
+create or replace table t1 (i int) with system versioning
+partition by system_time interval 1 week (
+ partition p1 history,
+ partition pn current);
+create or replace table t2 (f int);
+create or replace trigger tr before insert on t2
+for each row select count(*) from t1 into @a;
+insert into t2 values (1);
+
+--echo # MDEV-14741 Assertion `(trx)->start_file == 0' failed in row_truncate_table_for_mysql()
+create or replace table t1 (i int) with system versioning
+partition by system_time interval 1 hour (
+ partition p1 history,
+ partition pn current);
+set autocommit= off;
+truncate table t1;
+set autocommit= on;
+
+--echo # MDEV-14747 ALTER PARTITION BY SYSTEM_TIME after LOCK TABLES
+create or replace table t1 (x int) with system versioning;
+lock table t1 write;
+alter table t1 partition by system_time interval 1 week (
+ partition p1 history,
+ partition pn current);
+unlock tables;
+
+--echo # MDEV-14748 Assertion in ha_myisammrg::attach_children()
+create or replace table t1 (x int) engine=myisam with system versioning
+ partition by system_time interval 1 month (partition p1 history, partition pn current);
+create or replace table t2 (x int) engine=myisam;
+create or replace table t3 (x int) engine=merge union=(t2);
+create or replace table t4 (x int) engine=myisam;
+create or replace trigger tr after insert on t4 for each row insert into t2
+ ( select x from t3 ) union ( select x from t1 );
+insert into t4 values (1);
+
+--echo # MDEV-14821 Assertion failure
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (0), (1);
+update t1 set x= x + 1;
+alter table t1 partition by system_time limit 1 (
+ partition p1 history,
+ partition p2 history,
+ partition pn current);
+delete from t1 where x = 1;
+delete from t1 where x = 2;
+
+--echo # MDEV-14923 Assertion upon INSERT into locked versioned partitioned table
+create or replace table t1 (x int) with system versioning
+partition by system_time (partition p1 history, partition pn current);
+lock table t1 write;
+--error ER_SAME_NAME_PARTITION
+alter table t1 add partition (partition p1 history);
+insert into t1 values (1);
+unlock tables;
+
+--echo # Test cleanup
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/t/replace.test b/mysql-test/suite/versioning/t/replace.test
new file mode 100644
index 00000000000..194606555db
--- /dev/null
+++ b/mysql-test/suite/versioning/t/replace.test
@@ -0,0 +1,13 @@
+--source suite/versioning/common.inc
+--source suite/versioning/key_type.inc
+--source suite/versioning/engines.inc
+
+call create_table('t', 'x int');
+
+insert t values (1, 2);
+replace t values (1, 3);
+select *, row_end>TIMESTAMP'2038-01-01 00:00:00' as current from t for system_time all
+order by x;
+
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/t/rpl.test b/mysql-test/suite/versioning/t/rpl.test
new file mode 100644
index 00000000000..342d58626b7
--- /dev/null
+++ b/mysql-test/suite/versioning/t/rpl.test
@@ -0,0 +1,108 @@
+--source include/master-slave.inc
+
+if ($MTR_COMBINATION_STMT)
+{
+ --source include/have_binlog_format_statement.inc
+}
+if ($MTR_COMBINATION_ROW)
+{
+ --source include/have_binlog_format_row.inc
+}
+if ($MTR_COMBINATION_MIX)
+{
+ --source include/have_binlog_format_mixed.inc
+}
+--source suite/versioning/engines.inc
+
+#BUG#12662190 - COM_COMMIT IS NOT INCREMENTED FROM THE BINARY LOGS ON SLAVE, COM_BEGIN IS
+#Testing command counters -BEFORE.
+#Storing the before counts of Slave
+connection slave;
+let $slave_com_commit_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_commit', Value, 1);
+let $slave_com_insert_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_insert', Value, 1);
+let $slave_com_delete_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_delete', Value, 1);
+let $slave_com_update_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_update', Value, 1);
+
+connection master;
+CREATE TABLE t1 (x int) with system versioning;
+insert into t1 values (1);
+SELECT * FROM t1;
+delete from t1;
+select * from t1;
+select * from t1 for system_time all;
+sync_slave_with_master;
+select * from t1;
+select * from t1 for system_time all;
+
+connection master;
+insert into t1 values (2);
+sync_slave_with_master;
+select * from t1;
+
+connection master;
+update t1 set x = 3;
+sync_slave_with_master;
+select * from t1;
+select * from t1 for system_time all;
+
+# check unversioned -> versioned replication
+connection master;
+create or replace table t1 (x int primary key);
+sync_slave_with_master;
+alter table t1 with system versioning;
+
+connection master;
+insert into t1 values (1);
+sync_slave_with_master;
+select * from t1;
+select * from t1 for system_time all;
+
+connection master;
+update t1 set x= 2 where x = 1;
+sync_slave_with_master;
+select * from t1;
+select * from t1 for system_time all;
+
+connection master;
+delete from t1;
+sync_slave_with_master;
+select * from t1;
+select * from t1 for system_time all;
+
+# same thing (UPDATE, DELETE), but without PK
+connection master;
+create or replace table t1 (x int);
+sync_slave_with_master;
+alter table t1 with system versioning;
+
+connection master;
+insert into t1 values (1);
+update t1 set x= 2 where x = 1;
+sync_slave_with_master;
+select * from t1;
+select * from t1 for system_time all;
+
+connection master;
+delete from t1;
+sync_slave_with_master;
+select * from t1;
+select * from t1 for system_time all;
+
+# multi-update
+connection master;
+create or replace table t1 (x int) with system versioning;
+create or replace table t2 (x int) with system versioning;
+insert into t1 values (1);
+insert into t2 values (2);
+update t1, t2 set t1.x=11, t2.x=22;
+sync_slave_with_master;
+select * from t1;
+select * from t2;
+select * from t1 for system_time all;
+select * from t2 for system_time all;
+
+
+connection master;
+drop table t1, t2;
+
+--source include/rpl_end.inc
diff --git a/mysql-test/suite/versioning/t/select.test b/mysql-test/suite/versioning/t/select.test
new file mode 100644
index 00000000000..356406e0947
--- /dev/null
+++ b/mysql-test/suite/versioning/t/select.test
@@ -0,0 +1,306 @@
+--source suite/versioning/engines.inc
+--source suite/versioning/common.inc
+
+# test_01
+
+--replace_result $sys_datatype_expl SYS_DATATYPE
+eval create or replace table t1 (
+ x int unsigned,
+ y int unsigned,
+ sys_trx_start $sys_datatype_expl as row start invisible,
+ sys_trx_end $sys_datatype_expl as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end)
+) with system versioning;
+
+insert into t1 (x, y) values
+ (0, 100),
+ (1, 101),
+ (2, 102),
+ (3, 103),
+ (4, 104),
+ (5, 105),
+ (6, 106),
+ (7, 107),
+ (8, 108),
+ (9, 109);
+
+set @t0= now(6);
+if ($MTR_COMBINATION_TRX_ID)
+{
+--disable_query_log
+ select sys_trx_start from t1 limit 1 into @x0;
+--enable_query_log
+}
+
+delete from t1 where x = 3;
+delete from t1 where x > 7;
+
+insert into t1(x, y) values(3, 33);
+select sys_trx_start from t1 where x = 3 and y = 33 into @t1;
+if ($MTR_COMBINATION_TRX_ID)
+{
+--disable_query_log
+ set @x1= @t1;
+ select vtq_commit_ts(@x1) into @t1;
+--enable_query_log
+}
+
+select x, y from t1;
+select x as ASOF_x, y from t1 for system_time as of timestamp @t0;
+select x as FROMTO_x, y from t1 for system_time from timestamp '0-0-0 0:0:0' to timestamp @t1;
+select x as BETWAND_x, y from t1 for system_time between timestamp '0-0-0 0:0:0' and timestamp @t1;
+select x as ALL_x, y from t1 for system_time all;
+
+--disable_query_log
+if ($MTR_COMBINATION_TRX_ID)
+{
+ select x as ASOF2_x, y from t1 for system_time as of @x0;
+ select x as FROMTO2_x, y from t1 for system_time from @x0 to @x1;
+ select x as BETWAND2_x, y from t1 for system_time between transaction @x0 and transaction @x1;
+}
+if ($MTR_COMBINATION_TIMESTAMP)
+{
+ select x as ASOF2_x, y from t1 for system_time as of @t0;
+ select x as FROMTO2_x, y from t1 for system_time from timestamp '0-0-0 0:0:0' to timestamp @t1;
+ select x as BETWAND2_x, y from t1 for system_time between timestamp '0-0-0 0:0:0' and timestamp @t1;
+}
+--enable_query_log
+
+# test_02
+
+create or replace table t1 (
+ x int unsigned,
+ y int unsigned
+) with system versioning;
+create or replace table t2 (
+ x int unsigned,
+ y int unsigned
+) with system versioning;
+
+insert into t1 values (1, 1), (1, 2), (1, 3), (4, 4), (5, 5);
+insert into t2 values (1, 2), (2, 1), (3, 1);
+set @t0= now(6);
+
+select t1.x as IJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x;
+select t1.x as LJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 left join t2 on t1.x = t2.x;
+select t1.x as RJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x;
+
+delete from t1;
+delete from t2;
+
+#384
+explain extended select * from (select t1.x as IJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+explain extended select * from (select t1.x as LJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 left join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+#383
+explain extended select * from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+
+select * from (select t1.x as IJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+select * from (select t1.x as LJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 left join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+select * from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+
+drop table t1;
+drop table t2;
+
+# Wildcard expansion on hidden fields
+
+create table t1(
+ A int
+) with system versioning;
+insert into t1 values(1);
+select * from t1;
+
+create or replace table t1 (x int);
+insert into t1 values (1);
+--error ER_VERS_NOT_VERSIONED
+select * from t1 for system_time all;
+
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1);
+select * from t1 for system_time all for update;
+
+create or replace table t1 (a int not null auto_increment primary key) with system versioning;
+select * from (t1 as t2 left join t1 as t3 using (a)) natural left join t1;
+
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (a int) with system versioning;
+insert into t1 values(1);
+insert into t2 values(1);
+create view v1 as select * from t2 inner join t1 using (a);
+select * from v1;
+drop view v1;
+
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+create view vt1 as select a from t1;
+select * from t1 natural join vt1;
+drop view vt1;
+
+create or replace table t1(x int) with system versioning;
+select * from (t1 as r left join t1 as u using (x)), t1;
+
+# @end should be max
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+create trigger read_end after update on t1
+ for each row set @end = old.row_end;
+update t1 set a=2;
+--replace_result 18446744073709551615 MAX_RESULT "2038-01-19 03:14:07.999999" MAX_RESULT
+select @end;
+
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (b int) with system versioning;
+insert into t1 values (1);
+insert into t2 values (2);
+select * from (select * from t1 cross join t2) as tmp;
+select * from (select * from (select * from t1 cross join t2) as tmp1) as tmp2;
+select * from (select * from t1 cross join t2 for system_time as of timestamp '0-0-0') as tmp;
+
+create or replace table t1(a1 int) with system versioning;
+create or replace table t2(a2 int) with system versioning;
+insert into t1 values(1),(2);
+insert into t2 values(1),(2);
+select * from t1 for system_time all natural left join t2 for system_time all;
+
+# natural join of a view and table
+create or replace table t1(a1 int) with system versioning;
+create or replace table t2(a2 int) with system versioning;
+insert into t1 values(1),(2);
+insert into t2 values(1),(2);
+create or replace view v1 as select a1 from t1;
+
+select * from v1 natural join t2;
+select * from v1 natural left join t2;
+select * from v1 natural right join t2;
+
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+insert into t1 values (2);
+insert into t1 values (3);
+select * from t1 left outer join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
+
+create or replace table t1 (x int) with system versioning;
+create or replace table t2 (y int) with system versioning;
+insert into t1 values (1), (2), (3);
+delete from t1 where x = 3;
+insert into t2 values (1);
+select * from t1, t2 for system_time all;
+
+--error ER_VERS_NOT_VERSIONED
+select * from (select * from t1 for system_time all, t2 for system_time all)
+for system_time all as t;
+
+--echo # TRANSACTION/TIMESTAMP specifier in SYSTEM_TIME [MDEV-14645, Issue #396]
+create or replace table t1 (x int) with system versioning engine myisam;
+--error ER_VERS_ENGINE_UNSUPPORTED
+select * from t1 for system_time as of transaction 1;
+
+create or replace table t1 (
+ x int,
+ sys_trx_start bigint unsigned as row start invisible,
+ sys_trx_end bigint unsigned as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end)
+) with system versioning engine innodb;
+insert into t1 values (1);
+set @ts= now(6);
+delete from t1;
+select sys_trx_start from t1 for system_time all into @trx_start;
+
+--echo ## ensure @trx_start is much lower than unix timestamp
+select @trx_start < unix_timestamp(@ts) - 100 as trx_start_good;
+
+--echo ## TIMESTAMP specifier
+select x from t1 for system_time as of timestamp @ts;
+select x from t1 for system_time as of timestamp unix_timestamp(@ts);
+select x from t1 for system_time as of timestamp @trx_start;
+
+set @ts= timestamp'1-1-1 0:0:0';
+
+--echo ## TRANSACTION specifier
+select x from t1 for system_time as of transaction @ts;
+select x from t1 for system_time as of transaction unix_timestamp(@ts);
+select x from t1 for system_time as of transaction @trx_start;
+
+--echo ## no specifier (auto-detection)
+select x from t1 for system_time as of @ts;
+select x from t1 for system_time as of unix_timestamp(@ts);
+select x from t1 for system_time as of @trx_start;
+
+
+--echo ### Issue #365, bug 4 (related to #226, optimized fields)
+create or replace table t1 (i int, b int) with system versioning;
+insert into t1 values (0, 0), (0, 0);
+select min(i) over (partition by b) as f
+from (select i + 0 as i, b from t1) as tt
+order by i;
+
+--echo ### Issue #365, bug 5 (dangling AND)
+create or replace table t1 (a int);
+create or replace table t2 (b int) with system versioning;
+select * from t1
+where exists (select 1 from t2 where t2.b = t1.a and t2.b = t1.a);
+
+--echo ### Issue #365, bug 9 (not a derived subquery)
+create or replace table t1 (x int) with system versioning;
+select t1.x in (select x from t1) a from t1, (select x from t1) b;
+
+--echo ### Issue #365, bug 10 (WHERE cond freed prematurely for PS)
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1);
+create or replace view v1 as select x from t1 where x = 1;
+prepare stmt from "
+select x from t1 where x in (select x from v1);";
+execute stmt;
+execute stmt;
+
+--echo ### Issue #365, bug 11 (WHERE cond not top level item)
+create or replace table t1 (a int, b int, key idx(a)) with system versioning;
+insert into t1 values (1, 1), (2, 2);
+select * from t1 where (a, 2) in ((1, 1), (2, 2)) and b = 1;
+
+--echo ### Issue #398, NOW is now non-magic
+create or replace table t1 (x int) with system versioning;
+select * from t1 for system_time as of current_timestamp;
+--error ER_BAD_FIELD_ERROR
+select * from t1 for system_time as of now;
+
+--echo ### Issue #405, NATURAL JOIN failure
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (b int);
+create or replace view v1 as select a, row_start, row_end from t1 where a > round(rand()*1000);
+select * from v1 natural join t2;
+
+--echo ### Issue #406, MDEV-14633 Assertion on TRT read
+create or replace table t1 (pk int primary key, i int, t time, key (i)) with system versioning;
+insert into t1 values (1, 10, '15:01:53'), (2, 20, '00:00:00');
+delete from t1;
+--disable_warnings
+select * from t1 where t = '00:00:00' and i > 0 and row_end <> '2012-12-12 00:00:00';
+--enable_warnings
+
+--echo ### MDEV-14816 Assertion `join->best_read < double(1.797...e+308L)' failed in bool greedy_search
+create or replace table t1 (f1 int) with system versioning;
+create or replace table t2 (f2 int) with system versioning;
+create or replace table t3 (f3 int);
+create or replace table t4 (f4 int);
+insert into t1 values (1), (2), (3), (4);
+insert into t2 values (1), (2), (3);
+insert into t3 values (1), (2);
+insert into t4 values (1);
+select * from
+ t1 as t1a
+ left join t2 as t2a left join (t3 as t3a inner join t1) on t2a.f2 = t3a.f3 on t1a.f1 = t2a.f2
+ left join (t2 join t3 inner join t4) on t2a.f2 = t1a.f1;
+
+
+drop view v1;
+drop table t1, t2, t3, t4;
+
+call verify_vtq_dummy(34);
+
+-- source suite/versioning/common_finish.inc
diff --git a/mysql-test/suite/versioning/t/select2.test b/mysql-test/suite/versioning/t/select2.test
new file mode 100644
index 00000000000..81070a960ee
--- /dev/null
+++ b/mysql-test/suite/versioning/t/select2.test
@@ -0,0 +1,211 @@
+--source suite/versioning/engines.inc
+--source suite/versioning/common.inc
+
+let $engine=`select default_engine()`;
+let $sys_type=`select sys_datatype(default_engine())`;
+
+replace_result $engine ENGINE $sys_type SYS_TYPE;
+eval create table t1(
+ x int unsigned,
+ y int unsigned,
+ sys_start $sys_type as row start invisible,
+ sys_end $sys_type as row end invisible,
+ period for system_time (sys_start, sys_end))
+with system versioning engine=$engine;
+
+insert into t1 (x, y) values
+ (0, 100),
+ (1, 101),
+ (2, 102),
+ (3, 103),
+ (4, 104),
+ (5, 105),
+ (6, 106),
+ (7, 107),
+ (8, 108),
+ (9, 109);
+set @t0= now(6);
+select sys_start from t1 limit 1 into @x0;
+
+delete from t1 where x = 3;
+delete from t1 where x > 7;
+
+insert into t1(x, y) values(3, 33);
+select sys_start from t1 where x = 3 and y = 33 into @t1;
+if(`select '$engine' = 'innodb'`) {
+ set @x1= @t1;
+ select vtq_commit_ts(@x1) into @t1;
+}
+
+select x, y from t1;
+select x as ASOF_x, y from t1 for system_time as of timestamp @t0;
+select x as FROMTO_x, y from t1 for system_time from '0-0-0 0:0:0' to timestamp @t1;
+select x as BETWAND_x, y from t1 for system_time between '0-0-0 0:0:0' and timestamp @t1;
+select x as ALL_x, y from t1 for system_time all;
+
+if(`select '$engine' = 'innodb'`) {
+ select x as ASOF2_x, y from t1 for system_time as of @x0;
+ select x as FROMTO2_x, y from t1 for system_time from @x0 to @x1;
+ select x as BETWAND2_x, y from t1 for system_time between transaction @x0 and transaction @x1;
+}
+if(`select '$engine' != 'innodb'`) {
+ select x as ASOF2_x, y from t1 for system_time as of @t0;
+ select x as FROMTO2_x, y from t1 for system_time from '0-0-0 0:0:0' to @t1;
+ select x as BETWAND2_x, y from t1 for system_time between timestamp '0-0-0 0:0:0' and timestamp @t1;
+}
+
+drop table t1;
+
+replace_result $engine ENGINE $sys_type SYS_TYPE;
+eval create table t1(
+ x int,
+ y int,
+ sys_start $sys_type as row start invisible,
+ sys_end $sys_type as row end invisible,
+ period for system_time (sys_start, sys_end))
+with system versioning engine=$engine;
+
+create table t2 like t1;
+
+insert into t1 values (1, 1), (1, 2), (1, 3), (4, 4), (5, 5);
+insert into t2 values (1, 2), (2, 1), (3, 1);
+set @t0= now(6);
+
+select t1.x as IJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x;
+select t1.x as LJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 left join t2 on t1.x = t2.x;
+select t1.x as RJ1_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x;
+
+delete from t1;
+delete from t2;
+
+select IJ2_x1,y1,x2,y2 from (select t1.x as IJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 inner join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+select LJ2_x1,y1,x2,y2 from (select t1.x as LJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 left join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+select RJ2_x1,y1,x2,y2 from (select t1.x as RJ2_x1, t1.y as y1, t2.x as x2, t2.y as y2 from t1 right join t2 on t1.x = t2.x)
+for system_time as of timestamp @t0 as t;
+
+drop table t1;
+drop table t2;
+
+--echo # MDEV-14686 Server crashes in Item_field::used_tables on 2nd call of SP [#422]
+create or replace table t1 (called int, bad int) with system versioning;
+create or replace procedure bad() select * from t1 where bad in (select called from t1);
+--disable_query_log
+call bad; call bad; call bad; call bad; call bad; call bad; call bad; call bad;
+drop procedure bad;
+--enable_query_log
+--echo # bad() is good.
+
+--echo # MDEV-14751 Server crashes in TABLE::versioned on 2nd execution of SP [#431]
+create or replace table t1 (called_bad int);
+create or replace table t2 (b int);
+create or replace procedure bad() select * from t1 where ( 5, 6 ) in ( select b, b from t2 ) and called_bad in ( select max(b) from t2 );
+--disable_query_log
+call bad; call bad; call bad; call bad; call bad; call bad; call bad; call bad;
+drop procedure bad;
+--enable_query_log
+--echo # bad() is good.
+
+--echo # MDEV-14786 Server crashes in Item_cond::transform on 2nd execution of SP querying from a view [#436]
+create or replace table t1 (called_bad int) with system versioning;
+create or replace view v1 as select called_bad from t1 where called_bad < 5;
+create or replace procedure bad() select called_bad from v1;
+--disable_query_log
+call bad; call bad; call bad; call bad; call bad; call bad; call bad; call bad;
+drop procedure bad;
+--enable_query_log
+--echo # bad() is good.
+
+--echo # wildcard expansion on hidden fields.
+create or replace table t1(
+ A int
+) with system versioning;
+insert into t1 values(1);
+select * from t1;
+
+create or replace table t1 (x int);
+insert into t1 values (1);
+--error ER_VERS_NOT_VERSIONED
+select * from t1 for system_time all;
+
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1);
+select * from t1 for system_time as of now() for update;
+
+create or replace table t1 (a int not null auto_increment primary key) with system versioning;
+select * from (t1 as t2 left join t1 as t3 using (a)) natural left join t1;
+
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (a int) with system versioning;
+insert into t1 values(1);
+insert into t2 values(1);
+create or replace view v1 as select * from t2 inner join t1 using (a);
+select * from v1;
+drop view v1;
+
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+create view vt1 as select a from t1;
+select * from t1 natural join vt1;
+drop view vt1;
+
+create or replace table t1(x int) with system versioning;
+select * from (t1 as r left join t1 as u using (x)), t1;
+
+# @end should be max
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+create trigger read_end after update on t1
+ for each row set @end = old.row_end;
+update t1 set a=2;
+--replace_result 18446744073709551615 MAX_RESULT "2038-01-19 03:14:07.999999" MAX_RESULT
+select @end;
+
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (b int) with system versioning;
+insert into t1 values (1);
+insert into t2 values (2);
+select * from (select * from t1 cross join t2) as tmp;
+select * from (select * from (select * from t1 cross join t2) as tmp1) as tmp2;
+select * from (select * from t1 cross join t2 for system_time as of timestamp '0-0-0') as tmp;
+
+create or replace table t1(a1 int) with system versioning;
+create or replace table t2(a2 int) with system versioning;
+insert into t1 values(1),(2);
+insert into t2 values(1),(2);
+select * from t1 for system_time all natural left join t2 for system_time all;
+
+# natural join of a view and table
+create or replace table t1(a1 int) with system versioning;
+create or replace table t2(a2 int) with system versioning;
+insert into t1 values(1),(2);
+insert into t2 values(1),(2);
+create or replace view v1 as select a1 from t1;
+
+select * from v1 natural join t2;
+select * from v1 natural left join t2;
+select * from v1 natural right join t2;
+
+create or replace table t1 (a int) with system versioning;
+insert into t1 values (1);
+insert into t1 values (2);
+insert into t1 values (3);
+select * from t1 left outer join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
+
+create or replace table t1 (x int) with system versioning;
+create or replace table t2 (y int) with system versioning;
+insert into t1 values (1), (2), (3);
+delete from t1 where x = 3;
+insert into t2 values (1);
+select * from t1, t2 for system_time all;
+
+--error ER_VERS_NOT_VERSIONED
+select * from (select * from t1 for system_time all, t2 for system_time all) for system_time all as t;
+--error ER_PARSE_ERROR
+select * from (t1 for system_time all join t2 for system_time all) for system_time all;
+
+drop view v1;
+drop table t1, t2;
+
+-- source suite/versioning/common_finish.inc
diff --git a/mysql-test/suite/versioning/t/simple.test b/mysql-test/suite/versioning/t/simple.test
new file mode 100644
index 00000000000..3790f0b8978
--- /dev/null
+++ b/mysql-test/suite/versioning/t/simple.test
@@ -0,0 +1,73 @@
+-- source include/have_innodb.inc
+set default_storage_engine=innodb;
+create or replace table dept (
+ dept_id int(10) primary key,
+ name varchar(100)
+)
+with system versioning;
+
+create or replace table emp (
+ emp_id int(10) primary key,
+ dept_id int(10),
+ name varchar(100),
+ salary int(10),
+ constraint `dept-emp-fk`
+ foreign key (dept_id) references dept (dept_id)
+ on delete cascade
+ on update restrict
+)
+with system versioning;
+
+select now() into @ts_0;
+
+insert into dept (dept_id, name) values (10, "accounting");
+commit;
+
+select row_start into @ts_1 from dept where dept_id=10;
+
+insert into emp (emp_id, name, salary, dept_id) values (1, "bill", 1000, 10);
+commit;
+
+select row_start into @ts_2 from emp where name="bill";
+
+select * from emp;
+
+update emp set salary=2000 where name="bill";
+commit;
+
+select row_start into @ts_3 from emp where name="bill";
+
+select * from emp;
+select * from emp for system_time as of timestamp @ts_2;
+select * from emp for system_time as of timestamp @ts_3;
+select * from emp e, dept d
+where d.dept_id = 10
+ and d.dept_id = e.dept_id;
+
+select * from
+ emp for system_time from timestamp @ts_1 to timestamp @ts_2 e,
+ dept for system_time from timestamp @ts_1 to timestamp @ts_2 d
+where d.dept_id = 10
+ and d.dept_id = e.dept_id;
+
+set statement system_versioning_asof=@ts_0 for
+select * from emp e, dept d
+where d.dept_id = 10
+ and d.dept_id = e.dept_id;
+
+set statement system_versioning_asof=@ts_1 for
+select * from emp e, dept d
+where d.dept_id = 10
+ and d.dept_id = e.dept_id;
+
+set statement system_versioning_asof=@ts_2 for
+select * from emp e, dept d
+where d.dept_id = 10
+ and d.dept_id = e.dept_id;
+
+set statement system_versioning_asof=@ts_3 for
+select * from emp e, dept d
+where d.dept_id = 10
+ and d.dept_id = e.dept_id;
+
+drop table emp, dept;
diff --git a/mysql-test/suite/versioning/t/sysvars.test b/mysql-test/suite/versioning/t/sysvars.test
new file mode 100644
index 00000000000..08b520e959e
--- /dev/null
+++ b/mysql-test/suite/versioning/t/sysvars.test
@@ -0,0 +1,87 @@
+create table t (a int) with system versioning;
+insert into t values (1);
+update t set a= 2;
+
+show global variables like 'system_versioning_asof';
+show variables like 'system_versioning_asof';
+select * from t;
+
+set system_versioning_asof= '2031-1-1 0:0:0';
+show variables like 'system_versioning_asof';
+select * from t;
+
+set system_versioning_asof= '2011-1-1 0:0:0';
+show variables like 'system_versioning_asof';
+select * from t;
+
+# global
+--error ER_WRONG_VALUE_FOR_VAR
+set global system_versioning_asof= 'alley';
+--error ER_WRONG_VALUE_FOR_VAR
+set global system_versioning_asof= null;
+--error ER_WRONG_TYPE_FOR_VAR
+set global system_versioning_asof= 1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global system_versioning_asof= 1.1;
+
+# session
+--error ER_WRONG_VALUE_FOR_VAR
+set system_versioning_asof= 'alley';
+--error ER_WRONG_VALUE_FOR_VAR
+set system_versioning_asof= null;
+--error ER_WRONG_TYPE_FOR_VAR
+set system_versioning_asof= 1;
+--error ER_WRONG_TYPE_FOR_VAR
+set system_versioning_asof= 1.1;
+
+--echo # GLOBAL @@system_versioning_asof
+set global system_versioning_asof= '1911-11-11 11:11:11.1111119';
+show global variables like 'system_versioning_asof';
+
+set global system_versioning_asof= '1900-01-01 00:00:00';
+show global variables like 'system_versioning_asof';
+
+set global system_versioning_asof= timestamp'1911-11-11 11:11:11.1111119';
+show global variables like 'system_versioning_asof';
+
+set @ts= timestamp'1900-01-01 00:00:00';
+set global system_versioning_asof= @ts;
+show global variables like 'system_versioning_asof';
+
+set global system_versioning_asof= default;
+select @@global.system_versioning_asof;
+
+--echo # SESSION @@system_versioning_asof
+set system_versioning_asof= '1911-11-11 11:11:11.1111119';
+show variables like 'system_versioning_asof';
+
+set system_versioning_asof= '1900-01-01 00:00:00';
+show variables like 'system_versioning_asof';
+
+set system_versioning_asof= timestamp'1911-11-11 11:11:11.1111119';
+show variables like 'system_versioning_asof';
+
+set @ts= timestamp'1900-01-01 00:00:00';
+set system_versioning_asof= @ts;
+show variables like 'system_versioning_asof';
+
+--echo # DEFAULT: value is copied from GLOBAL to SESSION
+set global system_versioning_asof= timestamp'1911-11-11 11:11:11.111111';
+set system_versioning_asof= '1900-01-01 00:00:00';
+select @@global.system_versioning_asof != @@system_versioning_asof as different;
+set system_versioning_asof= default;
+select @@global.system_versioning_asof = @@system_versioning_asof as equal;
+
+set global system_versioning_asof= DEFAULT;
+set system_versioning_asof= DEFAULT;
+select @@global.system_versioning_asof, @@system_versioning_asof;
+
+select * from t for system_time all;
+
+select * from t;
+select * from t for system_time as of timestamp current_timestamp(6);
+select * from t for system_time all;
+select * from t for system_time from '0-0-0' to current_timestamp(6);
+select * from t for system_time between '0-0-0' and current_timestamp(6);
+
+drop table t;
diff --git a/mysql-test/suite/versioning/t/truncate.opt b/mysql-test/suite/versioning/t/truncate.opt
new file mode 100644
index 00000000000..b0c5b9c8188
--- /dev/null
+++ b/mysql-test/suite/versioning/t/truncate.opt
@@ -0,0 +1 @@
+--partition
diff --git a/mysql-test/suite/versioning/t/truncate.test b/mysql-test/suite/versioning/t/truncate.test
new file mode 100644
index 00000000000..0f9e7052511
--- /dev/null
+++ b/mysql-test/suite/versioning/t/truncate.test
@@ -0,0 +1,72 @@
+--source suite/versioning/engines.inc
+
+create table t (a int);
+--error ER_VERS_NOT_VERSIONED
+delete history from t before system_time now();
+
+# TRUNCATE is not DELETE and trigger must not be called.
+create or replace table t (a int) with system versioning;
+insert into t values (1);
+update t set a=2;
+set @test = 'correct';
+create trigger trg_before before delete on t for each row set @test = 'incorrect';
+create trigger trg_after after delete on t for each row set @test = 'incorrect';
+delete history from t;
+select @test from t;
+drop table t;
+
+create table t (a int) with system versioning;
+insert into t values (1), (2);
+update t set a=11 where a=1;
+--real_sleep 0.01
+set @ts1=now(6);
+--real_sleep 0.01
+update t set a=22 where a=2;
+select * from t for system_time all;
+delete history from t before system_time timestamp @ts1;
+select * from t for system_time all;
+prepare stmt from 'delete history from t';
+execute stmt; drop prepare stmt;
+select * from t for system_time all;
+delete from t;
+
+delimiter ~~;
+create or replace procedure truncate_sp()
+begin
+ delete history from t before system_time timestamp now(6);
+end~~
+delimiter ;~~
+call truncate_sp;
+select * from t for system_time all;
+
+drop procedure truncate_sp;
+
+--echo ### Issue #399, truncate partitioned table is now unimplemented
+
+create or replace table t (a int)
+with system versioning
+engine myisam
+partition by system_time (
+ partition p0 history,
+ partition pn current);
+
+--error ER_NOT_ALLOWED_COMMAND
+delete history from t;
+
+create or replace table t (i int) with system versioning;
+delete history from t;
+create or replace view v as select * from t;
+--error ER_VERS_TRUNCATE_VIEW
+delete history from v;
+
+create or replace table t (i int);
+--error ER_VERS_NOT_VERSIONED
+delete history from t;
+create or replace view v as select * from t;
+--error ER_VERS_TRUNCATE_VIEW
+delete history from v;
+--error ER_VERS_NOT_VERSIONED
+prepare stmt from 'delete history from t';
+
+drop table t;
+drop view v;
diff --git a/mysql-test/suite/versioning/t/truncate_privilege.test b/mysql-test/suite/versioning/t/truncate_privilege.test
new file mode 100644
index 00000000000..dcdad59039a
--- /dev/null
+++ b/mysql-test/suite/versioning/t/truncate_privilege.test
@@ -0,0 +1,41 @@
+# Can't test with embedded server
+-- source include/not_embedded.inc
+
+--source include/have_innodb.inc
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+connect (root,localhost,root,,test);
+connection root;
+
+--disable_warnings
+create database mysqltest;
+--enable_warnings
+
+create user mysqltest_1@localhost;
+connect (user1,localhost,mysqltest_1,,test);
+connection user1;
+
+connection root;
+create table mysqltest.t (a int) with system versioning;
+
+connection user1;
+show grants;
+--error ER_TABLEACCESS_DENIED_ERROR
+delete history from mysqltest.t before system_time now();
+
+connection root;
+grant delete history on mysqltest.* to mysqltest_1@localhost;
+grant delete history on mysqltest.t to mysqltest_1@localhost;
+
+connection user1;
+show grants;
+delete history from mysqltest.t before system_time now();
+
+connection root;
+grant all on *.* to mysqltest_1@localhost;
+show grants for mysqltest_1@localhost;
+
+drop user mysqltest_1@localhost;
+drop database mysqltest;
diff --git a/mysql-test/suite/versioning/t/trx_id.test b/mysql-test/suite/versioning/t/trx_id.test
new file mode 100644
index 00000000000..edd44822df6
--- /dev/null
+++ b/mysql-test/suite/versioning/t/trx_id.test
@@ -0,0 +1,75 @@
+-- source include/have_innodb.inc
+-- source include/not_embedded.inc
+
+create or replace table t1 (
+ x int,
+ sys_trx_start bigint(20) unsigned as row start invisible,
+ sys_trx_end bigint(20) unsigned as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end)
+) with system versioning engine innodb;
+
+insert into t1 (x) values (1);
+
+--echo # ALTER ADD SYSTEM VERSIONING should write to mysql.transaction_registry
+create function check_result (cond boolean)
+ returns char(50) deterministic
+ return if(cond = 1, '[CORRECT]', '[INCORRECT]');
+
+set @@system_versioning_alter_history=keep;
+
+create or replace table t1 (x int) engine innodb;
+insert into t1 values (1);
+alter table t1
+ add column s bigint unsigned as row start,
+ add column e bigint unsigned as row end,
+ add period for system_time(s, e),
+ add system versioning,
+ algorithm=inplace;
+select s from t1 into @trx_start;
+select check_result(count(*) = 1) from mysql.transaction_registry where transaction_id = @trx_start;
+
+create or replace table t1 (x int) engine innodb;
+select count(*) from mysql.transaction_registry into @tmp;
+alter table t1
+ add column s bigint unsigned as row start,
+ add column e bigint unsigned as row end,
+ add period for system_time(s, e),
+ add system versioning,
+ algorithm=inplace;
+select check_result(count(*) = @tmp) from mysql.transaction_registry;
+
+create or replace table t1 (x int) engine innodb;
+insert into t1 values (1);
+alter table t1
+ add column s bigint unsigned as row start,
+ add column e bigint unsigned as row end,
+ add period for system_time(s, e),
+ add system versioning,
+ algorithm=copy;
+select s from t1 into @trx_start;
+select check_result(count(*) = 1) from mysql.transaction_registry where transaction_id = @trx_start;
+
+create or replace table t1 (x int) engine innodb;
+select count(*) from mysql.transaction_registry into @tmp;
+alter table t1
+ add column s bigint unsigned as row start,
+ add column e bigint unsigned as row end,
+ add period for system_time(s, e),
+ add system versioning,
+ algorithm=copy;
+# With MDEV-14511 the transaction will be registered even for empty tables.
+select check_result(count(*) = @tmp + 1) from mysql.transaction_registry;
+
+--echo # TRX_ID to TIMESTAMP versioning switch
+create or replace table t1 (
+ x int,
+ sys_start bigint unsigned as row start invisible,
+ sys_end bigint unsigned as row end invisible,
+ period for system_time (sys_start, sys_end)
+) engine innodb with system versioning;
+insert into t1 values (1);
+alter table t1 drop column sys_start, drop column sys_end;
+select row_end = 18446744073709551615 as transaction_based from t1 for system_time all;
+
+drop table t1;
+drop function check_result;
diff --git a/mysql-test/suite/versioning/t/update.test b/mysql-test/suite/versioning/t/update.test
new file mode 100644
index 00000000000..60f20705276
--- /dev/null
+++ b/mysql-test/suite/versioning/t/update.test
@@ -0,0 +1,288 @@
+-- source suite/versioning/common.inc
+
+delimiter ~~;
+create procedure test_01(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('
+ create table t1(
+ x int unsigned,
+ y int unsigned,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end))
+ with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ insert into t1(x, y) values
+ (1, 1000),
+ (2, 2000),
+ (3, 3000),
+ (4, 4000),
+ (5, 5000),
+ (6, 6000),
+ (7, 7000),
+ (8, 8000),
+ (9, 9000);
+ select x, y from t1;
+ update t1 set y = y + 1 where x > 7;
+ select x, y from t1;
+ select x, y from t1 for system_time
+ between timestamp '0000-0-0 0:0:0'
+ and timestamp '2038-01-19 04:14:07';
+ drop table t1;
+end~~
+
+create procedure test_02(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('
+ create table t1 (
+ id bigint primary key,
+ x int,
+ y int without system versioning,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end))
+ with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ insert into t1 values(1, 1, 1);
+ set @ins_t= now(6);
+ select sys_trx_start into @tmp1 from t1;
+ update t1 set x= 11, y= 11 where id = 1;
+ select @tmp1 < sys_trx_start as A1, x, y from t1;
+
+ select sys_trx_start into @tmp1 from t1;
+ update t1 set y= 1 where id = 1;
+ select @tmp1 = sys_trx_start as A2, x from t1;
+
+ drop table t1;
+end~~
+
+create procedure test_03(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('
+ create table t1 (
+ x int,
+ y int,
+ sys_trx_start bigint unsigned as row start invisible,
+ sys_trx_end bigint unsigned as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end)
+ ) with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+
+ insert into t1 (x, y) values (1, 1), (2, 1), (3, 1), (4, 1), (5, 1);
+
+ start transaction;
+ update t1 set y= y + 1 where x = 3;
+ update t1 set y= y + 1 where x = 2;
+ update t1 set y= y + 1 where x = 3;
+ update t1 set y= y + 1 where x > 3;
+ update t1 set y= y + 1 where x > 4;
+ commit;
+
+ select x, y, sys_trx_end = 18446744073709551615 as current from t1 for system_time all;
+
+ drop table t1;
+end~~
+
+create procedure test_04(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('
+ create table t1 (
+ id int primary key auto_increment,
+ x int,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end))
+ with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+
+ set @t0= now(6);
+ insert into t1 (x) values (1);
+ set @t1= now(6);
+ update t1 set x= 2 where id = 1;
+ set @t2= now(6);
+ update t1 set x= 3 where id = 1;
+
+ select x from t1 for system_time as of timestamp @t0;
+ select x from t1 for system_time as of timestamp @t1;
+ select x from t1 for system_time as of timestamp @t2;
+ select x from t1 for system_time as of timestamp now(6);
+
+ drop table t1;
+end~~
+
+create procedure test_05(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('
+ create table t1(
+ x int unsigned,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ y int unsigned,
+ period for system_time (sys_trx_start, sys_trx_end),
+ primary key(x, y))
+ with system versioning
+ engine ', engine);
+ prepare stmt from @str; execute stmt; drop prepare stmt;
+ insert into t1(x, y) values
+ (1, 1000),
+ (3, 3000),
+ (4, 4000),
+ (5, 5000);
+ insert into t1(x, y) values(3, 3000) on duplicate key update y = y+1;
+ insert into t1(x, y) values(4, 4444) on duplicate key update y = y+1;
+ select x, y from t1 for system_time all;
+ select x, y from t1;
+ drop table t1;
+end~~
+
+create procedure test_06(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('(
+ x int unsigned,
+ y int unsigned,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end))
+ with system versioning
+ engine ', engine);
+ set @str2= concat('create table t1', @str);
+ prepare stmt from @str2; execute stmt; drop prepare stmt;
+ set @str2= concat('create table t2', @str);
+ prepare stmt from @str2; execute stmt; drop prepare stmt;
+ insert into t1(x, y) values
+ (1, 1000),
+ (2, 2000),
+ (3, 3000),
+ (4, 4000),
+ (5, 5000),
+ (6, 6000),
+ (7, 7000),
+ (8, 8000),
+ (9, 9000);
+ insert into t2(x, y) values
+ (1, 1010),
+ (2, 2010),
+ (3, 3010),
+ (4, 4010),
+ (5, 5010),
+ (6, 6010),
+ (7, 7010),
+ (8, 8010),
+ (9, 9010);
+ update t1, t2 set t1.y = t1.x + t1.y, t2.y = t2.x + t2.y where t1.x > 7 and t2.x < 7;
+ select x, y from t1 for system_time between timestamp '0-0-0 0:0:0' and timestamp '9999-1-1 0:0:0';
+ select x, y from t1;
+ select x, y from t2 for system_time between timestamp '0-0-0 0:0:0' and timestamp '9999-1-1 0:0:0';
+ select x, y from t2;
+ drop table t1;
+ drop table t2;
+end~~
+
+create procedure test_07(
+ sys_type varchar(255),
+ engine varchar(255),
+ fields varchar(255))
+begin
+ set @str= concat('(
+ id bigint primary key without system versioning,
+ name varchar(128),
+ salary bigint without system versioning,
+ sys_trx_start ', sys_type, ' as row start invisible,
+ sys_trx_end ', sys_type, ' as row end invisible,
+ period for system_time (sys_trx_start, sys_trx_end))
+ with system versioning
+ engine ', engine);
+
+ set @str2= concat('create table t1', @str);
+ prepare stmt from @str2; execute stmt; drop prepare stmt;
+ set @str2= concat('create table t2', @str);
+ prepare stmt from @str2; execute stmt; drop prepare stmt;
+
+ insert into t1 values (1, "Jeremy", 3000);
+ insert into t2 values (1, "Jeremy", 4000);
+
+ select sys_trx_start into @tmp1 from t1;
+ select sys_trx_start into @tmp2 from t2;
+ update t1, t2 set t1.name= "Jerry", t2.name= "Jerry" where t1.id = t2.id and t1.name = "Jeremy";
+ select @tmp1 < sys_trx_start as A1, name from t1;
+ select @tmp2 < sys_trx_start as A2, name from t2;
+
+ select sys_trx_start into @tmp1 from t1;
+ select sys_trx_start into @tmp2 from t2;
+ update t1, t2 set t1.salary= 2500, t2.salary= 2500 where t1.id = t2.id and t1.name = "Jerry";
+ select @tmp1 = sys_trx_start as B1, salary from t1;
+ select @tmp2 = sys_trx_start as B2, salary from t2;
+
+ drop table t1;
+ drop table t2;
+end~~
+delimiter ;~~
+
+call test_01('timestamp(6)', 'myisam', 'sys_trx_end');
+call test_01('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call test_01('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call verify_vtq;
+
+call test_02('timestamp(6)', 'myisam', 'sys_trx_end');
+call test_02('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call test_02('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call verify_vtq;
+
+--echo # Multiple UPDATE of same rows in single transaction create historical
+--echo # rows only once (applicable to transaction-based only).
+call test_03('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call verify_vtq;
+
+call test_04('timestamp(6)', 'myisam', 'sys_trx_end');
+call test_04('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call test_04('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call verify_vtq;
+
+call test_05('timestamp(6)', 'myisam', 'sys_trx_end');
+call test_05('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call test_05('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call verify_vtq;
+
+call test_06('timestamp(6)', 'myisam', 'sys_trx_end');
+call test_06('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call test_06('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call verify_vtq;
+
+--echo # Optimized fields
+call test_07('timestamp(6)', 'myisam', 'sys_trx_end');
+call test_07('timestamp(6)', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call test_07('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_trx_end)');
+call verify_vtq;
+
+--echo ### Issue #365, bug 7 (duplicate of historical row)
+create or replace table t1 (a int primary key, b int)
+with system versioning engine myisam;
+insert into t1 (a) values (1);
+--replace_regex /'1-[- .\d:]+'/'1-YYYY-MM-DD hh:mm:ss.uuuuuu'/
+--error ER_DUP_ENTRY
+replace t1 values (1,2),(1,3),(2,4);
+
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/t/view.test b/mysql-test/suite/versioning/t/view.test
new file mode 100644
index 00000000000..a83820a0419
--- /dev/null
+++ b/mysql-test/suite/versioning/t/view.test
@@ -0,0 +1,116 @@
+--source suite/versioning/engines.inc
+--source suite/versioning/common.inc
+
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1);
+
+select now(6) into @t1;
+update t1 set x= 2;
+
+select now(6) into @t2;
+delete from t1;
+
+set @vt1= concat("create or replace view vt1 as select * from t1 for system_time as of timestamp '", @t1, "'");
+prepare stmt from @vt1; execute stmt; drop prepare stmt;
+
+set @vt2= concat("create or replace view vt2 as select *, row_end from t1 for system_time as of timestamp '", @t2, "'");
+prepare stmt from @vt2; execute stmt; drop prepare stmt;
+
+select * from t1;
+
+create or replace view vt1 as select * from t1;
+--replace_result 18446744073709551615 MAX_RESULT "TIMESTAMP'2038-01-19 03:14:07.999999'" MAX_RESULT
+show create view vt1;
+
+drop view vt1;
+drop view vt2;
+
+create or replace view vt1 as select * from t1 for system_time all;
+select * from vt1;
+prepare stmt from 'select * from vt1'; execute stmt; drop prepare stmt;
+
+set @str= concat('create or replace view vt1 as
+select * from t1 for system_time as of timestamp "', @t1, '"');
+prepare stmt from @str; execute stmt; drop prepare stmt;
+select * from t1 for system_time as of timestamp @t1;
+select * from vt1;
+
+insert into vt1 values (3);
+select * from t1;
+select * from vt1;
+
+create or replace table t1 (x int) with system versioning;
+insert into t1 values (1), (2);
+set @t1=now(6);
+delete from t1 where x=2;
+set @t2=now(6);
+delete from t1 where x=1;
+set @t3=now(6);
+
+set @tmp= concat("create or replace view vt1 as select * from t1 for system_time as of timestamp '", @t1, "'");
+prepare stmt from @tmp; execute stmt; drop prepare stmt;
+
+select * from vt1;
+
+--echo # VIEW with parameters [#151]
+create or replace table t1 (x int) with system versioning;
+create or replace view vt1(c) as select x from t1;
+--replace_result 18446744073709551615 MAX_RESULT "TIMESTAMP'2038-01-19 03:14:07.999999'" MAX_RESULT
+show create view vt1;
+
+--echo # VIEW over JOIN of versioned tables [#153]
+create or replace table t1 (a int) with system versioning;
+create or replace table t2 (b int) with system versioning;
+insert into t1 values (1);
+insert into t2 values (2);
+create or replace view vt12 as select * from t1 cross join t2;
+select * from vt12;
+create or replace view vt12 as select * from t1 for system_time as of timestamp '0-0-0' cross join t2;
+select * from vt12;
+
+--echo # VIEW improvements [#183]
+create or replace table t3 (x int);
+create or replace view vt1 as select * from t1, t2, t3;
+--replace_result 18446744073709551615 MAX_RESULT "TIMESTAMP'2038-01-19 03:14:07.999999'" MAX_RESULT
+show create view vt1;
+create or replace view vt1 as select * from t3, t2, t1;
+--replace_result 18446744073709551615 MAX_RESULT "TIMESTAMP'2038-01-19 03:14:07.999999'" MAX_RESULT
+show create view vt1;
+create or replace view vt1 as select a, t2.row_end as endo from t3, t1, t2;
+--replace_result 18446744073709551615 MAX_RESULT "TIMESTAMP'2038-01-19 03:14:07.999999'" MAX_RESULT
+show create view vt1;
+
+--echo # VIEW over UNION [#269]
+create or replace view vt1 as select * from t1 union select * from t1;
+select * from vt1;
+
+--echo # VIEW over UNION with non-versioned [#393]
+create or replace table t2 (a int);
+create or replace view vt1 as select * from t1 union select * from t2;
+select * from vt1;
+
+--echo # MDEV-14689 crash on second PS execute
+create or replace table t1 (a int);
+create or replace view v1 as select * from t1;
+create or replace table t2 (b int) with system versioning;
+prepare stmt from 'select a from v1 inner join t2 group by a order by a';
+execute stmt;
+execute stmt;
+drop database test;
+create database test;
+use test;
+
+#
+# MDEV-15146 SQLError[4122]: View is not system versioned
+#
+
+create table t1 (a int) with system versioning;
+insert t1 values (1),(2);
+set @a=now(6);
+create view v1 as select * from t1;
+delete from t1;
+select * from v1;
+select * from v1 for system_time as of @a;
+show create view v1;
+drop view v1;
+drop table t1;
diff --git a/mysql-test/suite/versioning/t/vtmd.opt b/mysql-test/suite/versioning/t/vtmd.opt
new file mode 100644
index 00000000000..3596fc4d3bd
--- /dev/null
+++ b/mysql-test/suite/versioning/t/vtmd.opt
@@ -0,0 +1 @@
+--innodb --default-storage-engine=innodb
diff --git a/mysql-test/suite/versioning/t/vtmd.test b/mysql-test/suite/versioning/t/vtmd.test
new file mode 100644
index 00000000000..56bdb3d2546
--- /dev/null
+++ b/mysql-test/suite/versioning/t/vtmd.test
@@ -0,0 +1,204 @@
+-- source include/have_innodb.inc
+delimiter ~~;
+create or replace procedure drop_archives (in vtmd_name varchar(64))
+begin
+ declare archive_name varchar(64);
+ declare cur_done bool default false;
+ declare cur cursor for
+ select cur_tmp.archive_name from cur_tmp;
+ declare continue handler for not found set cur_done = true;
+
+ set @tmp= concat('
+ create or replace temporary table
+ cur_tmp as
+ select vtmd.archive_name from ', vtmd_name, '
+ for system_time all as vtmd
+ where vtmd.archive_name is not null
+ group by vtmd.archive_name');
+ prepare stmt from @tmp; execute stmt; drop prepare stmt;
+
+ open cur;
+ fetch_loop: loop
+ fetch cur into archive_name;
+ if cur_done then
+ leave fetch_loop;
+ end if;
+ set @tmp= concat('drop table ', archive_name);
+ prepare stmt from @tmp; execute stmt; drop prepare stmt;
+ end loop;
+
+ drop table cur_tmp;
+end~~
+delimiter ;~~
+
+delimiter ~~;
+create or replace procedure check_vtmd (in vtmd_name varchar(64))
+begin
+ set @tmp= concat('
+ create or replace temporary table
+ tmp_vtmd with system versioning as
+ select * from ', vtmd_name, '
+ for system_time all as vtmd');
+ prepare stmt from @tmp; execute stmt; drop prepare stmt;
+
+ set @inf= 0xFFFFFFFFFFFFFFFF + 0;
+ set @start= null;
+ select start from tmp_vtmd for system_time all order by start limit 1 into @start;
+ select @start > 0 and @start < @inf;
+ select
+ start >= @start as A_start,
+ (@start:= end) and end = @inf as B_end,
+ name,
+ substr(archive_name, 1, instr(archive_name, '_')) as C_archive_name
+ from tmp_vtmd for system_time all;
+
+ drop table tmp_vtmd;
+end~~
+delimiter ;~~
+
+delimiter ~~;
+create or replace procedure show_tables()
+begin
+ show tables;
+ select table_name, table_schema from information_schema.tables
+ where table_schema not in ('mysql', 'performance_schema', 'information_schema', 'mtr')
+ order by table_name;
+end~~
+delimiter ;~~
+
+# create
+set versioning_alter_history= keep;
+create table t0 (z int) with system versioning;
+show tables;
+set versioning_alter_history= survive;
+create or replace table t0 (y int) with system versioning;
+show tables;
+show create table t0_vtmd;
+call check_vtmd('t0_vtmd');
+
+set versioning_alter_history= keep;
+drop table t0;
+set versioning_alter_history= survive;
+--error ER_VERS_VTMD_ERROR
+create table t0 (x int) with system versioning;
+
+drop table t0_vtmd;
+create table t0 (y int) with system versioning;
+create or replace table t0 (x int) with system versioning;
+
+# alter
+insert into t0 values (1);
+set @t0= now(6);
+alter table t0 add column (y int);
+select * from t0 for system_time as of @t0;
+select * from t0;
+call check_vtmd('t0_vtmd');
+
+call drop_archives('t0_vtmd');
+drop table t0_vtmd;
+alter table t0 drop column y;
+call check_vtmd('t0_vtmd');
+
+call drop_archives('t0_vtmd');
+set versioning_alter_history= keep;
+drop tables t0, t0_vtmd;
+set versioning_alter_history= survive;
+
+# rename
+set versioning_alter_history= keep;
+create or replace table x0 (x int) with system versioning;
+set versioning_alter_history= survive;
+rename table x0 to d0;
+show tables;
+
+set versioning_alter_history= keep;
+drop table d0;
+set versioning_alter_history= survive;
+create or replace table x0 (x int) with system versioning;
+rename table x0 to d0;
+show tables;
+call check_vtmd('d0_vtmd');
+
+set versioning_alter_history= keep;
+drop table d0;
+set versioning_alter_history= survive;
+create or replace table x0 (x int) with system versioning;
+
+--error ER_VERS_VTMD_ERROR
+rename table x0 to d0;
+show tables;
+
+drop table x0_vtmd;
+rename table x0 to d0;
+show tables;
+
+rename table d0 to duck;
+rename table duck to bay;
+rename table bay to sheer;
+rename table sheer to t0;
+call check_vtmd('t0_vtmd');
+
+alter table t0 add column (y int);
+call check_vtmd('t0_vtmd');
+
+# rename to different schema
+alter table t0 add column (z int);
+alter table t0 drop column y;
+alter table t0 drop column z;
+
+create database db0;
+rename table t0 to db0.t0;
+show tables;
+use db0;
+show tables;
+call test.check_vtmd('db0.t0_vtmd');
+
+create database db1;
+rename table t0 to db1.other_name;
+show tables;
+use db1;
+show tables;
+call test.check_vtmd('db1.other_name_vtmd');
+
+# alter rename
+alter table other_name rename to t1;
+call test.check_vtmd('db1.t1_vtmd');
+
+# alter rename and modify to different schema
+alter table t1 rename to test.t2, add column (y int);
+use test;
+show tables;
+call check_vtmd('t2_vtmd');
+
+create or replace table t3 (x int) with system versioning;
+alter table t3 change x x bigint;
+alter table t3 change x x bigint after sys_trx_start;
+call check_vtmd('t3_vtmd');
+
+# hide archive tables
+set versioning_hide= auto;
+call show_tables();
+
+set versioning_hide= implicit;
+call show_tables();
+
+set versioning_hide= full;
+call show_tables();
+
+set versioning_hide= never;
+--replace_regex /\d{8}_\d{6}_\d{6}/TIMESTAMP_SUFFIX/
+call show_tables();
+
+# wrong VTMD handling
+set versioning_hide= auto;
+create or replace table u0_vtmd (x int) with system versioning;
+show tables;
+
+set versioning_alter_history= survive;
+create or replace table t (x int) with system versioning;
+select * from t for system_time all;
+
+drop database db0;
+drop database db1;
+drop database test;
+create database test;
diff --git a/mysql-test/suite/versioning/t/vtmd_show.opt b/mysql-test/suite/versioning/t/vtmd_show.opt
new file mode 100644
index 00000000000..627becdbfb5
--- /dev/null
+++ b/mysql-test/suite/versioning/t/vtmd_show.opt
@@ -0,0 +1 @@
+--innodb
diff --git a/mysql-test/suite/versioning/t/vtmd_show.test b/mysql-test/suite/versioning/t/vtmd_show.test
new file mode 100644
index 00000000000..4397198c839
--- /dev/null
+++ b/mysql-test/suite/versioning/t/vtmd_show.test
@@ -0,0 +1,90 @@
+delimiter ~~;
+create or replace procedure drop_archives (in vtmd_name varchar(64))
+begin
+ declare archive_name varchar(64);
+ declare cur_done bool default false;
+ declare cur cursor for
+ select cur_tmp.archive_name from cur_tmp;
+ declare continue handler for not found set cur_done = true;
+
+ set @tmp= concat('
+ create or replace temporary table
+ cur_tmp as
+ select vtmd.archive_name from ', vtmd_name, '
+ for system_time all as vtmd
+ where vtmd.archive_name is not null
+ group by vtmd.archive_name');
+ prepare stmt from @tmp; execute stmt; drop prepare stmt;
+
+ open cur;
+ fetch_loop: loop
+ fetch cur into archive_name;
+ if cur_done then
+ leave fetch_loop;
+ end if;
+ set @tmp= concat('drop table ', archive_name);
+ prepare stmt from @tmp; execute stmt; drop prepare stmt;
+ end loop;
+
+ drop table cur_tmp;
+end~~
+delimiter ;~~
+
+delimiter ~~;
+create procedure test_01(in engine varchar(64))
+begin
+ set @tmp = concat('create table t (a int) with system versioning engine ', engine);
+ prepare stmt from @tmp; execute stmt; drop prepare stmt;
+
+ set @tm1 = now(6);
+ alter table t add column b int;
+
+ set @tm2 = now(6);
+ alter table t add column c int;
+
+ show create table t for system_time as of timestamp @tm1;
+ show create table t for system_time as of timestamp @tm2;
+ show create table t for system_time as of now;
+ show create table t for system_time as of timestamp now(6);
+ show create table t;
+
+ set @tm3 = now(6);
+ rename table t to tt;
+ show create table tt for system_time as of timestamp @tm3;
+
+ set @tm4 = now(6);
+ alter table tt add column d int;
+ show create table tt for system_time as of timestamp @tm3;
+ show create table tt for system_time as of timestamp @tm4;
+ show create table tt;
+
+ drop table tt;
+ call drop_archives('tt_vtmd');
+ drop table tt_vtmd;
+end~~
+delimiter ;~~
+
+create table t (a int) with system versioning;
+--error ER_VERS_VTMD_ERROR
+show create table t for system_time as of now;
+
+set versioning_alter_history=survive;
+
+create or replace table t (a int) with system versioning;
+--error ER_VERS_RANGE_PROHIBITED
+show create table t for system_time between timestamp @tm1 and timestamp @tm1;
+--error ER_VERS_RANGE_PROHIBITED
+show create table t for system_time from timestamp @tm1 to timestamp @tm1;
+--error ER_VERS_VTMD_ERROR
+show create table t for system_time as of timestamp '01-01-1990';
+--error ER_VERS_VTMD_ERROR
+show create table t for system_time as of timestamp '01-01-2020';
+drop table t;
+call drop_archives('t_vtmd');
+drop table t_vtmd;
+
+call test_01('myisam');
+call test_01('innodb');
+
+drop procedure test_01;
+drop procedure drop_archives;
diff --git a/mysql-test/suite/versioning/wait_system_clock.inc b/mysql-test/suite/versioning/wait_system_clock.inc
new file mode 100644
index 00000000000..21bbe7aea21
--- /dev/null
+++ b/mysql-test/suite/versioning/wait_system_clock.inc
@@ -0,0 +1,10 @@
+#
+# windows has a rather low-resolution system clock
+# wait until the event from the past will actually be in the past
+#
+if (`select @@version_compile_os in ("win32","win64","windows")`)
+{
+ let $_past=`select max(row_start) from t1`;
+ --let $wait_condition=select TIMESTAMP'$_past' < sysdate(6)
+ --source include/wait_condition.inc
+}
diff --git a/mysql-test/suite/wsrep/suite.pm b/mysql-test/suite/wsrep/suite.pm
index b6c5bf15ca1..03e23b8d7cb 100644
--- a/mysql-test/suite/wsrep/suite.pm
+++ b/mysql-test/suite/wsrep/suite.pm
@@ -9,8 +9,10 @@ return "Not run for embedded server" if $::opt_embedded_server;
return "WSREP is not compiled in" unless defined $::mysqld_variables{'wsrep-on'};
my ($provider) = grep { -f $_ } $ENV{WSREP_PROVIDER},
- "/usr/lib/galera/libgalera_smm.so",
- "/usr/lib64/galera/libgalera_smm.so";
+ "/usr/lib64/galera-3/libgalera_smm.so",
+ "/usr/lib64/galera/libgalera_smm.so",
+ "/usr/lib/galera-3/libgalera_smm.so",
+ "/usr/lib/galera/libgalera_smm.so";
return "No wsrep provider library" unless -f $provider;
diff --git a/mysql-test/t/alter_table.test b/mysql-test/t/alter_table.test
index 91c50c7aba3..7f692f36f4e 100644
--- a/mysql-test/t/alter_table.test
+++ b/mysql-test/t/alter_table.test
@@ -1882,6 +1882,16 @@ alter table t1 drop column a, drop index a;
show create table t1;
drop table t1;
+#
+# MDEV-14694 ALTER COLUMN IF EXISTS .. causes syntax error
+#
+
+create table t1 (i int);
+alter table t1 alter column if exists a set default 1;
+alter table t1 alter column if exists a drop default;
+show create table t1;
+drop table t1;
+
--echo #
--echo # MDEV-13508 Check that rename of columns changes defaults, virtual
--echo # columns and constraints
diff --git a/mysql-test/t/bootstrap.test b/mysql-test/t/bootstrap.test
index e8589fa9242..1ae9b13e050 100644
--- a/mysql-test/t/bootstrap.test
+++ b/mysql-test/t/bootstrap.test
@@ -7,7 +7,7 @@ drop table if exists t1;
# Add the datadir to the bootstrap command
let $MYSQLD_DATADIR= `select @@datadir`;
-let $MYSQLD_BOOTSTRAP_CMD= $MYSQLD_BOOTSTRAP_CMD --datadir=$MYSQLD_DATADIR --default-storage-engine=MyISAM --loose-skip-innodb;
+let $MYSQLD_BOOTSTRAP_CMD= $MYSQLD_BOOTSTRAP_CMD --datadir=$MYSQLD_DATADIR --default-storage-engine=MyISAM --loose-skip-innodb --plugin-maturity=unknown;
#
# Check that --bootstrap reads from stdin
#
diff --git a/mysql-test/t/column_compression.inc b/mysql-test/t/column_compression.inc
new file mode 100644
index 00000000000..89a96ef67ad
--- /dev/null
+++ b/mysql-test/t/column_compression.inc
@@ -0,0 +1,125 @@
+FLUSH STATUS;
+
+--error ER_COMPRESSED_COLUMN_USED_AS_KEY
+eval CREATE TABLE t1(a $typec, KEY(a(10)));
+
+eval CREATE TABLE t1(a $typec);
+--error ER_COMPRESSED_COLUMN_USED_AS_KEY
+ALTER TABLE t1 ADD KEY(a(10));
+SHOW CREATE TABLE t1;
+
+--echo # Make sure column was actually compressed
+INSERT INTO t1 VALUES(REPEAT('a', 1000));
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+
+--echo # Make sure ALTER TABLE rebuilds table
+eval ALTER TABLE t1 MODIFY COLUMN a $typeu;
+SHOW CREATE TABLE t1;
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+
+--echo # Rebuild back
+eval ALTER TABLE t1 MODIFY COLUMN a $typec;
+SHOW CREATE TABLE t1;
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+
+--echo # Make sure CREATE TABLE ... LIKE inherits compression
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+
+--echo # Make sure implicit CREATE TABLE ... SELECT inherits compression
+CREATE TABLE t2 SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DROP TABLE t2;
+
+--echo # Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
+eval CREATE TABLE t2(a $typeu) SELECT * FROM t1;
+SHOW CREATE TABLE t2;
+SELECT LEFT(a, 10), LENGTH(a) FROM t2;
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
+DROP TABLE t2;
+
+--echo # Make sure engine change works
+ALTER TABLE t1 ENGINE=InnoDB;
+SHOW CREATE TABLE t1;
+SELECT LEFT(a, 10), LENGTH(a) FROM t1;
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+
+--echo # Make sure online add column works (requires InnoDB)
+eval ALTER TABLE t1 ADD COLUMN b $typec DEFAULT "must be visible";
+SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+ALTER TABLE t1 DROP COLUMN b;
+
+ALTER TABLE t1 ENGINE=MyISAM;
+TRUNCATE TABLE t1;
+
+--echo # Make sure column_compression_zlib_level works
+SET column_compression_zlib_level= 1;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+TRUNCATE TABLE t1;
+
+SET column_compression_zlib_level= 9;
+INSERT INTO t1 VALUES(REPEAT('ab', 1000));
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+
+SET column_compression_zlib_level= DEFAULT;
+TRUNCATE TABLE t1;
+
+--echo # No compression, original data shorter than compressed
+INSERT INTO t1 VALUES('a');
+SELECT a, LENGTH(a) FROM t1;
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
+
+--echo # Coverage for store(double) and store(longlong)
+INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
+--echo # and for sort_string()
+SELECT * FROM t1 ORDER BY a;
+
+--echo # Coverage for val_real() and val_int()
+SELECT a+1 FROM t1 ORDER BY 1;
+SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
+
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
+--echo # Field* Field_varstring_compressed::new_key_field
+--echo #
+eval CREATE TABLE t1 (c1 $typec) ENGINE=MyISAM;
+INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
+
+eval CREATE TABLE t2 (c2 $typec) ENGINE=MyISAM; # Compression is optional
+INSERT IGNORE INTO t2 VALUES ('qux'),('abc'); # Optional
+
+SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
+
+# Cleanup
+DROP TABLE t1, t2;
+
+
+--echo #
+--echo # MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
+--echo # failed in Field_varstring_compressed::new_key_field
+--echo #
+eval CREATE TABLE t1 (c $typec) ENGINE=InnoDB;
+INSERT INTO t1 VALUES ('foo'),('bar');
+
+SELECT DISTINCT c FROM t1;
+
+# Cleanup
+DROP TABLE t1;
diff --git a/mysql-test/t/column_compression.test b/mysql-test/t/column_compression.test
new file mode 100644
index 00000000000..d3f848144b6
--- /dev/null
+++ b/mysql-test/t/column_compression.test
@@ -0,0 +1,81 @@
+--source include/have_innodb.inc
+--source include/have_csv.inc
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+
+SET column_compression_zlib_wrap=true;
+let $typec= BLOB COMPRESSED;
+let $typeu= BLOB;
+--source column_compression.inc
+
+let $typec= TEXT COMPRESSED;
+let $typeu= TEXT;
+--source column_compression.inc
+
+let $typec= VARBINARY(10000) COMPRESSED;
+let $typeu= VARBINARY(10000);
+--source column_compression.inc
+
+let $typec= VARCHAR(10000) COMPRESSED;
+let $typeu= VARCHAR(10000);
+--source column_compression.inc
+
+let $typec= TEXT CHARSET ucs2 COMPRESSED;
+let $typeu= TEXT;
+--source column_compression.inc
+
+SET column_compression_zlib_wrap=DEFAULT;
+let $typec= BLOB COMPRESSED;
+let $typeu= BLOB;
+--source column_compression.inc
+
+--error ER_WRONG_FIELD_SPEC
+CREATE TABLE t1(a CHAR(100) COMPRESSED);
+--error ER_WRONG_FIELD_SPEC
+CREATE TABLE t1(a INT COMPRESSED);
+--error ER_UNKNOWN_COMPRESSION_METHOD
+CREATE TABLE t1(a BLOB COMPRESSED=unknown);
+CREATE TABLE t1(a BLOB COMPRESSED COMPRESSED);
+DROP TABLE t1;
+CREATE TABLE t1(a INT);
+--error ER_WRONG_FIELD_SPEC
+ALTER TABLE t1 MODIFY a INT COMPRESSED;
+DROP TABLE t1;
+
+--echo # Test CSV
+CREATE TABLE t1(a BLOB NOT NULL COMPRESSED) ENGINE=CSV;
+INSERT INTO t1 VALUES(REPEAT('a', 110));
+SELECT LENGTH(a) FROM t1;
+ALTER TABLE t1 ENGINE=MyISAM;
+SELECT LENGTH(a) FROM t1;
+ALTER TABLE t1 ENGINE=CSV;
+SELECT LENGTH(a) FROM t1;
+SHOW CREATE TABLE t1;
+--cat_file $MYSQLD_DATADIR/test/t1.CSV
+DROP TABLE t1;
+
+--echo # Test fields that don't fit data
+CREATE TABLE t1(a VARCHAR(9) COMPRESSED);
+--error ER_DATA_TOO_LONG
+INSERT INTO t1 VALUES(REPEAT('a', 10));
+INSERT INTO t1 VALUES(REPEAT(' ', 10));
+SELECT a, LENGTH(a) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1(a TINYTEXT COMPRESSED);
+SET column_compression_threshold=300;
+--error ER_DATA_TOO_LONG
+INSERT INTO t1 VALUES(REPEAT('a', 255));
+INSERT INTO t1 VALUES(REPEAT(' ', 255));
+SET column_compression_threshold=DEFAULT;
+SELECT a, LENGTH(a) FROM t1;
+DROP TABLE t1;
+
+--echo # Corner case: VARCHAR(255) COMPRESSED must have 2 bytes pack length
+CREATE TABLE t1(a VARCHAR(255) COMPRESSED);
+SHOW CREATE TABLE t1;
+SET column_compression_threshold=300;
+INSERT INTO t1 VALUES(REPEAT('a', 255));
+SET column_compression_threshold=DEFAULT;
+SELECT a, LENGTH(a) FROM t1;
+DROP TABLE t1;
diff --git a/mysql-test/t/column_compression_parts.test b/mysql-test/t/column_compression_parts.test
new file mode 100644
index 00000000000..9a6f63d0cde
--- /dev/null
+++ b/mysql-test/t/column_compression_parts.test
@@ -0,0 +1,182 @@
+--source include/have_partition.inc
+
+--disable_warnings
+DROP TABLE IF EXISTS t1,t2,t3,t4;
+--enable_warnings
+FLUSH STATUS;
+
+echo ---------------------------------------by range------------------------------------------;
+
+CREATE TABLE t1 (i int, a VARCHAR(1000) COMPRESSED DEFAULT "AAA")
+ PARTITION BY RANGE COLUMNS (a)(
+ PARTITION p0 VALUES LESS THAN ('g') COMMENT "p0",
+ PARTITION p1 VALUES LESS THAN ('m'),
+ PARTITION p2 VALUES LESS THAN ('t'),
+ PARTITION p3 VALUES LESS THAN ('w'));
+
+ALTER TABLE t1 ADD PARTITION (PARTITION p4 VALUES LESS THAN (MAXVALUE));
+
+INSERT INTO t1 VALUES (1,REPEAT('a',100)),(2,REPEAT('v',200)),(3,REPEAT('r',300)),(4,NULL);
+INSERT INTO t1 VALUES (5,REPEAT('k',500)),(6,'April'),(7,7),(8,""),(9,"M"),(10,DEFAULT);
+
+ALTER TABLE t1 ANALYZE PARTITION p1;
+ALTER TABLE t1 CHECK PARTITION p2;
+
+SELECT i,SUBSTRING(a,1,10) FROM t1 PARTITION (p2) ORDER BY i;
+SELECT i,SUBSTRING(a,1,10) FROM t1 where length(a)>=300 ORDER BY i;
+SELECT i,SUBSTRING(a,1,10) FROM t1 where a like "%k" ORDER BY i;
+
+DELETE FROM t1 where a="";
+DELETE FROM t1 where a=(REPEAT('a',100));
+DELETE FROM t1 where a like "%v";
+
+SELECT i,SUBSTRING(a,1,10) FROM t1 ORDER BY i;
+SELECT i,SUBSTRING(a,1,10) FROM t1 where a not like "%k" ORDER BY i;
+SELECT i,SUBSTRING(a,1,10) FROM t1 where (a>'m') ORDER BY i;
+SELECT i,SUBSTRING(a,1,10) FROM t1 where (a between 'h' and 'z') and (i=9) ORDER BY i;
+
+EXPLAIN PARTITIONS SELECT i,SUBSTRING(a,1,10) FROM t1 where (a>'m');
+EXPLAIN PARTITIONS SELECT i,SUBSTRING(a,1,10) FROM t1 where (a<'w');
+
+ALTER TABLE t1 TRUNCATE PARTITION p2;
+ALTER TABLE t1 DROP PARTITION p0;
+SHOW CREATE TABLE t1;
+
+ALTER TABLE t1 MODIFY COLUMN a VARCHAR(1000);
+SHOW CREATE TABLE t1;
+
+DROP TABLE t1;
+
+echo ---------------------------------------------------------------------------------------------;
+
+CREATE TABLE t1 (a VARCHAR(1000) COMPRESSED NOT NULL, id INT)
+ PARTITION BY RANGE COLUMNS(id,a)(
+ PARTITION p0 VALUES LESS THAN (100,'sss'),
+ PARTITION p1 VALUES LESS THAN (MAXVALUE,MAXVALUE));
+
+INSERT INTO t1 VALUES (REPEAT('a',100), 23),(REPEAT('v',100),123),(REPEAT('z',100),24),(REPEAT('k',100),124);
+SELECT id,SUBSTRING(a,1,10) FROM t1 order by id;
+SELECT * from t1 partition (p0);
+SELECT * from t1 partition (p1);
+INSERT INTO t1 VALUES (REPEAT('a',100),101);
+SELECT * from t1 partition (p0);
+SELECT * from t1 partition (p1);
+ALTER TABLE t1 DROP PARTITION p1;
+SELECT id,SUBSTRING(a,1,10) FROM t1 WHERE id<50 order by id;
+--error ER_NO_PARTITION_FOR_GIVEN_VALUE
+INSERT INTO t1 VALUES (REPEAT('a',100),101);
+
+ALTER TABLE t1 ALTER COLUMN a SET DEFAULT 'qwerty';
+ALTER TABLE t1 ALTER COLUMN a DROP DEFAULT;
+
+ALTER TABLE t1 MODIFY COLUMN a VARCHAR(1000);
+ALTER TABLE t1 ALTER COLUMN a DROP DEFAULT;
+INSERT INTO t1 VALUES (REPEAT('b',100),11);
+--error ER_NO_DEFAULT_FOR_FIELD
+INSERT INTO t1 VALUES (default,10);
+
+ALTER TABLE t1 MODIFY COLUMN a VARCHAR(1000) COMPRESSED;
+SHOW CREATE TABLE t1;
+SELECT * from t1 ORDER BY id;
+
+DROP TABLE t1;
+
+echo ----------------------------1 partition--------------------------------------------------;
+
+CREATE TABLE t1 (a VARCHAR(1000) COMPRESSED DEFAULT "10-12-2010")
+ PARTITION BY RANGE COLUMNS (a) (partition p0 VALUES LESS THAN (MAXVALUE));
+INSERT INTO t1 VALUES (REPEAT('a',100)), (REPEAT('v',200)), (REPEAT('Z',300)),(NULL),(DEFAULT);
+INSERT INTO t1 VALUES (DEFAULT),(REPEAT('b',200)),(REPEAT('q',300)),(DEFAULT),("MAY");
+
+--sorted_result
+SELECT SUBSTRING(a,1,10) FROM t1;
+
+echo -----------------------------------------by key------------------------------------------;
+
+ALTER TABLE t1 PARTITION BY KEY(a) PARTITIONS 6;
+SHOW CREATE TABLE t1;
+UPDATE t1 SET a="NEW" where length(a)<20;
+--sorted_result
+SELECT SUBSTRING(a,1,10) FROM t1;
+
+CREATE TABLE t2 (a VARBINARY(1000) COMPRESSED)
+ PARTITION BY KEY(a) PARTITIONS 3;
+ALTER TABLE t2 PARTITION BY LINEAR KEY ALGORITHM=2 (a) PARTITIONS 32;
+
+INSERT INTO t2 VALUES (REPEAT('a',100)),(REPEAT('v',6)),(REPEAT('z',13)),(REPEAT('k',900));
+--sorted_result
+SELECT SUBSTRING(a,1,10) FROM t2;
+
+CREATE TABLE t3 ( a VARCHAR(1000) COMPRESSED DEFAULT NULL)
+ PARTITION BY LINEAR KEY(a) PARTITIONS 3;
+INSERT INTO t3 VALUES (REPEAT('a',100)),(REPEAT('v',100)),(NULL),(REPEAT('k',100)),(DEFAULT);
+--sorted_result
+SELECT SUBSTRING(a,1,10) FROM t3 where a<>NULL;
+
+CREATE TABLE t4 (a VARBINARY(1000) COMPRESSED NOT NULL DEFAULT 0 COMMENT "QQ")
+ PARTITION BY LINEAR KEY(a)
+ PARTITIONS 3;
+INSERT INTO t4 VALUES (REPEAT('a',100)),('0'),(DEFAULT),(DEFAULT),(REPEAT('v',100)),(REPEAT('k',100));
+--sorted_result
+SELECT SUBSTRING(a,1,10) FROM t4 where length(a)>3;
+
+DROP TABLE t1,t2,t3,t4;
+
+echo -----------------------------------subpartitions------------------------------------------;
+
+CREATE TABLE t1 (a VARCHAR(1000) COMPRESSED, id INT NOT NULL)
+ PARTITION BY RANGE(id)
+ SUBPARTITION BY KEY(a) SUBPARTITIONS 4
+ (PARTITION p0 VALUES LESS THAN (5),
+ PARTITION p1 VALUES LESS THAN (MAXVALUE));
+INSERT INTO t1 VALUES (REPEAT('a',100),23),(REPEAT('v',100),123),(REPEAT('z',100),24),(REPEAT('k',100),124);
+SELECT id,SUBSTRING(a,1,10) FROM t1 where a=(REPEAT('k',100)) order by id;
+DROP TABLE t1;
+
+echo -------------------------------------------------------------------------------------------;
+
+--error ER_BLOB_FIELD_IN_PART_FUNC_ERROR
+CREATE TABLE t1 (a BLOB COMPRESSED)
+ PARTITION BY KEY(a) partitions 30;
+
+CREATE TABLE t1 (a VARCHAR(200) COMPRESSED) PARTITION BY KEY(a) partitions 30;
+ALTER TABLE t1 COALESCE PARTITION 20;
+#ALTER TABLE t1 ADD PARTITION (PARTITION pm TABLESPACE = `innodb_file_per_table`); --mdev MDEV-13584
+ALTER TABLE t1 ADD PARTITION (PARTITION pm);
+CREATE TABLE t2 like t1;
+ALTER TABLE t2 REMOVE PARTITIONING;
+SHOW CREATE TABLE t1;
+SHOW CREATE TABLE t2;
+
+ALTER TABLE t1 EXCHANGE PARTITION pm WITH TABLE t2;
+DROP TABLE t1,t2;
+echo -------------------------------------------------------------------------------------------;
+
+CREATE TABLE t1 (a BLOB COMPRESSED default 5,i int);
+INSERT INTO t1 VALUES (REPEAT('a',100),1),(REPEAT('v',100),2),(REPEAT('z',100),3),(REPEAT('k',100),2),(2,2);
+
+--error ER_BLOB_FIELD_IN_PART_FUNC_ERROR
+ALTER TABLE t1 PARTITION BY KEY(a) partitions 3;
+
+ALTER TABLE t1 PARTITION BY HASH(i) PARTITIONS 8;
+--error ER_PARTITION_WRONG_VALUES_ERROR
+ALTER TABLE t1 REORGANIZE PARTITION p0 INTO (
+ PARTITION s0 VALUES LESS THAN (1960),
+ PARTITION s1 VALUES LESS THAN (1970)
+);
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 REMOVE PARTITIONING;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(500) COMPRESSED default 5,i int)
+ PARTITION BY RANGE COLUMNS(i)(
+ PARTITION p0 VALUES LESS THAN (10),
+ PARTITION p1 VALUES LESS THAN (100),
+ PARTITION p2 VALUES LESS THAN (1000));
+INSERT INTO t1 VALUES (REPEAT('a',100),1),("one",21),(REPEAT('3',100),34),(REPEAT('k',100),267),(2,278);
+
+ALTER TABLE t1 REORGANIZE PARTITION p2 INTO (PARTITION p22 VALUES LESS THAN (MAXVALUE));
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 REBUILD PARTITION p22;
+
+DROP TABLE t1; \ No newline at end of file
diff --git a/mysql-test/t/column_compression_rpl.test b/mysql-test/t/column_compression_rpl.test
new file mode 100644
index 00000000000..86c73a77dbd
--- /dev/null
+++ b/mysql-test/t/column_compression_rpl.test
@@ -0,0 +1,16 @@
+--source include/have_innodb.inc
+--source include/master-slave.inc
+
+--let $engine_type= myisam
+--let $engine_type2= innodb
+--source include/column_compression_rpl.inc
+
+--let $engine_type= innodb
+--let $engine_type2= innodb
+--source include/column_compression_rpl.inc
+
+--let $engine_type= myisam
+--let $engine_type2= myisam
+--source include/column_compression_rpl.inc
+
+--source include/rpl_end.inc
diff --git a/mysql-test/t/compound.test b/mysql-test/t/compound.test
index cabdf96e00e..94a6c18b2f5 100644
--- a/mysql-test/t/compound.test
+++ b/mysql-test/t/compound.test
@@ -106,7 +106,8 @@ select @a|
/**/ while (select count(*) from information_schema.tables where table_schema='test')
do
select concat('drop table ', table_name) into @a
- from information_schema.tables where table_schema='test' limit 1;
+ from information_schema.tables where table_schema='test'
+ order by table_name limit 1;
select @a as 'executing:';
prepare dt from @a;
execute dt;
diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test
index 4554be61928..af5c427852c 100644
--- a/mysql-test/t/create.test
+++ b/mysql-test/t/create.test
@@ -1017,6 +1017,7 @@ from имÑ_таблицы_в_кодировке_утф8_длиной_больш
# database, table, field, key, view
select * from имÑ_таблицы_в_кодировке_утф8_длиной_больше_чем_48;
+--sorted_result
select TABLE_NAME from information_schema.tables where
table_schema='test';
diff --git a/mysql-test/t/cte_recursive.test b/mysql-test/t/cte_recursive.test
index 1be645b92c0..c6391aabc41 100644
--- a/mysql-test/t/cte_recursive.test
+++ b/mysql-test/t/cte_recursive.test
@@ -2126,3 +2126,15 @@ DROP TABLE a_tbl;
--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
WITH RECURSIVE x AS (SELECT 1,2 UNION ALL SELECT 1 FROM x) SELECT * FROM x;
+
+--echo #
+--echo # MDEV-15162: Setting user variable in recursive CTE
+--echo #
+
+SET @c=1;
+
+WITH RECURSIVE cte AS
+ (SELECT 5
+ UNION
+ SELECT @c:=@c+1 FROM cte WHERE @c<3)
+SELECT * FROM cte;
diff --git a/mysql-test/t/ctype_utf8mb4_innodb-master.opt b/mysql-test/t/ctype_utf8mb4_innodb-master.opt
index 56d40323eae..96f0ce3f36c 100644
--- a/mysql-test/t/ctype_utf8mb4_innodb-master.opt
+++ b/mysql-test/t/ctype_utf8mb4_innodb-master.opt
@@ -1,2 +1 @@
--default-storage-engine=MyISAM
---loose-innodb-large-prefix=OFF
diff --git a/mysql-test/t/custom_aggregate_functions.test b/mysql-test/t/custom_aggregate_functions.test
new file mode 100644
index 00000000000..13eb3bed2af
--- /dev/null
+++ b/mysql-test/t/custom_aggregate_functions.test
@@ -0,0 +1,785 @@
+create table t2 (sal int(10));
+delimiter |;
+
+create aggregate function f1(x INT) returns int
+begin
+ declare continue handler for not found return 0;
+ loop
+ fetch group next row;
+ insert into t2 (sal) values (x);
+ end loop;
+end|
+
+delimiter ;|
+
+create table t1 (sal int(10),id int(10));
+INSERT INTO t1 (sal,id) VALUES (5000,1);
+INSERT INTO t1 (sal,id) VALUES (2000,1);
+INSERT INTO t1 (sal,id) VALUES (1000,1);
+select f1(sal) from t1 where id>= 1;
+select * from t2;
+drop table t2;
+drop function f1;
+
+delimiter |;
+--error ER_INVALID_AGGREGATE_FUNCTION
+create aggregate function f1(x INT) returns INT
+begin
+ insert into t1(sal) values (x);
+ return x;
+end|
+
+--error ER_NOT_AGGREGATE_FUNCTION
+create function f1(x INT) returns INT
+begin
+ set x=5;
+ fetch group next row;
+return x+1;
+end |
+
+create aggregate function f1(x INT) returns INT
+begin
+ declare continue handler for not found return x;
+ loop
+ fetch group next row;
+ end loop;
+end |
+delimiter ;|
+
+select f1(1);
+show create function f1;
+--error ER_PARSE_ERROR
+alter function f1 aggregate none;
+show create function f1;
+select f1(1);
+drop function f1;
+
+
+delimiter |;
+
+
+create aggregate function f2(i int) returns int
+begin
+ FEtCH GROUP NEXT ROW;
+ if i <= 0 then
+ return 0;
+ elseif i = 1 then
+ return (select count(*) from t1 where id = i);
+ else
+ return (select count(*) + f2( i - 1) from t1 where id = i);
+ end if;
+end|
+select f2(1)|
+# Since currently recursive functions are disallowed ER_SP_NO_RECURSION
+# error will be returned, once we will allow them error about
+# insufficient number of locked tables will be returned instead.
+--error ER_SP_NO_RECURSION
+select f2(2)|
+--error ER_SP_NO_RECURSION
+select f2(3)|
+drop function f2|
+
+create aggregate function f1(x int) returns int
+begin
+ declare mini int default 0;
+ declare continue handler for not found return mini;
+ loop
+ fetch group next row;
+ set mini= mini+x;
+ fetch group next row;
+ end loop;
+end|
+
+
+delimiter ;|
+
+select f1(10);
+select f1(sal) from t1;
+select f1(sal) from t1 where 1=0;
+drop function f1;
+delimiter |;
+
+
+#WITHOUT RETURN STATEMENT IN AGGREGATE FUNCTIONS
+--error 1320
+create aggregate function f1(x int) returns int
+begin
+ declare mini int default 0;
+ LOOP
+ FETCH GROUP NEXT ROW;
+ set mini = mini + x;
+ END LOOP;
+end|
+
+#without handler
+create aggregate function f1(x int) returns int
+begin
+ declare mini int default 0;
+ LOOP
+ FETCH GROUP NEXT ROW;
+ set mini = mini + x;
+ END LOOP;
+ return -1;
+end|
+
+--error 1329
+select f1(sal) from t1|
+drop function f1|
+
+#without loop
+create aggregate function f1(x int) returns int
+begin
+ declare mini int default 0;
+ declare continue handler for not found return mini;
+ FETCH GROUP NEXT ROW;
+ set mini = mini + x;
+end|
+
+--error 1321
+select f1(sal) from t1|
+drop function f1|
+
+
+create aggregate function f1(x int) returns int
+begin
+ declare mini int default 0;
+ declare continue handler for not found set mini=-1;
+ LOOP
+ FETCH GROUP NEXT ROW;
+ set mini = mini + x;
+ END LOOP;
+ return 0;
+end|
+
+--error 1321
+select f1(sal) from t1|
+drop function f1|
+drop table t1|
+
+delimiter ;|
+
+# primary indexing
+
+create table t1 (sal int, id int, val int, counter int, primary key(id));
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 1, 10, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (2000, 2, 16, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 3, 18, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 4, 15, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (3000, 5, 11, 5);
+
+delimiter |;
+
+create aggregate function f1(x INT) returns double
+begin
+ declare z double default 0;
+ declare continue handler for not found return z;
+ loop
+ fetch group next row;
+ set z= z+x;
+ end loop;
+end|
+
+delimiter ;|
+
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter order by val;
+--sorted_result
+select id, f1(sal) from t1;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by id;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter order by counter;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter order by val;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter order by id;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val order by counter;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val order by id;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val order by val;
+drop table t1;
+
+#unique index
+
+create table t1 (sal int, id int, val int, counter int, primary key(id), unique key(val));
+
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 1, 10, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (2000, 2, NULL, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 3, 18, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 4, 15, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (3000, 5, 11, 5);
+
+--sorted_result
+select id, f1(sal) from t1;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by id;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter order by counter;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter order by val;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter order by id;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val order by counter;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val order by id;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val order by val;
+drop table t1;
+
+# compound indexing
+create table t1 (sal int, id int, val int, counter int, primary key(id), INDEX name (val,counter));
+
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 1, 10, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (2000, 2, 10, 4);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 3, 18, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 4, 11, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (3000, 5, 11, 5);
+--sorted_result
+select id, f1(sal) from t1;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by id;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter order by counter;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter order by val;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by counter order by id;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val order by counter;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val order by id;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by val order by val;
+drop table t1;
+drop function f1;
+
+# prepared statement with aggregate functions
+
+delimiter |;
+
+create aggregate function f1(x INT) returns double
+begin
+ declare z double default 0;
+ declare continue handler for not found return z;
+ loop
+ fetch group next row;
+ set z= z+x;
+ end loop;
+end|
+
+create aggregate function f2() returns double
+begin
+ declare z int default 0;
+ declare continue handler for not found return z;
+ loop
+ fetch group next row;
+ set z = z+1;
+ end loop;
+end|
+
+delimiter ;|
+
+create table t1 (sal int, id int, val int, counter int);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 2, 10, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (2000, 1, 16, 5);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 2, 18, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 3, 15, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (3000, 4, 11, 4);
+
+prepare test from "select f2() from t1 where id>= ?";
+set @param= 2;
+execute test using @param;
+execute test using @param;
+execute test using @param;
+execute test using @param;
+set @param= 1;
+execute test using @param;
+set @param= 3;
+execute test using @param;
+set @param= 4;
+execute test using @param;
+deallocate prepare test;
+
+prepare test from "select f1(sal) from t1 where id>= ?";
+set @param= 2;
+execute test using @param;
+execute test using @param;
+execute test using @param;
+execute test using @param;
+set @param= 1;
+execute test using @param;
+set @param= 3;
+execute test using @param;
+set @param= 4;
+execute test using @param;
+set @param= 5;
+execute test using @param;
+deallocate prepare test;
+
+drop function f2;
+
+prepare test from "select f1(sal) from t1 where id>= ?";
+set @param= 2;
+execute test using @param;
+drop function f1;
+
+create function f1(x int) returns int
+ return -1;
+
+execute test using @param;
+
+drop function f1;
+
+delimiter |;
+
+create aggregate function f1(x INT) returns double
+begin
+ declare z double default 0;
+ declare continue handler for not found return z;
+ loop
+ fetch group next row;
+ set z= z+x;
+ end loop;
+end|
+
+delimiter ;|
+
+execute test using @param;
+
+deallocate prepare test;
+
+drop table t1;
+drop function f1;
+
+create table t1 (sal int, id int, val varchar(10), counter int);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 2, 'ab', 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 1, 'cd', 5);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 2, 'ef', 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 3, 'gh', 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 4, 'ij', 4);
+
+create table t2 (sal int, id int, val int, counter int);
+INSERT INTO t2 (sal, id, val, counter) VALUES (1000, 2, 10, 2);
+INSERT INTO t2 (sal, id, val, counter) VALUES (2000, 1, 16, 5);
+INSERT INTO t2 (sal, id, val, counter) VALUES (6000, 2, 18, 1);
+INSERT INTO t2 (sal, id, val, counter) VALUES (5000, 3, 15, 3);
+INSERT INTO t2 (sal, id, val, counter) VALUES (3000, 4, 11, 4);
+delimiter |;
+
+create aggregate function f1(x double) returns double
+begin
+ declare z double default 0;
+ declare continue handler for not found return z;
+ loop
+ fetch group next row;
+ set z= z+x;
+ end loop;
+end|
+
+create aggregate function f2(x INT) returns CHAR(10)
+ begin
+ declare mini INT default 0;
+ declare continue handler for not found return mini;
+ loop
+ fetch group next row;
+ set mini= mini + x;
+ end loop;
+end|
+
+create aggregate function f3(x INT) returns CHAR(10)
+ begin
+ declare mini INT default 0;
+ declare continue handler for not found return mini;
+ loop
+ fetch group next row;
+ set mini= mini + x;
+ fetch group next row;
+ set mini= mini - x;
+ end loop;
+end|
+
+create aggregate function f4(x INT, y varchar(10)) returns varchar(1000)
+begin
+ declare str varchar(1000) default '';
+ declare continue handler for not found return str;
+ loop
+ fetch group next row;
+ set str= concat(str,y);
+ end loop;
+end|
+
+create aggregate function f5(x INT) returns varchar(1000)
+begin
+ declare z int default 0;
+ DECLARE cur1 CURSOR FOR SELECT sal FROM test.t2;
+ declare continue handler for not found return 0;
+ loop
+ fetch group next row;
+ set z = z+x;
+ end loop;
+end|
+
+
+
+create function f6(x int) returns int
+return (select f1(sal) from t1)|
+
+delimiter ;|
+
+select f1(sal) from t1;
+
+# group by test
+
+--sorted_result
+select f1(sal) from t1 where id>= 1 group by counter;
+
+# multiple fetch statements in the loop
+--sorted_result
+select f3(sal) from t1;
+
+# incorrect column type
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+select f2(val) from t1;
+
+#subquery
+--sorted_result
+select val, id, c from (select f1(sal) as c from t2) as t1, t2;
+
+#multiple calls to an aggregate function
+--sorted_result
+select f1(sal),f1(val), f1(id), f1(sal) from t2;
+
+#string type, also more than one areguments
+--sorted_result
+select f4(sal, val) from t1;
+
+#select f1((select sal from t2 where id= 1)) from t1;
+--sorted_result
+select c from (select f1(sal) as c from t2) as t1;
+
+# this fails as more than one row is returned
+#select f1((select val from t2 where id > 1)) from t1;
+
+select f1((select val from t2 where 0 > 1)) from t1;
+select f1((select val from t2 where id= 1)) from t1;
+
+select f5(sal) from t1;
+
+SELECT f1(sal)*f1(sal) FROM t1;
+
+--sorted_result
+SELECT (SELECT f1(sal) FROM t1) FROM t2;
+--sorted_result
+select id, f1(sal) from t1;
+--sorted_result
+select id, f1(sal) from t1 where id>= 1;
+--sorted_result
+select f1(sal), f1(sal) from t1 where id>= 1 group by counter;
+--sorted_result
+select f1(sal), f1(sal) from t1 where id>= 1 group by id ;
+--sorted_result
+select f1(sal) from t1 where id>= 1 group by id ;
+select f1(sal) from t1 where id>= 1 order by counter;
+select f1(sal) from t1 where id>= 1 group by id order by counter;
+select counter, id, f1(sal) from t1 where id>= 1 group by id order by counter;
+select id, f1(sal) from t1 where id>= 1 group by id order by counter;
+drop table t1;
+drop table t2;
+drop function f1;
+drop function f2;
+drop function f3;
+drop function f4;
+drop function f5;
+drop function f6;
+
+
+delimiter |;
+
+# aggregate AND function
+
+create aggregate function f1(x INT) returns INT
+begin
+ declare z double default 1000;
+ declare continue handler for not found return z;
+ loop
+ fetch group next row;
+ set z= (z&x);
+ end loop;
+end|
+
+delimiter ;|
+
+create table t1 (sal int, id int, val int, counter int);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 2, 10, 2);
+INSERT INTO t1 (sal, id, val, counter) VALUES (7000, 1, 16, 5);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 2, 18, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 3, 15, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (3000, 4, 11, 4);
+INSERT INTO t1 (sal, id, val, counter) VALUES (2000, 5, 10, 7);
+INSERT INTO t1 (sal, id, val, counter) VALUES (5000, 7, 13, 8);
+INSERT INTO t1 (sal, id, val, counter) VALUES (6000, 6, 19, 9);
+INSERT INTO t1 (sal, id, val, counter) VALUES (7000, 7, 12, 0);
+INSERT INTO t1 (sal, id, val, counter) VALUES (4000, 6, 14, 1);
+INSERT INTO t1 (sal, id, val, counter) VALUES (8000, 5, 19, 3);
+INSERT INTO t1 (sal, id, val, counter) VALUES (9000, 4, 11, 4);
+INSERT INTO t1 (sal, id, val, counter) VALUES (1000, 3, 11, 2);
+
+select f1(sal) from t1 where id>= 1;
+drop function f1;
+
+delimiter |;
+
+# aggregate AVG function
+
+create aggregate function f1(x INT) returns double
+begin
+ declare z double default 0;
+ declare count double default 0;
+ declare continue handler for not found return z/count;
+ loop
+ fetch group next row;
+ set z= z+x;
+ set count= count+1;
+ end loop;
+end|
+
+delimiter ;|
+select f1(sal) from t1 where id>= 1;
+drop function f1;
+delimiter |;
+
+# aggregate MAX function
+
+create aggregate function f1(x INT) returns INT
+begin
+ declare maxi INT default -1;
+ declare continue handler for not found return maxi;
+ loop
+ fetch group next row;
+ if maxi < x then
+ set maxi= x;
+ end if;
+ end loop;
+end|
+
+delimiter ;|
+select f1(sal) from t1 where id>= 1;
+drop function f1;
+delimiter |;
+
+# aggregate MIN function
+
+create aggregate function f1(x INT) returns double
+begin
+ declare mini INT default 100000;
+ declare continue handler for not found return mini;
+ loop
+ fetch group next row;
+ if mini > x then
+ set mini = x;
+ end if;
+ end loop;
+end|
+
+delimiter ;|
+select f1(sal) from t1 where id>= 1;
+drop function f1;
+delimiter |;
+
+# aggregate XOR function
+
+create aggregate function f1(x INT) returns double
+begin
+ declare z double default 0;
+ declare continue handler for not found return z;
+ loop
+ fetch group next row;
+ set z= z^x;
+ end loop;
+end|
+
+delimiter ;|
+select f1(sal) from t1 where id>= 1;
+drop function f1;
+delimiter |;
+
+# aggregate SUM function
+
+create aggregate function f1(x INT) returns INT
+begin
+ declare z int default 0;
+ declare continue handler for not found return z;
+ loop
+ fetch group next row;
+ set z= z+x;
+ end loop;
+end|
+
+delimiter ;|
+select f1(sal) from t1 where id>= 1;
+delimiter |;
+
+
+create aggregate function f2() returns INT
+begin
+ declare z double default 0;
+ declare continue handler for not found return z;
+ loop
+ fetch group next row;
+ set z= z+1;
+ end loop;
+end|
+
+delimiter ;|
+
+# no parameters
+select f2() from t1;
+
+create table t2 (sal int, id int);
+INSERT INTO t2 (sal, id) VALUES (NULL, 1);
+INSERT INTO t2 (sal, id) VALUES (2000, 1);
+INSERT INTO t2 (sal, id) VALUES (3000, 1);
+
+# null values
+select f1(sal) from t2;
+
+# no tables
+select f1(1);
+
+# aggregate function called from regular functions
+create function f3() returns int
+return (select f1(sal) from t1);
+select f3();
+
+create function f4() returns INT
+return 1;
+
+# regular functions called from aggregate functions
+delimiter |;
+create aggregate function f5() returns INT
+begin
+ declare z double default 0;
+ declare continue handler for not found return z;
+ loop
+ fetch group next row;
+ set z= z+f3();
+ end loop;
+end|
+
+delimiter ;|
+select f5() from t2;
+delimiter |;
+
+# aggregate functions called from aggregate functions
+create aggregate function f6(x INT) returns INT
+begin
+ declare z int default 0;
+ declare continue handler for not found return z;
+ loop
+ fetch group next row;
+ if x then
+ set z= z+(select f1(sal) from t1);
+ end if;
+ end loop;
+end|
+
+delimiter ;|
+select f6(sal) from t2;
+
+# GROUP BY AND ORDER BY
+--sorted_result
+select id, f1(sal) from t1 where id>= 1 group by id;
+--sorted_result
+select counter, f1(sal) from t1 where id>= 1 group by counter;
+--sorted_result
+select val, f1(sal) from t1 where id>= 1 group by val;
+--sorted_result
+select counter, f1(sal) from t1 where id>= 1 group by id order by counter;
+--sorted_result
+select counter, id, f1(sal), f1(sal) from t1 where id>= 1 group by id order by counter;
+--sorted_result
+select counter, id, f1(sal), sum(distinct sal) from t1 where id>= 1 group by id order by counter desc;
+
+
+##### insert aggregate function value into a table ######
+create table t3 (i int);
+INSERT INTO t3 (i) select f1(sal) from t1;
+select * from t3;
+
+delimiter |;
+
+create aggregate function f7(x INT) returns INT
+begin
+ declare z int default 0;
+ DECLARE done BOOLEAN DEFAULT FALSE;
+ DECLARE a,b,c INT;
+ DECLARE cur1 CURSOR FOR SELECT id FROM test.t2;
+ declare continue handler for not found return z;
+
+ outer_loop: LOOP
+ FETCH GROUP NEXT ROW;
+ set z= z+x;
+ inner_block: begin
+ DECLARE cur2 CURSOR FOR SELECT id FROM test.t2;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
+ OPEN cur2;
+
+ read_loop: LOOP
+ FETCH cur2 INTO a;
+ IF done THEN
+ CLOSE cur2;
+ LEAVE read_loop;
+ END IF;
+ END LOOP read_loop;
+
+ end inner_block;
+ END LOOP outer_loop;
+
+end|
+
+delimiter ;|
+select f7(sal) from t1;
+
+drop table t1;
+drop table t2;
+drop table t3;
+drop function f1;
+drop function f2;
+drop function f3;
+drop function f4;
+drop function f5;
+drop function f6;
+drop function f7;
+
+delimiter |;
+create aggregate function f1(x date) returns date
+begin
+ declare continue handler for not found return x;
+ loop
+ fetch group next row;
+ end loop;
+end|
+delimiter ;|
+select f1('2001-01-01'),cast(f1('2001-01-01') as time);
+drop function f1;
diff --git a/mysql-test/t/default.test b/mysql-test/t/default.test
index 7ee3b590a83..44778bc568a 100644
--- a/mysql-test/t/default.test
+++ b/mysql-test/t/default.test
@@ -180,7 +180,7 @@ CREATE TABLE t1 (a INT DEFAULT 10);
INSERT INTO t1 VALUES (11);
CREATE VIEW v1 AS SELECT a AS a FROM t1;
CREATE VIEW v2 AS SELECT DEFAULT(a) AS a FROM t1;
-CREATE VIEW v3 AS SELECT VALUES(a) AS a FROM t1;
+CREATE VIEW v3 AS SELECT VALUE(a) AS a FROM t1;
SELECT * FROM v1;
SELECT * FROM v2;
SELECT * FROM v3;
@@ -447,7 +447,7 @@ CALL p1;
DROP PROCEDURE p1;
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
-CREATE TABLE t1 (a INT DEFAULT VALUES(a));
+CREATE TABLE t1 (a INT DEFAULT VALUE(a));
CREATE TABLE t1 (a INT);
diff --git a/mysql-test/t/derived_cond_pushdown.test b/mysql-test/t/derived_cond_pushdown.test
index f5caa018e94..e728a9590a1 100644
--- a/mysql-test/t/derived_cond_pushdown.test
+++ b/mysql-test/t/derived_cond_pushdown.test
@@ -873,11 +873,585 @@ eval $no_pushdown $query;
eval $query;
eval explain $query;
eval explain format=json $query;
-
+
drop view v1,v2,v3,v4;
drop view v_union,v2_union,v3_union,v4_union;
drop view v_double,v_char,v_decimal;
-drop table t1,t2,t1_double,t2_double,t1_char,t2_char,t1_decimal,t2_decimal;
+drop table t1,t2,t1_double,t2_double,t1_char,t2_char,t1_decimal,t2_decimal;
+
+--echo #
+--echo # MDEV-14579: pushdown conditions into materialized views/derived tables
+--echo # that are defined with EXIST or/and INTERSECT
+--echo #
+
+create table t1 (a int, b int, c int);
+create table t2 (a int, b int, c int);
+
+insert into t1 values
+ (1,21,345), (1,33,7), (8,33,114), (1,21,500), (1,19,117), (5,14,787),
+ (8,33,123), (9,10,211), (5,16,207), (1,33,988), (5,27,132), (1,21,104),
+ (6,20,309), (6,20,315), (1,21,101), (4,33,404), (9,10,800), (1,21,123);
+
+insert into t2 values
+ (2,3,207), (1,16,909), (5,14,312),
+ (5,33,207), (6,20,211), (1,19,132),
+ (8,33,117), (3,21,231), (6,23,303);
+
+create view v1 as
+ select a, b, min(c) as c from t1
+ where t1.a<9 group by a,b having c < 300
+ intersect
+ select a, b, min(c) as c from t1
+ where t1.b>10 group by a,b having c > 100;
+
+--echo # using intersect in view definition
+--echo # conjunctive subformulas : pushing into WHERE
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using intersect in view definition
+--echo # conjunctive subformulas : pushing into WHERE
+--echo # pushing equalities
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a=8);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using intersect in view definition
+--echo # conjunctive subformulas : pushing into WHERE using equalities
+let $query= select * from v1,t2 where (v1.a=t2.a) and (t2.a=8);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using intersect in view definition
+--echo # conjunctive subformulas : pushing into HAVING
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.c>200);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using intersect in view definition
+--echo # conjunctive subformulas : pushing into WHERE
+--echo # conjunctive subformulas : pushing into HAVING
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>110);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using intersect in view definition
+--echo # extracted or formula : pushing into WHERE
+let $query=
+ select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using intersect in view definition
+--echo # extracted or formula : pushing into HAVING
+let $query=
+ select * from v1,t2 where
+ (v1.a=t2.a) and ((v1.c>200) or (v1.c<105));
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using intersect in view definition
+--echo # extracted or formula : pushing into WHERE
+--echo # extracted or formula : pushing into HAVING using equalities
+--echo # pushing equalities
+let $query=
+ select * from v1,t2 where
+ ((v1.a>3) and (t2.c>110) and (v1.c=t2.c)) or
+ ((v1.a=1) and (v1.c<110));
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using intersect in view definition
+--echo # prepare of a query
+--echo # conjunctive subformulas : pushing into WHERE
+--echo # conjunctive subformulas : pushing into HAVING
+prepare stmt from "select * from v1,t2
+ where (v1.a=t2.a) and (v1.a<5) and (v1.c>110);";
+execute stmt;
+execute stmt;
+deallocate prepare stmt;
+
+--echo # using intersect in derived table definition
+--echo # extracted or formula : pushing into WHERE using equalities
+--echo # extracted or formula : pushing into HAVING
+--echo # pushing equalities
+let $query=
+ select *
+ from t2,
+ (select a, b, min(c) as c from t1
+ where t1.a<9 group by a,b having c < 300
+ intersect
+ select a, b, min(c) as c from t1
+ where t1.b>10 group by a,b having c > 100) as d1
+ where
+ (d1.b=t2.b) and
+ (((t2.b>13) and (t2.c=909)) or
+ ((d1.a<4) and (d1.c<200)));
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+create view v1 as
+ select a, b, max(c) as c from t1
+ where t1.a<9 group by a,b having c > 200
+ except
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c < 300;
+
+--echo # using except in view definition
+--echo # conjunctive subformulas : pushing into WHERE
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using except in view definition
+--echo # conjunctive subformulas : pushing into WHERE
+--echo # pushing equalities
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a=6);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using except in view definition
+--echo # conjunctive subformulas : pushing into WHERE using equalities
+let $query= select * from v1,t2 where (v1.a=t2.a) and (t2.a=6);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using except in view definition
+--echo # conjunctive subformulas : pushing into HAVING
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.c>500);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using except in view definition
+--echo # conjunctive subformulas : pushing into WHERE
+--echo # conjunctive subformulas : pushing into HAVING
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>500);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using except in view definition
+--echo # extracted or formula : pushing into WHERE
+let $query=
+ select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using except in view definition
+--echo # extracted or formula : pushing into HAVING
+let $query=
+ select * from v1,t2 where
+ (v1.a=t2.a) and ((v1.c<400) or (v1.c>800));
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using except in view definition
+--echo # extracted or formula : pushing into WHERE
+--echo # extracted or formula : pushing into HAVING using equalities
+--echo # pushing equalities
+let $query=
+ select * from v1,t2 where
+ (v1.c=t2.c) and
+ ((v1.a>1) and (t2.c<500)) or
+ ((v1.a=1) and (v1.c>500));
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+--echo # using except in view definition
+--echo # prepare of a query
+--echo # conjunctive subformulas : pushing into WHERE
+--echo # conjunctive subformulas : pushing into HAVING
+prepare stmt from "select * from v1,t2
+ where (v1.a=t2.a) and (v1.a<5) and (v1.c>500);";
+execute stmt;
+execute stmt;
+deallocate prepare stmt;
+
+--echo # using except in view definition
+--echo # extracted or formula : pushing into WHERE using equalities
+--echo # extracted or formula : pushing into HAVING
+--echo # pushing equalities
+let $query=
+ select *
+ from t2,
+ (select a, b, max(c) as c from t1
+ where t1.a<9 group by a,b having c > 200
+ except
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c < 300) as d1
+ where
+ (d1.b=t2.b) and
+ (((t2.b>13) and (t2.c=988)) or
+ ((d1.a>4) and (d1.c>500)));
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using union and intersect in view definition
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, min(c) as c from t1
+ where t1.a<9 group by a,b having c > 200
+ union
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c < 300
+ intersect
+ select a, b, max(c) as c from t1
+ where t1.a>3 group by a,b having c < 530;
+
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using union and intersect in view definition
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, min(c) as c from t1
+ where t1.a<9 group by a,b having c > 200
+ intersect
+ select a, b, max(c) as c from t1
+ where t1.a>3 group by a,b having c < 500
+ union
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c < 300;
+
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using union and except in view definition
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, min(c) as c from t1
+ where t1.a<9 group by a,b having c > 200
+ union
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c < 300
+ except
+ select a, b, max(c) as c from t1
+ where t1.a>3 group by a,b having c < 530;
+
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using union and except in view definition
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, min(c) as c from t1
+ where t1.a<9 group by a,b having c > 200
+ except
+ select a, b, max(c) as c from t1
+ where t1.a>3 group by a,b having c < 500
+ union
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c < 300;
+
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using except and intersect in view definition
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c < 300
+ intersect
+ select a, b, max(c) as c from t1
+ where t1.a<7 group by a,b having c < 500
+ except
+ select a, b, max(c) as c from t1
+ where t1.a<9 group by a,b having c > 150;
+
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<150);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using except and intersect in view definition
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c < 300
+ except
+ select a, b, max(c) as c from t1
+ where t1.a<9 group by a,b having c > 150
+ intersect
+ select a, b, max(c) as c from t1
+ where t1.a<7 group by a,b having c < 500;
+
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using except, intersect and union in view definition
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c < 300
+ except
+ select a, b, max(c) as c from t1
+ where t1.a<9 group by a,b having c > 150
+ intersect
+ select a, b, max(c) as c from t1
+ where t1.a<7 group by a,b having c < 500
+ union
+ select a, b, max(c) as c from t1
+ where t1.a<7 group by a,b having c < 120;
+
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using intersect in view definition
+--echo # using embedded view
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c < 300
+ intersect
+ select a, b, max(c) as c from t1
+ where t1.a<9 group by a,b having c > 120;
+
+create view v2 as
+ select a, b, max(c) as c from v1
+ where v1.a<7 group by a,b;
+
+let $query= select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1,v2;
+
+--echo # using except in view definition
+--echo # using embedded view
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c < 300
+ except
+ select a, b, max(c) as c from t1
+ where t1.a<9 group by a,b having c > 150;
+
+create view v2 as
+ select a, b, max(c) as c from v1
+ where v1.a<7 group by a,b;
+
+let $query= select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1,v2;
+
+--echo # using intersect in view definition
+--echo # conditions are pushed in different parts of selects
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, max(c) as c from t1
+ where t1.a<9 group by a having c > 300
+ intersect
+ select a, b, max(c) as c from t1
+ where t1.b<21 group by b having c > 200;
+
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.b>12) and (v1.c<450);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using except in view definition
+--echo # conditions are pushed in different parts of selects
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, max(c) as c from t1
+ where t1.b>20 group by a having c > 300
+ except
+ select a, b, max(c) as c from t1
+ where t1.a<7 group by b having c > 150;
+
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a<2) and (v1.b<30) and (v1.c>450);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using except and union in view definition
+--echo # conditions are pushed in different parts of selects
+--echo # conjunctive subformulas : pushing into HAVING
+--echo # extracted or formula : pushing into WHERE
+--echo # extracted or formula : pushing into HAVING
+create view v1 as
+ select a, b, max(c) as c from t1
+ where t1.b>20 group by a having c > 300
+ except
+ select a, b, max(c) as c from t1
+ where t1.a<7 group by b having c > 150;
+
+let $query= select * from v1,t2 where (v1.a=t2.a) and ((v1.a<2) or (v1.a<5)) and (v1.c>450);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using union and intersect in view definition
+--echo # conditions are pushed in different parts of selects
+--echo # conjunctive subformulas : pushing into WHERE and HAVING
+create view v1 as
+ select a, b, max(c) as c from t1
+ where t1.a<9 group by a having c > 100
+ intersect
+ select a, b, max(c) as c from t1
+ where t1.a>3 group by b having c < 800
+ union
+ select a, b, max(c) as c from t1
+ where t1.b>10 group by a,b having c > 300;
+
+let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>1) and (v1.b > 12) and (v1.c>400);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+create table t3 (a int, b int, c int);
+insert into t3 values
+ (1,21,345), (2,33,7), (8,33,114), (3,21,500), (1,19,107), (5,14,787),
+ (4,33,123), (9,10,211), (11,16,207), (10,33,988), (5,27,132), (12,21,104),
+ (6,20,309), (16,20,315), (16,21,101), (18,33,404), (19,10,800), (10,21,123),
+ (17,11,708), (6,20,214);
+
+create index i1 on t3(a);
+
+--echo # conjunctive subformulas : pushing into WHERE
+--echo # pushed condition gives range access
+create view v1 as
+ select a, b, max(c) as max_c from t3
+ where a>0 group by a;
+
+let $query= select * from v1,t2 where (v1.b=t2.b) and (v1.a<5);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using union in view definition
+--echo # conjunctive subformulas : pushing into WHERE
+--echo # pushed condition gives range access
+create view v1 as
+ select a, b, max(c) as c from t3
+ where t3.a>1 group by a
+ union
+ select a, b, max(c) as c from t3
+ where t3.a>2 group by a;
+
+let $query= select * from v1,t2 where (v1.b=t2.b) and (v1.a<4);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+--echo # using union in view definition
+--echo # conjunctive subformulas : pushing into WHERE
+--echo # pushed condition gives range access in one of the selects
+create view v1 as
+ select a, b, max(c) as c from t3
+ where t3.a>1 group by a
+ union
+ select a, b, max(c) as c from t3
+ where t3.b<21 group by b;
+
+let $query= select * from v1,t2 where (v1.b=t2.b) and (v1.a<3);
+eval $no_pushdown $query;
+eval $query;
+eval explain $query;
+eval explain format=json $query;
+
+drop view v1;
+
+alter table t3 drop index i1;
+
+drop table t1,t2,t3;
--echo #
--echo # MDEV-10782: condition extracted from a multiple equality
@@ -1596,7 +2170,7 @@ SET sql_mode = DEFAULT;
--echo #
set @save_optimizer_switch= @@optimizer_switch;
-set optimizer_switch='split_grouping_derived=off';
+set optimizer_switch='split_materialized=off';
create table t1 (a int, c varchar(16));
insert into t1 values
@@ -1707,28 +2281,62 @@ set optimizer_switch= @save_optimizer_switch;
--echo #
let
-$no_splitting= set statement optimizer_switch='split_grouping_derived=off' for;
+$no_splitting= set statement optimizer_switch='split_materialized=off' for;
-create table t1 (a int);
+create table t1 (a int, b int, index idx_b(b)) engine=myisam;
insert into t1 values
-(8), (5), (1), (2), (9), (7), (2), (7);
+(8,3), (5,7), (1,2), (2,1), (9,7), (7,5), (2,2), (7,3),
+(9,3), (8,1), (4,5), (2,3);
-create table t2 (a int, b int, index idx(a));
+create table t2 (a int, b int, c char(127), index idx_a(a)) engine=myisam;
insert into t2 values
- (7,10), (1,20), (2,23), (7,18), (1,30),
- (4,71), (3,15), (7,82), (8,12), (4,15),
- (11,33), (10,42), (4,53), (10,17), (2,90);
+ (7,10,'x'), (1,20,'a'), (2,23,'b'), (7,18,'z'), (1,30,'c'),
+ (4,71,'d'), (3,15,'x'), (7,82,'y'), (8,12,'t'), (4,15,'b'),
+ (11,33,'a'), (10,42,'u'), (4,53,'p'), (10,17,'r'), (2,90,'x'),
+ (17,10,'s'), (11,20,'v'), (12,23,'y'), (17,18,'a'), (11,30,'d'),
+ (24,71,'h'), (23,15,'i'), (27,82,'k'), (28,12,'p'), (24,15,'q'),
+ (31,33,'f'), (30,42,'h'), (40,53,'m'), (30,17,'o'), (21,90,'b'),
+ (37,10,'e'), (31,20,'g'), (32,23,'f'), (37,18,'n'), (41,30,'l'),
+ (54,71,'j'), (53,15,'w'), (57,82,'z'), (58,12,'k'), (54,15,'p'),
+ (61,33,'c'), (60,42,'a'), (62,53,'x'), (67,17,'g'), (64,90,'v');
+
+insert into t2 select a+10, b+10, concat(c,'f') from t2;
+
+analyze table t1,t2;
let $q1=
-select t1.a,t.max,t.min
+select t1.a,t.s,t.m
from t1 join
- (select a, max(t2.b) max, min(t2.b) min from t2 group by t2.a) t
- on t1.a=t.a;
+ (select a, sum(t2.b) as s, min(t2.c) as m from t2 group by t2.a) t
+ on t1.a=t.a
+where t1.b < 3;
eval $no_splitting $q1;
eval $q1;
eval explain extended $q1;
-eval explain format=json $q1;
+eval explain format=json $q1;
+eval prepare stmt from "$q1";
+execute stmt;
+execute stmt;
+deallocate prepare stmt;
+
+let $q10=
+select t1.a,t.s,t.m
+from t1 join
+ (select a, sum(t2.b) as s, min(t2.b) as m from t2 group by t2.a) t
+ on t1.a=t.a
+where t1.b <= 5;
+
+eval $no_splitting $q10;
+eval $q10;
+eval explain extended $q10;
+eval explain format=json $q10;
+eval prepare stmt from "$q10";
+execute stmt;
+execute stmt;
+deallocate prepare stmt;
+
+delete from t1 where t1.b between 2 and 5;
let $q2=
select t1.a,t.max,t.min
@@ -1741,68 +2349,122 @@ eval $q2;
eval explain extended $q2;
eval explain format=json $q2;
-create table t3 (a int, c varchar(16));
+create table t3 (a int, b int, c char(127), index idx_b(b)) engine=myisam;
insert into t3 values
-(8,'aa'), (5,'cc'), (1,'bb'), (2,'aa'), (9,'cc'),
-(7,'aa'), (2,'aa'), (7,'bb');
+(8,11,'aa'), (5,15,'cc'), (1,14,'bb'), (2,12,'aa'), (7,17,'cc'),
+(7,18,'aa'), (2,11,'aa'), (7,10,'bb'), (3,11,'dd'), (4,12,'ee'),
+(5,14,'dd'), (9,12,'ee');
-create table t4 (a int, b int, c varchar(16), index idx(a,c));
+create table t4 (a int, b int, c char(127), index idx(a,c)) engine=myisam;
insert into t4 values
(7,10,'cc'), (1,20,'aa'), (2,23,'bb'), (7,18,'cc'), (1,30,'bb'),
- (4,71,'xx'), (3,15,'aa'), (7,82,'bb'), (8,12,'dd'), (4,15,'aa'),
- (11,33,'yy'), (10,42,'zz'), (4,53,'xx'), (10,17,'yy'), (7,12,'bb'),
+ (4,71,'xx'), (3,15,'aa'), (7,82,'aa'), (8,12,'dd'), (4,15,'aa'),
+ (11,33,'yy'), (10,42,'zz'), (4,53,'xx'), (10,17,'yy'), (7,12,'cc'),
(8,20,'dd'), (7,32,'bb'), (1,50,'aa'), (3,40,'bb'), (3,77,'aa');
+insert into t4 select a+10, b+10, concat(c,'f') from t4;
+
+analyze table t3,t4;
+
let $q3=
select t3.a,t3.c,t.max,t.min
from t3 join
(select a, c, max(b) max, min(b) min from t4 group by a,c) t
- on t3.a=t.a and t3.c=t.c;
+ on t3.a=t.a and t3.c=t.c
+where t3.b > 15;
eval $no_splitting $q3;
eval $q3;
eval explain extended $q3;
eval explain format=json $q3;
+let $q30=
+select t3.a,t3.c,t.max,t.min
+from t3 join
+ (select a, c, max(b) max, min(b) min from t4 group by a,c) t
+ on t3.a=t.a and t3.c=t.c
+where t3.b <= 15;
+
+eval $no_splitting $q30;
+eval $q30;
+eval explain extended $q30;
+eval explain format=json $q30;
+
let $q4=
select t3.a,t3.c,t.max,t.min
from t3 join
(select a, c, max(b) max, min(b) min from t4 group by c,a) t
- on t3.a=t.a and t3.c=t.c;
+ on t3.a=t.a and t3.c=t.c
+where t3.b > 15;
eval $no_splitting $q4;
eval $q4;
eval explain extended $q4;
eval explain format=json $q4;
-drop index idx on t2;
-create index idx on t2(b);
-create index idx on t3(a);
-create index idx2 on t4(c);
-insert into t3 select a+1, concat(c,'f') from t3;
-insert into t3 select a+1, concat(c,'h') from t3;
-insert into t4 select a+1, b+10, concat(c,'h') from t4;
+let $q40=
+select t3.a,t3.c,t.max,t.min
+from t3 join
+ (select a, c, max(b) max, min(b) min from t4 group by c,a) t
+ on t3.a=t.a and t3.c=t.c
+where t3.b <= 15;
+
+eval $no_splitting $q40;
+eval $q40;
+eval explain extended $q40;
+eval explain format=json $q40;
+
+drop index idx_a on t2;
+create index idx on t2(c,b);
+create index idx_a on t3(a);
+create index idx_c on t4(c);
+insert into t3 select a+10, b+10, concat(c,'f') from t3;
+insert into t3 select a+100, b+100, concat(c,'g') from t3;
+insert into t4 select a+100, b+100, concat(c,'g') from t4;
+insert into t4 select a+1000, b+1000, concat(c,'h') from t4;
+
+analyze table t2,t3,t4;
let $q5=
-select t2.a,t2.b,t3.c,t.max,t.min
+select t2.a,t2.b,t2.c,t.c as t_c,t.max,t.min
from t2, t3, (select c, max(b) max, min(b) min from t4 group by c) t
-where t2.b > 50 and t2.a=t3.a and t3.c=t.c;
+where t2.b between 80 and 85 and t2.c in ('y','z') and t2.a=t3.a and t3.c=t.c;
eval $no_splitting $q5;
eval $q5;
eval explain extended $q5;
eval explain format=json $q5;
+let $q50=
+select t2.a,t2.b,t2.c,t.c as t_c,t.max,t.min
+from t2, t3, (select c, max(b) max, min(b) min from t4 group by c) t
+where t2.b < 40 and t2.a=t3.a and t3.c=t.c;
+
+eval $no_splitting $q50;
+eval $q50;
+eval explain extended $q50;
+eval explain format=json $q50;
+
let $q6=
select *
from t2, t3, (select c, b, sum(b) over (partition by c) from t4 ) t
-where t2.b > 50 and t2.a=t3.a and t3.c=t.c;
+where t2.b between 80 and 85 and t2.c in ('y','z') and t2.a=t3.a and t3.c=t.c;
eval $no_splitting $q6;
eval $q6;
eval explain extended $q6;
eval explain format=json $q6;
+let $q60=
+select *
+from t2, t3, (select c, b, sum(b) over (partition by c) from t4 ) t
+where t2.b < 40 and t2.a=t3.a and t3.c=t.c;
+
+eval $no_splitting $q60;
+eval $q60;
+eval explain extended $q60;
+eval explain format=json $q60;
+
drop table t1,t2,t3,t4;
--echo #
@@ -1816,18 +2478,23 @@ INSERT INTO t1 VALUES (1),(9),(3);
CREATE TABLE t2 (a int, i int);
INSERT INTO t2 VALUES (1,9),(2,3),(3,7),(4,1);
-CREATE TABLE t3 (a int, c varchar(8), index(c));
+CREATE TABLE t3 (a int, c char(127), index(c));
INSERT INTO t3 VALUES (1,'foo'),(3,'bar'),(4,'foo'),(2,'bar');
+INSERT INTO t3 SELECT a, concat(c,'a') FROM t3;
+
+CREATE TABLE t4 (a int, c char(127), index(a));
+INSERT INTO t4 VALUES
+ (3,'abc'),(1,'foo'),(4,'def'),(8,'xxx'),(3,'yyy'),
+ (5,'zzz'),(9,'xyz'),(2,'yxz'),(5,'zxy'),(7,'zyx') ;
-CREATE TABLE t4 (c varchar(8));
-INSERT INTO t4 VALUES ('abc'),('foo'),('def');
+ANALYZE TABLE t1,t2,t3,t4;
CREATE VIEW v1 AS
SELECT c FROM t3
WHERE a IN ( SELECT t2.a FROM t1 JOIN t2 WHERE t1.i = t2.i ) GROUP BY c ;
let $q1=
-SELECT * FROM t4 WHERE c IN ( SELECT c FROM v1 );
+SELECT * FROM t4 WHERE c IN ( SELECT c FROM v1 ) and a < 2;
eval $no_splitting $q1;
eval $q1;
@@ -1876,3 +2543,73 @@ SELECT * FROM v3 JOIN t1 ON (bmax = b);
DROP VIEW v1,v2,v3;
DROP TABLE t1,t2;
+
+--echo #
+--echo # MDEV-14845: Impossible where for derived with GROUP BY
+--echo #
+
+CREATE TABLE t1 (pk INT PRIMARY KEY);
+
+INSERT INTO t1 VALUES (1),(2);
+
+let $q=
+WITH cte AS ( SELECT pk FROM t1 WHERE pk IS NULL GROUP BY pk )
+SELECT * FROM cte;
+
+eval $q;
+eval EXPLAIN EXTENDED $q;
+
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-14880: assertion failure in optimizer when splitting is applied
+--echo #
+
+CREATE TABLE t1 (pk1 INT PRIMARY KEY, f INT) ENGINE=Aria;
+INSERT INTO t1 VALUES (1,0),(2,0);
+
+CREATE TABLE t2 (pk2 INT PRIMARY KEY) ENGINE=Aria;
+INSERT INTO t2 VALUES (1),(2),(3);
+
+CREATE VIEW v2 AS SELECT pk2, COUNT(*) AS cnt FROM t2 GROUP BY pk2;
+
+let $q=
+SELECT * FROM t1 INNER JOIN v2 ON pk1 = pk2 WHERE f <> 5;
+
+eval $q;
+eval EXPLAIN EXTENDED $q;
+eval EXPLAIN FORMAT=JSON $q;
+
+DROP VIEW v2;
+DROP TABLE t1,t2;
+
+--echo #
+--echo # MDEV-15017: splittable table is constant table
+--echo #
+
+CREATE TABLE t1 (a INT) ENGINE=MyISAM;
+
+CREATE TABLE t2 (pk INT, b INT, PRIMARY KEY (pk)) ENGINE=MyISAM;
+INSERT INTO t2 VALUES (1,2),(3,4);
+
+CREATE VIEW v2 AS SELECT pk, MIN(b) FROM t2 GROUP BY pk;
+
+SELECT * FROM t1 LEFT JOIN v2 ON (a = pk);
+
+DROP VIEW v2;
+DROP TABLE t1,t2;
+
+--echo #
+--echo # MDEV-14994: splittable table with no rows
+--echo #
+
+CREATE TABLE t1 (f INT PRIMARY KEY) ENGINE=MyISAM;
+CREATE VIEW v1 AS SELECT a.* FROM t1 AS a STRAIGHT_JOIN t1 AS b;
+CREATE VIEW v2 AS SELECT f FROM v1 GROUP BY f;
+
+SELECT * FROM v1 JOIN v2 ON v1.f = v2.f;
+EXPLAIN EXTENDED
+SELECT * FROM v1 JOIN v2 ON v1.f = v2.f;
+
+DROP VIEW v1,v2;
+DROP TABLE t1;
diff --git a/mysql-test/t/errors.test b/mysql-test/t/errors.test
index e8d3bf85c09..73d94d10382 100644
--- a/mysql-test/t/errors.test
+++ b/mysql-test/t/errors.test
@@ -179,16 +179,16 @@ SELECT UPDATEXML(-73 * -2465717823867977728,@@global.auto_increment_increment,nu
CREATE TABLE t1 (a INT);
CREATE TABLE t2(a INT PRIMARY KEY, b INT);
--error ER_BAD_FIELD_ERROR
-SELECT '' AS b FROM t1 GROUP BY VALUES(b);
+SELECT '' AS b FROM t1 GROUP BY VALUE(b);
--error ER_BAD_FIELD_ERROR
-REPLACE t2(b) SELECT '' AS b FROM t1 GROUP BY VALUES(b);
+REPLACE t2(b) SELECT '' AS b FROM t1 GROUP BY VALUE(b);
--error ER_BAD_FIELD_ERROR
-UPDATE t2 SET a=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
+UPDATE t2 SET a=(SELECT '' AS b FROM t1 GROUP BY VALUE(b));
--error ER_BAD_FIELD_ERROR
INSERT INTO t2 VALUES (1,0) ON DUPLICATE KEY UPDATE
- b=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
+ b=(SELECT '' AS b FROM t1 GROUP BY VALUE(b));
INSERT INTO t2(a,b) VALUES (1,0) ON DUPLICATE KEY UPDATE
- b=(SELECT VALUES(a)+2 FROM t1);
+ b=(SELECT VALUE(a)+2 FROM t1);
DROP TABLE t1, t2;
--echo #
diff --git a/mysql-test/t/func_gconcat.test b/mysql-test/t/func_gconcat.test
index 1038fc0f6d0..5cbc6969e02 100644
--- a/mysql-test/t/func_gconcat.test
+++ b/mysql-test/t/func_gconcat.test
@@ -915,3 +915,76 @@ DROP TABLE t1;
--echo #
--echo # End of 10.2 tests
--echo #
+
+
+--echo #
+--echo # Start of 10.3 tests
+--echo #
+
+#
+# MDEV-11297: Add support for LIMIT clause in GROUP_CONCAT()
+#
+--disable_warnings
+drop table if exists t1, t2;
+--enable_warnings
+
+create table t1 (grp int, a bigint unsigned, c char(10) , d char(10) not null);
+insert into t1 values (1,1,NULL,"a");
+insert into t1 values (1,10,"b","a");
+insert into t1 values (1,11,"c","a");
+insert into t1 values (2,2,"c","a");
+insert into t1 values (2,3,"b","b");
+insert into t1 values (3,4,"E","a");
+insert into t1 values (3,5,"C","b");
+insert into t1 values (3,6,"D","c");
+insert into t1 values (3,7,"E","c");
+
+
+select grp,group_concat(c) from t1 group by grp;
+select grp,group_concat(c limit 1 ) from t1 group by grp;
+select grp,group_concat(c limit 1,1 ) from t1 group by grp;
+select grp,group_concat(c limit 1,10 ) from t1 group by grp;
+select grp,group_concat(c limit 1000) from t1 group by grp;
+select group_concat(grp limit 0) from t1;
+--error ER_PARSE_ERROR
+select group_concat(grp limit "sdjadjs") from t1
+--error ER_PARSE_ERROR
+select grp,group_concat(c limit 5.5) from t1 group by grp ;
+select grp,group_concat(distinct c limit 1,10 ) from t1 group by grp;
+select grp,group_concat(c order by a) from t1 group by grp;
+select grp,group_concat(c order by a limit 2 ) from t1 group by grp;
+select grp,group_concat(c order by a limit 1,1 ) from t1 group by grp;
+select grp,group_concat(c order by c) from t1 group by grp;
+select grp,group_concat(c order by c limit 2) from t1 group by grp;
+select grp,group_concat(c order by c desc) from t1 group by grp;
+select grp,group_concat(c order by c desc limit 2) from t1 group by grp;
+
+drop table t1;
+
+create table t2 (a int, b varchar(10));
+insert into t2 values(1,'a'),(1,'b'),(NULL,'c'),(2,'x'),(2,'y');
+select group_concat(a,b limit 2) from t2;
+
+set @x=4;
+prepare STMT from 'select group_concat(b limit ?) from t2';
+execute STMT using @x;
+set @x=2;
+execute STMT using @x;
+set @x=1000;
+execute STMT using @x;
+set @x=0;
+execute STMT using @x;
+set @x="adasfa";
+--error ER_INVALID_VALUE_TO_LIMIT
+execute STMT using @x;
+set @x=-1;
+--error ER_WRONG_ARGUMENTS
+execute STMT using @x;
+set @x=4;
+prepare STMT from 'select group_concat(a,b limit ?) from t2';
+execute STMT using @x;
+drop table t2;
+
+--echo #
+--echo # End of 10.3 tests
+--echo #
diff --git a/mysql-test/t/func_group_innodb.test b/mysql-test/t/func_group_innodb.test
index c62d3d08496..1d175f85ed9 100644
--- a/mysql-test/t/func_group_innodb.test
+++ b/mysql-test/t/func_group_innodb.test
@@ -168,7 +168,7 @@ set storage_engine=innodb;
create table y select 1 b;
select 1 from y group by b;
-select 1 from y group by values(b);
+select 1 from y group by value(b);
drop table y;
SET storage_engine=@old_engine;
diff --git a/mysql-test/t/func_misc.test b/mysql-test/t/func_misc.test
index ae548a319ec..9f452e632ec 100644
--- a/mysql-test/t/func_misc.test
+++ b/mysql-test/t/func_misc.test
@@ -316,7 +316,7 @@ CREATE TABLE t1 (a INT, b INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1,10);
CREATE VIEW v1 AS SELECT * FROM t1;
-EXPLAIN EXTENDED SELECT VALUES(b) FROM v1;
+EXPLAIN EXTENDED SELECT VALUE(b) FROM v1;
drop view v1;
drop table t1;
diff --git a/mysql-test/t/gis.test b/mysql-test/t/gis.test
index 94e56774bf4..ca806778f0e 100644
--- a/mysql-test/t/gis.test
+++ b/mysql-test/t/gis.test
@@ -1491,6 +1491,7 @@ SHOW CREATE TABLE information_schema.spatial_ref_sys;
create table t1(g GEOMETRY, pt POINT);
create table t2(g LINESTRING, pl POLYGON);
+--sorted_result
select * from information_schema.geometry_columns where f_table_schema='test';
drop table t1, t2;
diff --git a/mysql-test/t/group_by_null.test b/mysql-test/t/group_by_null.test
index b3fa2a003ec..93e965671dd 100644
--- a/mysql-test/t/group_by_null.test
+++ b/mysql-test/t/group_by_null.test
@@ -3,5 +3,5 @@
#
create table t1 (a int);
insert into t1 values (1),(2);
-select max('foo') from t1 group by values(a), extractvalue('bar','qux') order by "v";
+select max('foo') from t1 group by value(a), extractvalue('bar','qux') order by "v";
drop table t1;
diff --git a/mysql-test/t/information_schema-big.test b/mysql-test/t/information_schema-big.test
index 717c22f8f6a..9212348649e 100644
--- a/mysql-test/t/information_schema-big.test
+++ b/mysql-test/t/information_schema-big.test
@@ -1,18 +1,12 @@
# This test uses grants, which can't get tested for embedded server
-- source include/big_test.inc
-- source include/not_embedded.inc
--- source include/have_xtradb.inc
+-- source include/have_innodb.inc
# check that CSV engine was compiled in, as the result of the test depends
# on the presence of the log tables (which are CSV-based).
--source include/have_csv.inc
---disable_warnings
-DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5;
-DROP VIEW IF EXISTS v1;
---enable_warnings
-
-
--echo #
--echo # Bug#18925: subqueries with MIN/MAX functions on INFORMATION_SCHEMA
--echo #
diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test
index 9799e65e76e..1f72d0b6129 100644
--- a/mysql-test/t/information_schema.test
+++ b/mysql-test/t/information_schema.test
@@ -32,7 +32,9 @@ create user mysqltest_3@localhost;
create user mysqltest_3;
+--sorted_result
select * from information_schema.SCHEMATA where schema_name > 'm';
+--sorted_result
select schema_name from information_schema.schemata;
show databases like 't%';
show databases;
@@ -71,6 +73,7 @@ select c, v2.table_name from v1
right join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%";
+--sorted_result
select table_name from information_schema.TABLES
where table_schema = "mysqltest" and table_name like "t%";
@@ -206,6 +209,7 @@ show create procedure sel2;
# Test for views
#
create view v0 (c) as select schema_name from information_schema.schemata;
+--sorted_result
select * from v0;
--replace_column 3 #
explain select * from v0;
@@ -222,6 +226,7 @@ create view v4 (c) as select COLLATION_NAME from information_schema.collations
where COLLATION_NAME like "latin1%";
select * from v4;
show keys from v4;
+--sorted_result
select * from information_schema.views where TABLE_NAME like "v%";
drop view v0, v1, v2, v3, v4;
@@ -273,6 +278,7 @@ create table t1(a int);
create view v1 (c) as select a from t1 with check option;
create view v2 (c) as select a from t1 WITH LOCAL CHECK OPTION;
create view v3 (c) as select a from t1 WITH CASCADED CHECK OPTION;
+--sorted_result
select * from information_schema.views;
grant select (a) on test.t1 to joe@localhost with grant option;
select * from INFORMATION_SCHEMA.COLUMN_PRIVILEGES;
@@ -316,6 +322,7 @@ drop table t1;
create table t1 (s1 int);
insert into t1 values (0),(9),(0);
+--sorted_result
select s1 from t1 where s1 in (select version from
information_schema.tables) union select version from
information_schema.tables;
@@ -408,12 +415,18 @@ create view v3 (c) as select sub1(1);
create table t4(f1 int, KEY f1_key (f1));
drop table t1;
drop function sub1;
+--sorted_result
select table_name from information_schema.views
where table_schema='test';
+--sorted_result
select table_name from information_schema.views
where table_schema='test';
select column_name from information_schema.columns
-where table_schema='test';
+where table_schema='test' and table_name='t4';
+select column_name from information_schema.columns
+where table_schema='test' and table_name='v2';
+select column_name from information_schema.columns
+where table_schema='test' and table_name='v3';
select index_name from information_schema.statistics where table_schema='test';
select constraint_name from information_schema.table_constraints
where table_schema='test';
@@ -503,9 +516,11 @@ drop table t_crashme;
#
select table_schema,table_name, column_name from
information_schema.columns
-where data_type = 'longtext' and table_schema != 'performance_schema';
+where data_type = 'longtext' and table_schema != 'performance_schema'
+order by binary table_name, ordinal_position;
select table_name, column_name, data_type from information_schema.columns
-where data_type = 'datetime' and table_name not like 'innodb_%';
+where data_type = 'datetime' and table_name not like 'innodb_%'
+order by binary table_name, ordinal_position;
#
# Bug#8164 subquery with INFORMATION_SCHEMA.COLUMNS, 100 % CPU
@@ -852,7 +867,7 @@ drop table t1;
use mysql;
INSERT INTO `proc` VALUES ('test','','PROCEDURE','','SQL','CONTAINS_SQL',
'NO','DEFINER','','','BEGIN\r\n \r\nEND','root@%','2006-03-02 18:40:03',
-'2006-03-02 18:40:03','','','utf8','utf8_general_ci','utf8_general_ci','n/a');
+'2006-03-02 18:40:03','','','utf8','utf8_general_ci','utf8_general_ci','n/a', 'NONE');
select routine_name from information_schema.routines where ROUTINE_SCHEMA='test';
delete from proc where name='';
use test;
@@ -870,7 +885,7 @@ connect (con16681,localhost,mysqltest_1,,test);
connection con16681;
select * from information_schema.views
-where table_name='v1' or table_name='v2';
+where table_name='v1' or table_name='v2' order by table_name;
connection default;
disconnect con16681;
drop view v1, v2;
@@ -884,7 +899,7 @@ set @a:= '.';
create table t1(f1 char(5));
create table t2(f1 char(5));
select concat(@a, table_name), @a, table_name
-from information_schema.tables where table_schema = 'test';
+from information_schema.tables where table_schema = 'test' order by table_name;
drop table t1,t2;
@@ -996,7 +1011,8 @@ create table t2 (f1 int(11), f2 int(11));
select table_name from information_schema.tables
where table_schema = 'test' and table_name not in
(select table_name from information_schema.columns
- where table_schema = 'test' and column_name = 'f3');
+ where table_schema = 'test' and column_name = 'f3')
+order by table_name;
drop table t1,t2;
@@ -1007,7 +1023,7 @@ create table t1(f1 int);
create view v1 as select f1+1 as a from t1;
create table t2 (f1 int, f2 int);
create view v2 as select f1+1 as a, f2 as b from t2;
-select table_name, is_updatable from information_schema.views;
+select table_name, is_updatable from information_schema.views order by table_name;
#
# Note: we can perform 'delete' for non updatable view.
#
@@ -1507,9 +1523,9 @@ let $wait_condition=
--source include/wait_condition.inc
--echo # These statements should not be blocked by pending lock requests
select table_name, column_name, data_type from information_schema.columns
- where table_schema = 'test' and table_name in ('t1', 't2');
+ where table_schema = 'test' and table_name in ('t1', 't2') order by table_name, column_name;
select table_name, auto_increment from information_schema.tables
- where table_schema = 'test' and table_name in ('t1', 't2');
+ where table_schema = 'test' and table_name in ('t1', 't2') order by table_name;
connection con3726_1;
unlock tables;
connection con3726_2;
@@ -1671,14 +1687,14 @@ let $wait_condition=
--echo # Issue query to I_S which will open 't0' and get
--echo # blocked on 't1' because of RENAME.
---send select table_name, auto_increment from information_schema.tables where table_schema='mysqltest'
+--send select table_name, auto_increment from information_schema.tables where table_schema='mysqltest' and table_name='t0' union select table_name, auto_increment from information_schema.tables where table_schema='mysqltest' and table_name<>'t0' order by table_name
connect (con12828477_3, localhost, root,,mysqltest);
--echo # Wait while the above SELECT is blocked.
let $wait_condition=
select count(*) = 1 from information_schema.processlist
where state = "Waiting for table metadata lock" and
- info = "select table_name, auto_increment from information_schema.tables where table_schema='mysqltest'";
+ info like '%t0%union%t0%';
--source include/wait_condition.inc
--echo #
diff --git a/mysql-test/t/information_schema2.test b/mysql-test/t/information_schema2.test
index 9810c5a0aae..d2fa3da2b5f 100644
--- a/mysql-test/t/information_schema2.test
+++ b/mysql-test/t/information_schema2.test
@@ -15,5 +15,5 @@ create table t2 (x int);
create table t3 (x int);
create table t4 AS select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE' ;
delete from t4 where table_name not in (select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE');
-select * from t4;
+select * from t4 order by table_name;
drop table t1, t2, t3, t4;
diff --git a/mysql-test/t/information_schema_db.test b/mysql-test/t/information_schema_db.test
index 70ad9b5b920..94908570969 100644
--- a/mysql-test/t/information_schema_db.test
+++ b/mysql-test/t/information_schema_db.test
@@ -100,10 +100,10 @@ create function f2 () returns int return (select max(i) from t2);
create view v2 as select f2();
drop table t2;
select table_name, table_type, table_comment from information_schema.tables
-where table_schema='test';
+where table_schema='test' order by table_name;
drop table t1;
select table_name, table_type, table_comment from information_schema.tables
-where table_schema='test';
+where table_schema='test' order by table_name;
drop function f1;
drop function f2;
drop view v1, v2;
diff --git a/mysql-test/t/information_schema_inno.test b/mysql-test/t/information_schema_inno.test
index 9a9658e9027..3cdbb8111d9 100644
--- a/mysql-test/t/information_schema_inno.test
+++ b/mysql-test/t/information_schema_inno.test
@@ -16,8 +16,10 @@ FOREIGN KEY (t1_id) REFERENCES t1(id) ON UPDATE CASCADE) ENGINE=INNODB;
CREATE TABLE t3 (id INT PRIMARY KEY, t2_id INT, INDEX par_ind (t2_id),
FOREIGN KEY (id, t2_id) REFERENCES t2(t1_id, id) ON DELETE CASCADE) ENGINE=INNODB;
+--sorted_result
select * from information_schema.TABLE_CONSTRAINTS where
TABLE_SCHEMA= "test";
+--sorted_result
select * from information_schema.KEY_COLUMN_USAGE where
TABLE_SCHEMA= "test";
@@ -45,6 +47,7 @@ CREATE TABLE t5(b1 INT, b2 INT, INDEX (b1, b2),
FOREIGN KEY (b1, b2) REFERENCES t4(b1, b2)
ON UPDATE RESTRICT ON DELETE CASCADE) ENGINE=INNODB;
+--sorted_result
select a.CONSTRAINT_SCHEMA, b.TABLE_NAME, CONSTRAINT_TYPE,
b.CONSTRAINT_NAME, UNIQUE_CONSTRAINT_SCHEMA, UNIQUE_CONSTRAINT_NAME,
MATCH_OPTION, UPDATE_RULE, DELETE_RULE, b.REFERENCED_TABLE_NAME
@@ -74,7 +77,8 @@ create table `t-1` (
use test;
select referenced_table_schema, referenced_table_name
from information_schema.key_column_usage
-where constraint_schema = 'db-1';
+where constraint_schema = 'db-1'
+order by referenced_table_schema, referenced_table_name;
drop database `db-1`;
#
diff --git a/mysql-test/t/information_schema_part.test b/mysql-test/t/information_schema_part.test
index ea88f364c07..62fba4f53d8 100644
--- a/mysql-test/t/information_schema_part.test
+++ b/mysql-test/t/information_schema_part.test
@@ -63,7 +63,7 @@ subpartition by key (a)
subpartition x22 tablespace t2)
);
--replace_column 16 # 19 # 20 #
-select * from information_schema.partitions where table_schema="test";
+select * from information_schema.partitions where table_schema="test" order by table_name, partition_name;
drop table t1,t2;
create table t1 (
diff --git a/mysql-test/t/insert_update.test b/mysql-test/t/insert_update.test
index 7234973eeb8..06e16be84d7 100644
--- a/mysql-test/t/insert_update.test
+++ b/mysql-test/t/insert_update.test
@@ -22,9 +22,9 @@ SELECT * FROM t1;
INSERT t1 SET a=5 ON DUPLICATE KEY UPDATE b=0;
SELECT * FROM t1;
INSERT t1 VALUES (2,1,11), (7,4,40) ON DUPLICATE KEY UPDATE c=c+VALUES(a);
-SELECT *, VALUES(a) FROM t1;
-explain extended SELECT *, VALUES(a) FROM t1;
-explain extended select * from t1 where values(a);
+SELECT *, VALUE(a) FROM t1;
+explain extended SELECT *, VALUE(a) FROM t1;
+explain extended select * from t1 where value(a);
DROP TABLE t1;
#
@@ -79,7 +79,7 @@ SELECT * FROM t1;
--error ER_NON_UNIQ_ERROR
INSERT t1 SELECT a,b,c FROM t2 WHERE d=2 ON DUPLICATE KEY UPDATE c=c+VALUES(a);
INSERT t1 SELECT a,b,c FROM t2 WHERE d=2 ON DUPLICATE KEY UPDATE c=t1.c+VALUES(t1.a);
-SELECT *, VALUES(a) FROM t1;
+SELECT *, VALUE(a) FROM t1;
DROP TABLE t1;
DROP TABLE t2;
diff --git a/mysql-test/t/invisible_binlog.test b/mysql-test/t/invisible_binlog.test
new file mode 100644
index 00000000000..654afcc39c3
--- /dev/null
+++ b/mysql-test/t/invisible_binlog.test
@@ -0,0 +1,32 @@
+--source include/master-slave.inc
+
+--connection master
+create table t1(a int , b int invisible);
+insert into t1 values(1);
+insert into t1(a,b) values(2,2);
+select a,b from t1;
+desc t1;
+
+create table t2(a int , b int invisible default 5);
+insert into t2 values(1);
+insert into t2(a,b) values(2,2);
+select a,b from t2;
+desc t2;
+
+
+--sync_slave_with_master
+select * from t1;
+select a,b from t1;
+desc t1;
+show create table t1;
+
+select * from t2;
+select a,b from t2;
+desc t2;
+show create table t2;
+
+
+--connection master
+drop table t1,t2;
+
+--source include/rpl_end.inc
diff --git a/mysql-test/t/invisible_field.test b/mysql-test/t/invisible_field.test
new file mode 100644
index 00000000000..884abb1238d
--- /dev/null
+++ b/mysql-test/t/invisible_field.test
@@ -0,0 +1,240 @@
+FLUSH STATUS;
+create table t1(abc int primary key, xyz int invisible);
+SHOW STATUS LIKE 'Feature_invisible_columns';
+desc t1;
+show create table t1;
+select TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,EXTRA from INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA='test' and TABLE_NAME='t1';
+drop table t1;
+--error ER_TABLE_MUST_HAVE_COLUMNS
+create table t1(a1 int invisible);
+--error ER_PARSE_ERROR
+create table t1(a1 blob,invisible(a1));
+--error ER_INVISIBLE_NOT_NULL_WITHOUT_DEFAULT
+create table t1(a1 int primary key invisible ,a2 int unique invisible , a3 blob,a4 int not null invisible unique);
+--error ER_TABLE_MUST_HAVE_COLUMNS
+create table t1(abc int not null invisible);
+--echo MDEV-14849 CREATE + ALTER with user-invisible columns produce invalid table definition
+create or replace table t1 (pk int auto_increment primary key invisible, i int);
+--error ER_INVISIBLE_NOT_NULL_WITHOUT_DEFAULT
+alter table t1 modify pk int invisible;
+drop table t1;
+create table t1(a int invisible, b int);
+#should automatically add null
+insert into t1 values(1);
+insert into t1(a) values(2);
+insert into t1(b) values(3);
+insert into t1(a,b) values(5,5);
+select * from t1;
+select a,b from t1;
+delete from t1;
+insert into t1 values(1),(2),(3),(4);
+select * from t1;
+select a from t1;
+drop table t1;
+
+--echo #more complex case of invisible
+create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
+desc t1;
+insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
+select * from t1;
+select a,b,c,d,e,f from t1;
+drop table t1;
+
+--echo #more complex case of invisible with sql_mode=NO_AUTO_VALUE_ON_ZERO
+set sql_mode='NO_AUTO_VALUE_ON_ZERO';
+create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
+desc t1;
+insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
+select * from t1;
+select a,b,c,d,e,f from t1;
+drop table t1;
+set sql_mode='';
+
+--error ER_PARSE_ERROR
+create table sdsdsd(a int , b int, invisible(a,b));
+create table t1(a int,abc int as (a mod 3) virtual invisible);
+desc t1;
+--error ER_WRONG_VALUE_COUNT_ON_ROW
+insert into t1 values(1,default);
+insert into t1 values(1),(22),(233);
+select * from t1;
+select a,abc from t1;
+drop table t1;
+create table t1(abc int primary key invisible auto_increment, a int);
+desc t1;
+show create table t1;
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t1 values(3);
+select * from t1;
+select abc,a from t1;
+delete from t1;
+insert into t1 values(1),(2),(3),(4),(6);
+select abc,a from t1;
+drop table t1;
+create table t1(abc int);
+--error ER_TABLE_MUST_HAVE_COLUMNS
+alter table t1 change abc ss int invisible;
+alter table t1 add column xyz int;
+alter table t1 modify column abc int ;
+desc t1;
+--error ER_WRONG_VALUE_COUNT_ON_ROW
+insert into t1 values(22);
+alter table t1 modify column abc int invisible;
+desc t1;
+insert into t1 values(12);
+drop table t1;
+--echo #some test on copy table structure with table data;
+--echo #table with invisible fields and unique keys;
+create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
+desc t1;
+insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
+select * from t1;
+select a,b,c,d,e,f from t1;
+--echo #this won't copy invisible fields and keys;
+create table t2 as select * from t1;
+desc t2;
+select * from t2;
+--error ER_BAD_FIELD_ERROR
+select a,b,c,d,e,f from t2;
+drop table t2;
+--echo #now this will copy invisible fields
+create table t2 as select a,b,c,d,e,f from t1;
+desc t2;
+select * from t2;
+select a,b,c,d,e,f from t2;
+drop table t2,t1;
+--echo #some test related to copy of data from one table to another;
+create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
+insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
+select a,b,c,d,e,f from t1;
+create table t2(a int , b int invisible , c int invisible , d blob , e int unique, f int);
+insert into t2 select * from t1;
+select a,b,c,d,e,f from t2;
+truncate t2;
+insert into t2 (a,b,c,d,e,f) select a,b,c,d,e,f from t1;
+select a,b,c,d,e,f from t2;
+truncate t2;
+drop table t1,t2;
+--echo #some test related to creating view on table with invisible column;
+create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
+insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
+create view v as select * from t1;
+desc v;
+select * from v;
+--echo #v does not have invisible column;
+--error ER_BAD_FIELD_ERROR
+select a,b,c,d,e,f from v;
+insert into v values(1,21,32,4);
+select * from v;
+--error ER_BAD_FIELD_ERROR
+insert into v(a,b,c,d,e,f) values(1,12,3,4,5,6);
+drop view v;
+create view v as select a,b,c,d,e,f from t1;
+desc v;
+select * from v;
+--echo #v does have invisible column but they aren't invisible anymore.
+select a,b,c,d,e,f from v;
+insert into v values(1,26,33,4,45,66);
+select a,b,c,d,e,f from v;
+insert into v(a,b,c,d,e,f) values(1,32,31,41,5,6);
+select a,b,c,d,e,f from v;
+drop view v;
+drop table t1;
+--echo #now invisible column in where and some join query
+create table t1 (a int unique , b int invisible unique, c int unique invisible);
+insert into t1(a,b,c) values(1,1,1);
+insert into t1(a,b,c) values(2,2,2);
+insert into t1(a,b,c) values(3,3,3);
+insert into t1(a,b,c) values(4,4,4);
+insert into t1(a,b,c) values(21,21,26);
+insert into t1(a,b,c) values(31,31,35);
+insert into t1(a,b,c) values(41,41,45);
+insert into t1(a,b,c) values(22,22,24);
+insert into t1(a,b,c) values(32,32,33);
+insert into t1(a,b,c) values(42,42,43);
+explain select * from t1 where b=3;
+select * from t1 where b=3;
+explain select * from t1 where c=3;
+select * from t1 where c=3;
+create table t2 as select a,b,c from t1;
+desc t2;
+explain select * from t1,t2 where t1.b = t2.c and t1.c = t2.b;
+select * from t1,t2 where t1.b = t2.c and t1.c = t2.b;
+drop table t1,t2;
+--echo #Unhide invisible columns
+create table t1 (a int primary key, b int invisible, c int invisible unique);
+show create table t1;
+desc t1;
+alter table t1 modify column b int;
+desc t1;
+alter table t1 change column c d int;
+desc t1;
+drop table t1;
+SHOW STATUS LIKE 'Feature_invisible_columns';
+--echo #invisible is non reserved
+create table t1(a int unique , invisible int invisible, c int );
+desc t1;
+alter table t1 change column invisible hid int invisible;
+desc t1;
+drop table t1;
+##Internal temp table
+CREATE TABLE t1 (b int);
+INSERT t1 values(1);
+INSERT t1 values(2);
+INSERT t1 values(3);
+INSERT t1 values(4);
+INSERT t1 values(5);
+CREATE TABLE t2 (a int invisible) SELECT * FROM t1;
+select * from t2 order by b;
+select a,b from t2 order by b;
+CREATE TABLE t3 (b int, a int invisible) SELECT * FROM t1;
+select * from t3 order by b;
+select a,b from t3 order by b;
+--error ER_TABLE_MUST_HAVE_COLUMNS
+CREATE TABLE t4 (b int invisible) SELECT * FROM t1;
+--error ER_TABLE_MUST_HAVE_COLUMNS
+CREATE TABLE t5 (a int invisible) SELECT b as a FROM t1;
+drop table t1,t2,t3;
+
+create table t1 (a int , b int invisible default 3, c int , d int invisible default 6);
+DELIMITER //;
+CREATE PROCEDURE
+insert_t1(a int, b int)
+MODIFIES SQL DATA
+insert into t1 values(a,b);
+//
+DELIMITER ;//
+call insert_t1(1,1);
+call insert_t1(2,2);
+select * from t1 order by a;
+select a,b,c,d from t1 order by a;
+DROP PROCEDURE insert_t1;
+delete from t1;
+prepare insert_1 from "insert into t1 values(@a,@c)";
+prepare insert_2 from "insert into t1(a,b,c) values(@a,@b,@c)";
+set @a=1, @c=1;
+execute insert_1;
+set @a=2,@b=2, @c=2;
+execute insert_2;
+select a,b,c,d from t1 order by a;
+drop table t1;
+#MDEV-15085 Non constant default getting Null values
+create table t1(a int default 5 invisible, b int);
+create table t2(a int default (b+11) invisible, b int);
+insert into t1 values(1);
+select a,b from t1;
+insert into t2 values(1);
+select a,b from t2;
+drop table t1,t2;
+
+#
+# natural join and using
+#
+create table t1 (a int invisible, b int, c int);
+create table t2 (a int, b int, d int);
+insert t1 (a,b,c) values (0,2,3), (10, 20, 30);
+insert t2 (a,b,d) values (1,2,4), (10, 30, 40);
+select * from t1 join t2 using (a);
+select * from t1 natural join t2;
+drop table t1, t2;
diff --git a/mysql-test/t/invisible_field_debug.test b/mysql-test/t/invisible_field_debug.test
new file mode 100644
index 00000000000..8674620e055
--- /dev/null
+++ b/mysql-test/t/invisible_field_debug.test
@@ -0,0 +1,272 @@
+--source include/have_debug.inc
+##TEST for invisible coloumn level 2
+set @old_debug= @@debug_dbug;
+create table t_tmp(a int, b int);
+set debug_dbug= "+d,test_pseudo_invisible";
+create table t1(a int);
+set debug_dbug=@old_debug;
+insert into t1 values(1);
+desc t1;
+show create table t1;
+select a , invisible from t1;
+##field should not be resolved in fill_record
+--error ER_BAD_FIELD_ERROR
+insert into t1(a, invisible) values(99,99);
+--error ER_BAD_FIELD_ERROR
+insert into t1(invisible) values(99);
+insert into t_tmp select a, invisible from t1;
+--error ER_WRONG_VALUE_COUNT_ON_ROW
+insert into t1 select * from t_tmp;
+--error ER_BAD_FIELD_ERROR
+insert into t1(a,invisible) select * from t_tmp;
+
+select a , invisible from t1;
+insert into t1 values (5), (invisible+1);
+select a , invisible from t1;
+delete from t1 where a > 1;
+
+##Update
+update t1 set a = invisible where a=1;
+select a , invisible from t1;
+update t1 set a = (select invisible+100 from t1 limit 1) where a=(select a from t1 limit 1);
+select a , invisible from t1;
+
+--error ER_BAD_FIELD_ERROR
+update t1 set invisible = 23 where a=(select a from t1 limit 1);
+--error ER_BAD_FIELD_ERROR
+update t1 set invisible = 101 where a=(select a from t1 limit 1);
+--error ER_BAD_FIELD_ERROR
+update t1 set invisible = (select invisible+100 from t1 limit 1) where a=(select invisible from t1 limit 1);
+select a , invisible from t1;
+##if changed then error
+set @a=12;
+--error ER_BAD_FIELD_ERROR
+update t1 set invisible = (select @a from dual) where a=(select a from t1 limit 1);
+select a , invisible from t1;
+--error ER_BAD_FIELD_ERROR
+update t1 set invisible = (select invisible+100 from t1 limit 1) where a=(select a from t1 limit 1);
+select a , invisible from t1;
+
+##set
+set @a=(select invisible from t1 limit 1);
+select @a from dual;
+--error ER_BAD_FIELD_ERROR
+alter table t1 add constraint a check (invisible > 2);
+set debug_dbug= "+d,test_pseudo_invisible";
+--error ER_BAD_FIELD_ERROR
+create table t2(a int, b int as (invisible +2) virtual);
+create table t2(a int , b int);
+insert into t2 values(2,2);
+insert into t2 select a, invisible from t1;
+set debug_dbug=@old_debug;
+select * from t1;
+select invisible ,a from t1;
+drop table t1,t2,t_tmp;
+
+##TEST for invisible coloumn level 3
+
+set debug_dbug= "+d,test_completely_invisible";
+create table t1(a int);
+set debug_dbug=@old_debug;
+
+desc t1;
+show create table t1;
+insert into t1 values(1);
+select * from t1;
+
+--error ER_BAD_FIELD_ERROR
+select invisible ,a from t1;
+
+set debug_dbug= "+d,test_completely_invisible";
+select invisible ,a from t1;
+set debug_dbug=@old_debug;
+
+create table t2 (invisible int);
+--error ER_BAD_FIELD_ERROR
+select * from t1 join t2 using (invisible);
+--error ER_BAD_FIELD_ERROR
+select * from t2 join t1 using (invisible);
+
+insert t2 values (8),(9);
+select * from t1 natural join t2;
+select * from t2 natural join t1;
+
+drop table t1, t2;
+
+##TEST for Alter table for invisibleness level 2
+
+set debug_dbug= "+d,test_pseudo_invisible";
+create table t1(a int);
+set debug_dbug=@old_debug;
+
+desc t1;
+insert into t1 values(1);
+select * from t1;
+select invisible ,a from t1;
+
+## Alter should not be possible
+
+--error ER_BAD_FIELD_ERROR
+ALTER table t1 change invisible b int;
+select * from t1;
+select invisible ,a from t1;
+
+--error ER_BAD_FIELD_ERROR
+ALTER table t1 modify invisible char;
+select * from t1;
+select invisible ,a from t1;
+
+--error ER_CANT_DROP_FIELD_OR_KEY
+ALTER table t1 drop invisible;
+select * from t1;
+select invisible ,a from t1;
+
+--error ER_DUP_FIELDNAME
+ALTER table t1 add invisible int;
+select * from t1;
+select invisible ,a from t1;
+
+ALTER table t1 add invisible2 int default 2;
+select * from t1;
+select invisible ,a from t1;
+
+--error ER_BAD_FIELD_ERROR
+create trigger trg before insert on t1 for each row set new.invisible=1;
+create trigger trg before insert on t1 for each row set @a:=new.invisible;
+
+drop table t1;
+
+##TEST for Alter table for invisibleness level 3
+
+set debug_dbug= "+d,test_completely_invisible";
+create table t1(a int);
+
+set debug_dbug=@old_debug;
+--error ER_BAD_FIELD_ERROR
+create trigger trg before insert on t1 for each row set new.invisible=1;
+--error ER_BAD_FIELD_ERROR
+create trigger trg before insert on t1 for each row set @a:=new.invisible;
+set debug_dbug= "+d,test_completely_invisible";
+
+desc t1;
+insert into t1 values(1);
+select * from t1;
+select invisible ,a from t1;
+
+## Alter should not be possible
+
+--error ER_BAD_FIELD_ERROR
+ALTER table t1 change invisible b int;
+select * from t1;
+select invisible ,a from t1;
+
+--error ER_BAD_FIELD_ERROR
+ALTER table t1 modify invisible char;
+select * from t1;
+select invisible ,a from t1;
+
+--error ER_CANT_DROP_FIELD_OR_KEY
+ALTER table t1 drop invisible;
+select * from t1;
+select invisible ,a from t1;
+
+ALTER table t1 add invisible int;
+select * from t1;
+select invisible1, invisible ,a from t1;
+
+ALTER table t1 add hid int default 2;
+select * from t1;
+select invisible ,a from t1;
+
+drop table t1;
+set debug_dbug=@old_debug;
+
+## Test Index on USER_DEFINED_INVISIBLE
+
+Create table t1( a int default(99) invisible, b int);
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t1 values(3);
+insert into t1 values(4);
+select * from t1 order by b;
+alter table t1 add index(a);
+alter table t1 add index(a,b);
+show index from t1;
+drop table t1;
+
+## Test Index on PSEUDO_invisible_INVISIBLE
+
+set debug_dbug= "+d,test_pseudo_invisible";
+Create table t1( a int default(99) invisible, b int);
+
+--error ER_KEY_COLUMN_DOES_NOT_EXITS
+Create table t2( a int default(99) invisible, b int, unique(invisible));
+
+set debug_dbug=@old_debug;
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t1 values(3);
+insert into t1 values(4);
+select * from t1 order by b;
+select invisible, a, b from t1 order by b;
+--error ER_KEY_COLUMN_DOES_NOT_EXITS
+alter table t1 add index(invisible);
+--error ER_KEY_COLUMN_DOES_NOT_EXITS
+alter table t1 add index(b,invisible);
+show index from t1;
+drop table t1;
+
+## Test Index on COMPLETELY_INVISIBLE
+
+set debug_dbug= "+d,test_completely_invisible";
+Create table t1( a int default(99) invisible, b int);
+
+--error ER_KEY_COLUMN_DOES_NOT_EXITS
+Create table t2( a int default(99) invisible, b int, unique(invisible));
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t1 values(3);
+insert into t1 values(4);
+select * from t1 order by b;
+select invisible, a, b from t1 order by b;
+set debug_dbug=@old_debug;
+
+--error ER_KEY_COLUMN_DOES_NOT_EXITS
+alter table t1 add index(invisible);
+--error ER_KEY_COLUMN_DOES_NOT_EXITS
+alter table t1 add index(b,invisible);
+show index from t1;
+drop table t1;
+## Sytem Generated index on invisible column
+set debug_dbug= "+d,test_completely_invisible,test_invisible_index";
+## index name will be invisible
+Create table t1( a int default(99) , b int,c int, index(b));
+set debug_dbug=@old_debug;
+Show index from t1;
+select * from INFORMATION_SCHEMA.STATISTICS where TABLE_SCHEMA ='test' and table_name='t1';
+show create table t1;
+insert into t1 values(1,1,1);
+insert into t1 values(2,2,2);
+insert into t1 values(3,3,3);
+insert into t1 values(4,4,4);
+set debug_dbug= "+d,test_completely_invisible,test_invisible_index";
+select invisible, a ,b from t1 order by b;
+explain select * from t1 where invisible =9;
+alter table t1 add x int default 3;
+select invisible, a ,b from t1;
+set debug_dbug=@old_debug;
+Show index from t1;
+## Sytem Generated Index modification
+--error ER_KEY_COLUMN_DOES_NOT_EXITS
+create index a1 on t1(invisible);
+set debug_dbug= "+d,test_completely_invisible,test_invisible_index";
+## index does not exist for user
+--error ER_CANT_DROP_FIELD_OR_KEY
+drop index invisible on t1;
+explain select * from t1 where invisible =9;
+## index name will be changed
+create index invisible on t1(c);
+explain select * from t1 where invisible =9;
+show indexes in t1;
+drop table t1;
+set @old_debug= @@debug_dbug;
diff --git a/mysql-test/t/mysql_client_test-master.opt b/mysql-test/t/mysql_client_test-master.opt
index fcaf2b69fbc..8d49abf6a10 100644
--- a/mysql-test/t/mysql_client_test-master.opt
+++ b/mysql-test/t/mysql_client_test-master.opt
@@ -2,3 +2,4 @@
--general-log-file=$MYSQLTEST_VARDIR/log/master.log
--log-output=FILE,TABLE
--max-allowed-packet=32000000
+--proxy-protocol-networks=*
diff --git a/mysql-test/t/mysql_client_test.test b/mysql-test/t/mysql_client_test.test
index bf5331ca4f9..260473aa0d0 100644
--- a/mysql-test/t/mysql_client_test.test
+++ b/mysql-test/t/mysql_client_test.test
@@ -7,6 +7,7 @@ SET @old_general_log= @@global.general_log;
SET @old_slow_query_log= @@global.slow_query_log;
call mtr.add_suppression(" Error reading file './client_test_db/test_frm_bug.frm'");
+call mtr.add_suppression(" IP address .* could not be resolved");
# We run with different binaries for normal and --embedded-server
#
diff --git a/mysql-test/t/mysql_client_test_comp-master.opt b/mysql-test/t/mysql_client_test_comp-master.opt
index 783093c900b..6c4a5e4c782 100644
--- a/mysql-test/t/mysql_client_test_comp-master.opt
+++ b/mysql-test/t/mysql_client_test_comp-master.opt
@@ -1,2 +1,3 @@
--loose-enable-performance-schema
--max-allowed-packet=32000000
+--proxy-protocol-networks=::1/32,127.0.0.0/8,localhost
diff --git a/mysql-test/t/mysql_client_test_comp.test b/mysql-test/t/mysql_client_test_comp.test
index 0a6b0ba1130..13a9d4944a4 100644
--- a/mysql-test/t/mysql_client_test_comp.test
+++ b/mysql-test/t/mysql_client_test_comp.test
@@ -9,7 +9,7 @@
SET @old_slow_query_log= @@global.slow_query_log;
call mtr.add_suppression(" Error reading file './client_test_db/test_frm_bug.frm'");
-
+call mtr.add_suppression(" IP address .* could not be resolved");
--exec echo "$MYSQL_CLIENT_TEST" > $MYSQLTEST_VARDIR/log/mysql_client_test_comp.out.log 2>&1
--exec $MYSQL_CLIENT_TEST --getopt-ll-test=25600M >> $MYSQLTEST_VARDIR/log/mysql_client_test_comp.out.log 2>&1
diff --git a/mysql-test/t/mysql_client_test_nonblock-master.opt b/mysql-test/t/mysql_client_test_nonblock-master.opt
index 5775e707c5f..a39d0089562 100644
--- a/mysql-test/t/mysql_client_test_nonblock-master.opt
+++ b/mysql-test/t/mysql_client_test_nonblock-master.opt
@@ -1,2 +1,3 @@
--general-log --general-log-file=$MYSQLTEST_VARDIR/log/master.log --log-output=FILE,TABLE
--max-allowed-packet=32000000
+--proxy-protocol-networks=::1,::ffff:127.0.0.1/97,localhost
diff --git a/mysql-test/t/mysql_client_test_nonblock.test b/mysql-test/t/mysql_client_test_nonblock.test
index 51263854e58..31de14e4178 100644
--- a/mysql-test/t/mysql_client_test_nonblock.test
+++ b/mysql-test/t/mysql_client_test_nonblock.test
@@ -6,6 +6,7 @@
SET @old_general_log= @@global.general_log;
SET @old_slow_query_log= @@global.slow_query_log;
call mtr.add_suppression(" Error reading file './client_test_db/test_frm_bug.frm'");
+call mtr.add_suppression(" IP address .* could not be resolved");
# We run with different binaries for normal and --embedded-server
#
diff --git a/mysql-test/t/mysql_upgrade.test b/mysql-test/t/mysql_upgrade.test
index a19be30e68f..0171fe6c7ba 100644
--- a/mysql-test/t/mysql_upgrade.test
+++ b/mysql-test/t/mysql_upgrade.test
@@ -219,3 +219,25 @@ DROP TABLE test.t1;
SET GLOBAL enforce_storage_engine=NULL;
--echo End of 10.1 tests
+
+--echo Start of 10.3 tests
+
+--echo #
+--echo # Ensure that mysql_upgrade correctly sets truncate_versioning_priv
+--echo # on upgrade from 10.2
+--echo #
+
+flush privileges;
+CREATE USER 'user3'@'%';
+GRANT USAGE ON *.* TO 'user3'@'%';
+GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%';
+alter table mysql.user drop column Delete_history_priv;
+alter table mysql.db drop column Delete_history_priv;
+--source include/restart_mysqld.inc
+--echo Run mysql_upgrade with all privileges on a user
+--exec $MYSQL_UPGRADE --force --silent 2>&1
+--remove_file $MYSQLD_DATADIR/mysql_upgrade_info
+flush privileges;
+SHOW GRANTS FOR 'user3'@'%';
+DROP USER 'user3'@'%';
+update mysql.db set Delete_history_priv='Y' where db like 'test%';
diff --git a/mysql-test/t/mysql_upgrade_noengine.test b/mysql-test/t/mysql_upgrade_noengine.test
index cfc3a1dc406..1d65e7ffa1c 100644
--- a/mysql-test/t/mysql_upgrade_noengine.test
+++ b/mysql-test/t/mysql_upgrade_noengine.test
@@ -19,16 +19,19 @@ install soname 'ha_archive';
vertical_results;
create table t1 (a int) engine=blackhole;
create table t2 (a int) engine=archive;
-select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t1';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t2';
flush tables;
uninstall plugin blackhole;
uninstall plugin archive;
-select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t1';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t2';
# upgrade from 10.1 - engines aren't enabled
exec $MYSQL_UPGRADE 2>&1;
-select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t1';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t2';
# pretend it's an upgrade from 10.0
alter table mysql.user drop column default_role, drop column max_statement_time;
@@ -41,14 +44,16 @@ EOF
# still upgrade from 10.1
exec $MYSQL_UPGRADE 2>&1;
-select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t1';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t2';
alter table mysql.user drop column default_role, drop column max_statement_time;
remove_file $datadir/mysql_upgrade_info;
# upgrade from 10.0 - engines are enabled
exec $MYSQL_UPGRADE 2>&1;
-select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t1';
+select table_catalog, table_schema, table_name, table_type, engine, row_format, table_rows, data_length, table_comment from information_schema.tables where table_schema='test' and table_name='t2';
drop table t1, t2;
diff --git a/mysql-test/t/mysqld--help.test b/mysql-test/t/mysqld--help.test
index 1613f8e7a4f..27d3286685b 100644
--- a/mysql-test/t/mysqld--help.test
+++ b/mysql-test/t/mysqld--help.test
@@ -19,7 +19,7 @@ exec $MYSQLD_BOOTSTRAP_CMD --symbolic-links=0 --lower-case-table-names=1 --help
perl;
# Variables which we don't want to display in the result file since
# their paths may vary:
- @skipvars=qw/basedir open-files-limit general-log-file log plugin-dir
+ @skipvars=qw/basedir open-files-limit general-log-file log plugin-dir plugin-maturity
log-slow-queries pid-file slow-query-log-file log-basename
datadir slave-load-tmpdir tmpdir socket thread-pool-size
large-files-support lower-case-file-system system-time-zone
@@ -30,7 +30,7 @@ perl;
feedback debug temp-pool ssl des-key-file xtradb sequence
thread-concurrency super-large-pages mutex-deadlock-detector
connect null-audit aria oqgraph sphinx thread-handling
- test-sql-discovery rpl-semi-sync query-cache-info
+ test-sql-discovery query-cache-info in-predicate-conversion-threshold
query-response-time metadata-lock-info locales unix-socket
wsrep file-key-management cracklib-password-check user-variables/;
diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test
index 9f74f4ad9c0..6dde5aa7bc6 100644
--- a/mysql-test/t/mysqldump.test
+++ b/mysql-test/t/mysqldump.test
@@ -1453,7 +1453,7 @@ insert into u1 values (4);
create view v1 (c1) as select * from t1;
# Backup should not fail for Bug#21527. Flush priviliges test begins.
---exec $MYSQL_DUMP --skip-comments --add-drop-table --flush-privileges --ignore-table=mysql.general_log --ignore-table=mysql.slow_log --databases mysqldump_myDB mysql > $MYSQLTEST_VARDIR/tmp/bug21527.sql
+--exec $MYSQL_DUMP --skip-comments --add-drop-table --flush-privileges --ignore-table=mysql.general_log --ignore-table=mysql.slow_log --ignore-table=mysql.transaction_registry --databases mysqldump_myDB mysql > $MYSQLTEST_VARDIR/tmp/bug21527.sql
# Clean up
connection root;
@@ -2646,3 +2646,46 @@ CREATE TRIGGER tt1_t1 BEFORE INSERT ON t1 FOR EACH ROW
INSERT INTO t1 (a) VALUES (1),(2),(3);
--exec $MYSQL_DUMP --triggers --no-data --no-create-info --add-drop-trigger --skip-comments --databases test
DROP TABLE t1;
+--echo #
+--echo # Test for Invisible columns
+--echo #
+create database d;
+use d;
+
+--echo # Invisble field table
+create table t1(a int , b int invisible);
+insert into t1 values(1);
+insert into t1(a,b) values(1,2);
+
+--echo # not invisible field table --complete-insert wont be used
+create table t2(a int , b int);
+insert into t2(a,b) values(1,2);
+insert into t2(a,b) values(1,2);
+
+--echo # Invisble field table
+create table t3(invisible int , `a b c & $!@#$%^&*( )` int invisible default 4, `ds=~!@ \# $% ^ & * ( ) _ - = +` int invisible default 5);
+insert into t3 values(1);
+insert into t3 values(5);
+insert into t3 values(2);
+insert into t3(`invisible`, `a b c & $!@#$%^&*( )`, `ds=~!@ \# $% ^ & * ( ) _ - = +` ) values(1,2,3);
+CREATE TABLE t4(ËÃÃŒÃÎËÃ1 INT);
+insert into t4 values(1);
+--exec $MYSQL_DUMP --compact d
+
+--echo #Check side effect on --complete insert
+--exec $MYSQL_DUMP --compact --complete-insert d
+--echo #Check xml
+--exec $MYSQL_DUMP --skip-create-options --skip-comments -X d
+
+#import data
+--exec $MYSQL_DUMP --skip-comments d > $MYSQLTEST_VARDIR/tmp/invisible_dump.sql
+DROP table t1,t2,t3;
+
+--exec $MYSQL d < $MYSQLTEST_VARDIR/tmp/invisible_dump.sql
+
+select * from t1;
+select a,b from t1;
+select * from t2;
+select * from t3;
+desc t3;
+drop database d;
diff --git a/mysql-test/t/opt_tvc.test b/mysql-test/t/opt_tvc.test
new file mode 100644
index 00000000000..6b5ffae2f70
--- /dev/null
+++ b/mysql-test/t/opt_tvc.test
@@ -0,0 +1,342 @@
+#
+# MDEV-12176 Transform [NOT] IN predicate with long list of values INTO [NOT] IN subquery
+#
+source include/have_debug.inc;
+
+create table t1 (a int, b int);
+
+insert into t1
+values (1,2), (4,6), (9,7),
+ (1,1), (2,5), (7,8);
+
+create table t2 (a int, b int, c int);
+
+insert into t2
+values (1,2,3), (5,1,2), (4,3,7),
+ (8,9,0), (10,7,1), (5,5,1);
+
+create table t3 (a int, b varchar(16), index idx(a));
+insert into t3 values
+ (1, "abc"), (3, "egh"), (8, "axxx"), (10, "abc"),
+ (2, "ccw"), (8, "wqqe"), (7, "au"), (9, "waa"),
+ (3, "rass"), (9, "ert"), (9, "lok"), (8, "aww"),
+ (1, "todd"), (3, "rew"), (8, "aww"), (3, "sw"),
+ (11, "llk"), (7, "rbw"), (1, "sm"), (2, "jyp"),
+ (4, "yq"), (5, "pled"), (12, "ligin"), (12, "toww"),
+ (6, "mxm"), (15, "wanone"), (9, "sunqq"), (2, "abe");
+
+--echo # optimization is not used
+
+let $query= select * from t1 where a in (1,2);
+eval $query;
+eval explain extended $query;
+
+--echo # set minimum number of values in VALUEs list when optimization works to 2
+
+set @@in_predicate_conversion_threshold= 2;
+
+--echo # single IN-predicate in WHERE-part
+
+let $query= select * from t1 where a in (1,2);
+
+let $optimized_query=
+select * from t1
+where a in
+ (
+ select *
+ from (values (1),(2)) as tvc_0
+ );
+
+eval $query;
+eval $optimized_query;
+eval explain extended $query;
+eval explain extended $optimized_query;
+
+--echo # AND-condition with IN-predicates in WHERE-part
+
+let $query=
+select * from t1
+where a in (1,2) and
+ b in (1,5);
+
+let $optimized_query=
+select * from t1
+where a in
+(
+ select *
+ from (values (1),(2)) as tvc_0
+)
+and b in
+(
+ select *
+ from (values (1),(5)) as tvc_1
+);
+
+eval $query;
+eval $optimized_query;
+eval explain extended $query;
+eval explain extended $optimized_query;
+
+--echo # subquery with IN-predicate
+
+let $query=
+select * from t1
+where a in
+(
+ select a
+ from t2 where b in (3,4)
+);
+
+let $optimized_query=
+select * from t1
+where a in
+(
+ select a from t2
+ where b in
+ (
+ select *
+ from (values (3),(4)) as tvc_0
+ )
+);
+
+eval $query;
+eval $optimized_query;
+eval explain extended $query;
+eval explain extended $optimized_query;
+
+--echo # derived table with IN-predicate
+
+let $query=
+select * from
+(
+ select *
+ from t1
+ where a in (1,2)
+) as dr_table;
+
+let $optimized_query=
+select * from
+(
+ select *
+ from t1
+ where a in
+ (
+ select *
+ from (values (1),(2))
+ as tvc_0
+ )
+) as dr_table;
+
+eval $query;
+eval $optimized_query;
+eval explain extended $query;
+eval explain extended $optimized_query;
+
+--echo # non-recursive CTE with IN-predicate
+
+let $cte_query=
+with tvc_0 as
+(
+ select *
+ from t1
+ where a in (1,2)
+)
+select * from tvc_0;
+
+eval $cte_query;
+eval $optimized_query;
+eval explain extended $cte_query;
+eval explain extended $optimized_query;
+
+--echo # VIEW with IN-predicate
+
+create view v1 as
+ select *
+ from t1
+ where a in (1,2);
+
+create view v2 as
+ select *
+ from t1
+ where a in
+ (
+ select *
+ from (values (1),(2))
+ as tvc_0
+ )
+;
+
+let $query= select * from v1;
+let $optimized_query= select * from v2;
+
+eval $query;
+eval $optimized_query;
+eval explain extended $query;
+eval explain extended $optimized_query;
+
+drop view v1,v2;
+
+--echo # subselect defined by derived table with IN-predicate
+
+let $query=
+select * from t1
+where a in
+(
+ select 1
+ from
+ (
+ select *
+ from t1
+ where a in (1,2)
+ )
+ as dr_table
+);
+
+let $optimized_query=
+select * from t1
+where a in
+(
+ select 1
+ from
+ (
+ select *
+ from t1
+ where a in
+ (
+ select *
+ from (values (1),(2))
+ as tvc_0
+ )
+ )
+ as dr_table
+);
+
+eval $query;
+eval $optimized_query;
+eval explain extended $query;
+eval explain extended $optimized_query;
+
+--echo # derived table with IN-predicate and group by
+
+let $query=
+select * from
+(
+ select max(a),b
+ from t1
+ where b in (3,5)
+ group by b
+) as dr_table;
+
+let $optimized_query=
+select * from
+(
+ select max(a),b
+ from t1
+ where b in
+ (
+ select *
+ from (values (3),(5))
+ as tvc_0
+ )
+ group by b
+) as dr_table;
+
+eval $query;
+eval $optimized_query;
+eval explain extended $query;
+eval explain extended $optimized_query;
+
+--echo # prepare statement
+
+prepare stmt from "select * from t1 where a in (1,2)";
+execute stmt;
+execute stmt;
+deallocate prepare stmt;
+
+--echo # use inside out access from tvc rows
+
+let $query= select * from t3 where a in (1,4,10);
+set @@in_predicate_conversion_threshold= default;
+eval $query;
+eval explain extended $query;
+set @@in_predicate_conversion_threshold= 2;
+eval $query;
+eval explain extended $query;
+
+--echo # use vectors in IN predeicate
+
+set @@in_predicate_conversion_threshold= 4;
+
+let $query=
+select * from t1 where (a,b) in ((1,2),(3,4));
+
+eval $query;
+eval explain extended $query;
+set @@in_predicate_conversion_threshold= 2;
+
+--echo # trasformation works for the one IN predicate and doesn't work for the other
+
+set @@in_predicate_conversion_threshold= 5;
+
+let $query=
+select * from t2
+where (a,b) in ((1,2),(8,9)) and
+ (a,c) in ((1,3),(8,0),(5,1));
+
+eval $query;
+eval explain extended $query;
+set @@in_predicate_conversion_threshold= 2;
+
+--echo #
+--echo # mdev-14281: conversion of NOT IN predicate into subquery predicate
+--echo #
+
+let $query=
+select * from t1
+where (a,b) not in ((1,2),(8,9), (5,1));
+let $optimized_query=
+select * from t1
+where (a,b) not in (select * from (values (1,2),(8,9), (5,1)) as tvc_0);
+
+eval $query;
+eval $optimized_query;
+eval explain extended $query;
+eval explain extended $optimized_query;
+
+let $query=
+select * from t1
+where b < 7 and (a,b) not in ((1,2),(8,9), (5,1));
+eval $query;
+eval explain extended $query;
+
+let $query=
+select * from t2
+where (a,c) not in ((1,2),(8,9), (5,1));
+eval $query;
+eval explain extended $query;
+
+drop table t1, t2, t3;
+
+set @@in_predicate_conversion_threshold= default;
+
+--echo #
+--echo # MDEV-14947: conversion of TVC with only NULL values
+--echo #
+
+CREATE TABLE t1 (i INT);
+INSERT INTO t1 VALUES (3), (2), (7);
+
+let $q=
+SELECT * FROM t1 WHERE i IN (NULL, NULL, NULL, NULL, NULL);
+
+eval $q;
+eval EXPLAIN EXTENDED $q;
+
+SET in_predicate_conversion_threshold= 5;
+
+eval $q;
+eval EXPLAIN EXTENDED $q;
+
+SET in_predicate_conversion_threshold= default;
+
+DROP TABLE t1;
diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test
index dfb0966d5dd..7b7d1457426 100644
--- a/mysql-test/t/partition.test
+++ b/mysql-test/t/partition.test
@@ -445,6 +445,7 @@ INSERT INTO t1 VALUES (1,1,0), (1,1,1), (1,1,2), (1,1,53), (1,1,4), (1,1,5),
(1,19,1);
SELECT COUNT(*) FROM t1 WHERE b NOT IN ( 1,2,6,7,9,10,11 );
SELECT SUM(c) FROM t1 WHERE b NOT IN ( 1,2,6,7,9,10,11 );
+SELECT SUM(c+0.0) FROM t1 WHERE b NOT IN ( 1,2,6,7,9,10,11 );
ALTER TABLE t1 DROP INDEX b;
SELECT COUNT(*) FROM t1 WHERE b NOT IN ( 1,2,6,7,9,10,11 );
SELECT SUM(c) FROM t1 WHERE b NOT IN ( 1,2,6,7,9,10,11 );
@@ -2812,6 +2813,7 @@ INSERT INTO t1 VALUES (123,123,'2001-04-14','address123','city123',40,51),
(257,257,'2010-03-06','address257','city257',40,47);
--enable_query_log
+--sorted_result
select * from t1 where hours_worked_per_week = 40 and weeks_worked_last_year = 52 and dob < '1949-11-21';
select * from t1 IGNORE INDEX(dob, weeks_worked_last_year, hours_worked_per_week) where hours_worked_per_week = 40 and weeks_worked_last_year = 52 and dob < '1949-11-21';
diff --git a/mysql-test/t/partition_alter.test b/mysql-test/t/partition_alter.test
index ce6672c4b9d..62a3e1c0777 100644
--- a/mysql-test/t/partition_alter.test
+++ b/mysql-test/t/partition_alter.test
@@ -114,3 +114,14 @@ insert into t1 values(0, 1, 1, NULL, now(), now());
alter online table t1 delay_key_write=1;
show create table t1;
drop table t1;
+
+#
+# MDEV-14817 Server crashes in prep_alter_part_table() after table lock and multiple add partition
+#
+create or replace table t1 (x int) partition by hash (x) (partition p1, partition p2);
+lock table t1 write;
+--error ER_SAME_NAME_PARTITION
+alter table t1 add partition (partition p1);
+--error ER_SAME_NAME_PARTITION
+alter table t1 add partition (partition p1);
+drop table t1;
diff --git a/mysql-test/t/partition_exchange.test b/mysql-test/t/partition_exchange.test
index e538bee16cd..8dc40da0caa 100644
--- a/mysql-test/t/partition_exchange.test
+++ b/mysql-test/t/partition_exchange.test
@@ -29,14 +29,16 @@ SHOW CREATE TABLE t2;
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
ALTER TABLE t1 EXCHANGE PARTITION p1 WITH TABLE t2;
SHOW CREATE TABLE t1;
SHOW CREATE TABLE t2;
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
DROP TABLE t2;
@@ -53,7 +55,8 @@ SHOW CREATE TABLE t1;
SHOW CREATE TABLE t2;
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
--echo # Only the non partitioned table have ROW_FORMAT set.
DROP TABLE t1, t2;
@@ -77,7 +80,8 @@ SHOW CREATE TABLE t1;
SHOW CREATE TABLE t2;
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
--echo # No table have ROW_FORMAT set.
DROP TABLE t1, t2;
@@ -101,7 +105,8 @@ SHOW CREATE TABLE t1;
SHOW CREATE TABLE t2;
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
--echo # Not same ROW_FORMAT as default (but same).
DROP TABLE t1, t2;
@@ -125,7 +130,8 @@ SHOW CREATE TABLE t1;
SHOW CREATE TABLE t2;
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
--echo # Not same ROW_FORMAT as default (tables differs).
DROP TABLE t1, t2;
@@ -150,7 +156,8 @@ SHOW CREATE TABLE t1;
SHOW CREATE TABLE t2;
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
--echo # Different than default (forced ROW_TYPE)
DROP TABLE t1, t2;
@@ -175,7 +182,8 @@ SHOW CREATE TABLE t1;
SHOW CREATE TABLE t2;
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, CREATE_OPTIONS
FROM INFORMATION_SCHEMA.TABLES
-WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2');
+WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME IN ('t1', 't2')
+ORDER BY TABLE_NAME;
--horizontal_results
DROP TABLE t1, t2;
diff --git a/mysql-test/t/partition_innodb-master.opt b/mysql-test/t/partition_innodb-master.opt
deleted file mode 100644
index cf94b2d7dca..00000000000
--- a/mysql-test/t/partition_innodb-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---loose-innodb-large-prefix=OFF
diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test
index 35de237033b..a2f7d3c7bdc 100644
--- a/mysql-test/t/ps.test
+++ b/mysql-test/t/ps.test
@@ -4298,7 +4298,7 @@ EXECUTE IMMEDIATE MAX('SELECT 1 AS c');
EXECUTE IMMEDIATE DEFAULT(a);
--error ER_BAD_FIELD_ERROR
-EXECUTE IMMEDIATE VALUES(a);
+EXECUTE IMMEDIATE VALUE(a);
CREATE FUNCTION f1() RETURNS VARCHAR(64) RETURN 't1';
diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test
index ab951809b7a..36e0e32b28b 100644
--- a/mysql-test/t/range.test
+++ b/mysql-test/t/range.test
@@ -3,10 +3,6 @@
#
--source include/have_innodb.inc
---disable_warnings
-drop table if exists t1, t2, t3, t10, t100;
---enable_warnings
-
CREATE TABLE t1 (
event_date date DEFAULT '0000-00-00' NOT NULL,
type int(11) DEFAULT '0' NOT NULL,
@@ -2048,4 +2044,3 @@ drop table t1,t2,t3;
--echo #
--echo # End of 10.2 tests
--echo #
-
diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test
index 4024d2e522c..a24fa632ea5 100644
--- a/mysql-test/t/show_check.test
+++ b/mysql-test/t/show_check.test
@@ -890,62 +890,62 @@ DROP FUNCTION f1;
# Part 2: check that table with non-latin1 characters are dumped/restored
# correctly.
#
-
+# See MDEV-14651 for details
# Ensure that all needed objects are dropped.
-set names koi8r;
+#set names koi8r;
---disable_warnings
-DROP DATABASE IF EXISTS mysqltest1;
---enable_warnings
+#--disable_warnings
+#DROP DATABASE IF EXISTS mysqltest1;
+#--enable_warnings
# Create objects.
-CREATE DATABASE mysqltest1;
+#CREATE DATABASE mysqltest1;
-use mysqltest1;
+#use mysqltest1;
-CREATE TABLE t1(ËÏÌÏÎËÁ1 INT);
+#CREATE TABLE t1(ËÏÌÏÎËÁ1 INT);
# Check:
# - Dump mysqltest1;
---let $outfile1=$MYSQLTEST_VARDIR/tmp/show_check.mysqltest1.sql
+#--let $outfile1=$MYSQLTEST_VARDIR/tmp/show_check.mysqltest1.sql
---source include/count_sessions.inc
---echo
---echo ---> Dumping mysqltest1 to outfile1
---exec $MYSQL_DUMP --default-character-set=latin1 --character-sets-dir=$MYSQL_SHAREDIR/charsets --databases mysqltest1 > $outfile1
+#--source include/count_sessions.inc
+#--echo
+#--echo ---> Dumping mysqltest1 to outfile1
+#--exec $MYSQL_DUMP --default-character-set=latin1 --character-sets-dir=$MYSQL_SHAREDIR/charsets --databases mysqltest1 > $outfile1
# Take care that the additional session caused by MYSQL_DUMP has disappeared.
---source include/wait_until_count_sessions.inc
+#--source include/wait_until_count_sessions.inc
# - Clean mysqltest1;
---echo
---echo
+#--echo
+#--echo
-DROP DATABASE mysqltest1;
+#DROP DATABASE mysqltest1;
# - Restore mysqltest1;
---echo
---echo
+#--echo
+#--echo
---source include/count_sessions.inc
---echo ---> Restoring mysqltest1...
---exec $MYSQL test < $outfile1
---remove_file $outfile1
+#--source include/count_sessions.inc
+#--echo ---> Restoring mysqltest1...
+#--exec $MYSQL test < $outfile1
+#--remove_file $outfile1
# Take care that the additional session caused by MYSQL has disappeared.
---source include/wait_until_count_sessions.inc
+#--source include/wait_until_count_sessions.inc
# - Check definition of the table.
-SHOW CREATE TABLE mysqltest1.t1;
+#SHOW CREATE TABLE mysqltest1.t1;
# Cleanup.
-DROP DATABASE mysqltest1;
-use test;
+#DROP DATABASE mysqltest1;
+#use test;
#
# Bug#28808 log_queries_not_using_indexes variable dynamic change is ignored
@@ -954,11 +954,11 @@ flush status;
show variables like "log_queries_not_using_indexes";
select 1 from information_schema.tables limit 1;
show status like 'slow_queries';
-set global log_queries_not_using_indexes=OFF;
+set session log_queries_not_using_indexes=OFF;
show variables like "log_queries_not_using_indexes";
select 1 from information_schema.tables limit 1;
show status like 'slow_queries';
-set global log_queries_not_using_indexes=ON;
+set session log_queries_not_using_indexes=ON;
show variables like "log_queries_not_using_indexes";
select 1 from information_schema.tables limit 1;
show status like 'slow_queries';
diff --git a/mysql-test/t/simultaneous_assignment.test b/mysql-test/t/simultaneous_assignment.test
new file mode 100644
index 00000000000..a21e33346d6
--- /dev/null
+++ b/mysql-test/t/simultaneous_assignment.test
@@ -0,0 +1,204 @@
+-- source include/have_innodb.inc
+SET sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,SIMULTANEOUS_ASSIGNMENT';
+
+--echo #
+--echo # MDEV-13417 UPDATE produces wrong values if an UPDATEd column is later used as an UPDATE source
+--echo #
+
+CREATE TABLE t1 (c1 INTEGER, c2 INTEGER, c3 INTEGER) ENGINE=InnoDb;
+INSERT INTO t1(c1,c2,c3) VALUES (1,1,1);
+CREATE TABLE t2 (c1 INTEGER, c2 INTEGER, c3 INTEGER) ENGINE=InnoDb;
+INSERT INTO t2(c1,c2,c3) VALUES (1,1,1);
+
+--echo #
+--echo # Check that a column is only updated once.
+--echo #
+
+--error ER_UPDATED_COLUMN_ONLY_ONCE
+UPDATE t1
+ SET c1 = 1,
+ c1 = 2;
+
+--error ER_UPDATED_COLUMN_ONLY_ONCE
+UPDATE t1, t2
+ SET t1.c1 = t1.c1 + 1,
+ t1.c2 = t1.c1 + 1,
+ t2.c2 = t1.c2 + 1,
+ t2.c2 = t1.c2 + 1;
+
+--echo #
+--echo # Check standard update
+--echo #
+
+UPDATE t1
+ SET c1 = c1+1,
+ c2 = c1+1,
+ c3 = c2+1
+ WHERE c1=10;
+
+START TRANSACTION;
+UPDATE t1
+ SET c1 = c1+1,
+ c2 = c1+1,
+ c3 = c2+1;
+SELECT * FROM t1;
+ROLLBACK;
+
+--echo #
+--echo # Check update through a single view
+--echo #
+
+CREATE VIEW v1 (a, b) AS SELECT c1, c2 FROM t1;
+--error ER_UPDATED_COLUMN_ONLY_ONCE
+UPDATE v1
+ SET a = 10,
+ a = b+1;
+SELECT * FROM t1;
+DROP VIEW v1;
+
+CREATE VIEW v1 (a, b) AS SELECT c2, c2 FROM t1;
+--error ER_UPDATED_COLUMN_ONLY_ONCE
+UPDATE v1
+ SET a = 10,
+ b = 20;
+SELECT * FROM t1;
+DROP VIEW v1;
+
+--echo #
+--echo # Check update through a multi table view
+--echo #
+
+CREATE VIEW v1 (a, b) AS SELECT t1.c1, t2.c1 FROM t1, t2 WHERE t1.c1=t2.c1;
+--error ER_VIEW_MULTIUPDATE
+UPDATE v1
+ SET a = 10,
+ b = 20;
+
+START TRANSACTION;
+UPDATE v1
+ SET a = 10;
+ROLLBACK;
+
+--error ER_UPDATED_COLUMN_ONLY_ONCE
+UPDATE v1
+ SET a = 10,
+ a = a + 1;
+DROP VIEW v1;
+
+--echo #
+--echo # Check multi update
+--echo #
+
+START TRANSACTION;
+UPDATE t1, t2
+ SET t1.c1 = t1.c1 + 1,
+ t1.c2 = t1.c1 + 1,
+ t2.c2 = t1.c2 + 1,
+ t2.c3 = t2.c2 + 1
+WHERE t1.c1=t2.c1;
+SELECT * FROM t1;
+SELECT * FROM t2;
+ROLLBACK;
+
+DELIMITER /;
+CREATE TRIGGER tr1 BEFORE UPDATE ON t1 FOR EACH ROW
+BEGIN
+ INSERT INTO t2 VALUES(10+old.c1,10+old.c2,10+old.c3);
+ INSERT INTO t2 VALUES(20+new.c1,10+new.c2,10+new.c3);
+END;
+/
+DELIMITER ;/
+START TRANSACTION;
+UPDATE t1
+ SET c1 = c1+1,
+ c2 = c1+1,
+ c3 = c2+1;
+SELECT * FROM t1;
+SELECT * FROM t2;
+ROLLBACK;
+
+DROP TABLE t1;
+DROP TABLE t2;
+
+--echo #
+--echo # Check update fired by INSERT ... ON DUPLICATE KEY UPDATE
+--echo #
+
+CREATE TABLE t1 (
+ id INT(11) NOT NULL AUTO_INCREMENT,
+ name VARCHAR(60) NOT NULL,
+ nb_visits INT NOT NULL,
+ nb_visits_prev INT NOT NULL default 0,
+ PRIMARY KEY (id),
+ UNIQUE KEY name (name)
+) ENGINE=InnoDB AUTO_INCREMENT=1;
+
+INSERT INTO t1(name, nb_visits) VALUES('nico', 1)
+ ON DUPLICATE KEY UPDATE nb_visits = nb_visits + 1;
+SELECT * FROM t1;
+INSERT INTO t1(name, nb_visits) VALUES('nico', 1)
+ ON DUPLICATE KEY UPDATE nb_visits = nb_visits + 1, nb_visits_prev=nb_visits;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+--echo #
+--echo # Update table with virtual column
+--echo #
+
+CREATE TABLE t1 (c1 INTEGER, c2 INTEGER, c3 INTEGER AS (c1 MOD 10) VIRTUAL, c4 INTEGER AS (c1+c2 MOD 5) PERSISTENT ) ENGINE=InnoDb;
+INSERT INTO t1(c1,c2) VALUES (1,1);
+
+SELECT * FROM t1;
+UPDATE t1 SET c2 = 10, c1 = c2;
+SELECT * FROM t1;
+UPDATE t1 SET c2 = 4, c1 = c2;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+--echo #
+--echo # Update dynamic column
+--echo #
+SET @@local.character_set_connection='latin1';
+CREATE TABLE assets (
+ item_name VARCHAR(32) PRIMARY KEY,
+ dynamic_col1 BLOB,
+ dynamic_col2 BLOB
+);
+
+INSERT INTO assets VALUES ('Thinkpad Laptop', COLUMN_CREATE('color', 'black', 'price', 500),COLUMN_CREATE('CPU', 'Core I7', 'memory', '8Go'));
+INSERT INTO assets VALUES ('Thinkpad Laptop2', COLUMN_CREATE('color', 'yellow', 'price', 700),COLUMN_CREATE('CPU', 'Core I7', 'memory', '16Go'));
+SELECT item_name, COLUMN_GET(dynamic_col1, 'color' as char) AS color1,
+ COLUMN_GET(dynamic_col2, 'color' as char) AS color2
+ FROM assets;
+UPDATE assets
+ SET dynamic_col1=COLUMN_ADD(dynamic_col1, 'warranty', '3 years'),
+ dynamic_col2=dynamic_col1
+ WHERE item_name LIKE 'Thinkpad Laptop%';
+
+SELECT item_name, COLUMN_GET(dynamic_col1, 'warranty' as char) AS waranty1,
+ COLUMN_GET(dynamic_col2, 'warranty' as char) AS waranty2,
+ COLUMN_GET(dynamic_col2, 'color' as char) AS color2
+ FROM assets;
+
+DROP TABLE assets;
+
+--echo #
+--echo # Update TEXT column
+--echo #
+
+CREATE TABLE ft2(copy TEXT,copy2 TEXT,FULLTEXT(copy)) ENGINE=MyISAM;
+INSERT INTO ft2(copy) VALUES
+ ('MySQL vs MariaDB database'),
+ ('Oracle vs MariaDB database'),
+ ('PostgreSQL vs MariaDB database'),
+ ('MariaDB overview'),
+ ('Foreign keys'),
+ ('Primary keys'),
+ ('Indexes'),
+ ('Transactions'),
+ ('Triggers');
+SELECT * FROM ft2;
+UPDATE ft2 SET copy = UPPER(copy),
+ copy2= copy;
+SELECT * FROM ft2;
+DROP TABLE ft2;
diff --git a/mysql-test/t/sp-big.test b/mysql-test/t/sp-big.test
index 6541e546e43..4220541697e 100644
--- a/mysql-test/t/sp-big.test
+++ b/mysql-test/t/sp-big.test
@@ -1,11 +1,7 @@
#
# Bug #11602: SP with very large body not handled well
#
-
---disable_warnings
-drop procedure if exists test.longprocedure;
-drop table if exists t1;
---enable_warnings
+source include/have_sequence.inc;
create table t1 (a int);
insert into t1 values (1),(2),(3);
@@ -85,3 +81,37 @@ select f1 from t1 limit 1;
select f1 from t2 limit 1;
drop procedure p1;
drop table t1, t2;
+
+#
+# Loops with many iterations
+# (Item_equal must be created in the execution arena)
+#
+create table t1 (
+ `id1` int unsigned not null default '0',
+ `id2` int unsigned not null default '0',
+ `link_type` int unsigned not null default '0',
+ `visibility` tinyint not null default '0',
+ `data` varchar(255) not null default '',
+ `time` int unsigned not null default '0',
+ `version` int unsigned not null default '0',
+ primary key (id1, link_type, visibility, id2)
+) default collate=latin1_bin;
+
+delimiter //;
+create procedure select_test()
+begin
+ declare id1_cond int;
+ set id1_cond = 1;
+ while id1_cond <= 10000 do
+ select count(*) as cnt from (select id1 from t1 force index (primary) where id1 = id1_cond and link_type = 1 and visibility = 1 order by id2 desc) as t into @cnt;
+ set id1_cond = id1_cond + 1;
+ end while;
+end//
+delimiter ;//
+
+insert t1 select seq, seq, 1, 1, seq, seq, seq from seq_1_to_2000;
+set @before=unix_timestamp();
+call select_test();
+select unix_timestamp() - @before < 60;
+drop procedure select_test;
+drop table t1;
diff --git a/mysql-test/t/sp-destruct.test b/mysql-test/t/sp-destruct.test
index 31da235d906..0cd80bd5427 100644
--- a/mysql-test/t/sp-destruct.test
+++ b/mysql-test/t/sp-destruct.test
@@ -10,7 +10,7 @@
-- source include/not_embedded.inc
# Supress warnings written to the log file
-call mtr.add_suppression("Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted");
+call mtr.add_suppression("Column count of mysql.proc is wrong. Expected 21, found 20. The table is probably corrupted");
call mtr.add_suppression("Stored routine .test...bug14233_[123].: invalid value in column mysql.proc");
# Backup proc table
diff --git a/mysql-test/t/sp-error.test b/mysql-test/t/sp-error.test
index aa537d3596b..0e16948f438 100644
--- a/mysql-test/t/sp-error.test
+++ b/mysql-test/t/sp-error.test
@@ -1746,7 +1746,7 @@ drop procedure bug15091;
drop function if exists bug16896;
--enable_warnings
---error ER_PARSE_ERROR
+--error ER_INVALID_AGGREGATE_FUNCTION
create aggregate function bug16896() returns int return 1;
#
diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test
index 4e87ba0c220..ceed2bbea7f 100644
--- a/mysql-test/t/sp.test
+++ b/mysql-test/t/sp.test
@@ -5299,7 +5299,7 @@ insert into t3 (id, county) values (1, 'York')|
create procedure bug15441(c varchar(25))
begin
- update t3 set id=2, county=values(c);
+ update t3 set id=2, county=value(c);
end|
--error ER_BAD_FIELD_ERROR
call bug15441('county')|
@@ -5326,7 +5326,7 @@ begin
on duplicate key update county= values(county);
select * from t3;
- update t3 set id=2, county=values(id);
+ update t3 set id=2, county=value(id);
select * from t3;
end|
call bug15441('Yale')|
@@ -5722,8 +5722,10 @@ create procedure bug18344_2() begin end|
use test|
+--sorted_result
select schema_name from information_schema.schemata where
schema_name like 'bug18344%'|
+--sorted_result
select routine_name,routine_schema from information_schema.routines where
routine_schema like 'bug18344%'|
@@ -6315,7 +6317,7 @@ set names utf8|
drop database if exists това_е_дълго_име_за_база_данни_нали|
--enable_warnings
create database това_е_дълго_име_за_база_данни_нали|
-INSERT INTO mysql.proc VALUES ('това_е_дълго_име_за_база_данни_нали','това_е_процедура_Ñ_доÑта_дълго_име_нали_и_още_по_дълго','PROCEDURE','това_е_процедура_Ñ_доÑта_дълго_име_нали_и_още_по_дълго','SQL','CONTAINS_SQL','NO','DEFINER','','','bad_body','root@localhost',now(), now(),'','', 'utf8', 'utf8_general_ci', 'utf8_general_ci', 'n/a')|
+INSERT INTO mysql.proc VALUES ('това_е_дълго_име_за_база_данни_нали','това_е_процедура_Ñ_доÑта_дълго_име_нали_и_още_по_дълго','PROCEDURE','това_е_процедура_Ñ_доÑта_дълго_име_нали_и_още_по_дълго','SQL','CONTAINS_SQL','NO','DEFINER','','','bad_body','root@localhost',now(), now(),'','', 'utf8', 'utf8_general_ci', 'utf8_general_ci', 'n/a', 'NONE')|
--error ER_SP_PROC_TABLE_CORRUPT
call това_е_дълго_име_за_база_данни_нали.това_е_процедура_Ñ_доÑта_дълго_име_нали_и_още_по_дълго()|
drop database това_е_дълго_име_за_база_данни_нали|
@@ -9955,7 +9957,6 @@ DELIMITER ;$$
CALL p1();
DROP PROCEDURE p1;
-
--echo #
--echo # MDEV-14228 MariaDB crashes with function
--echo #
@@ -10035,7 +10036,6 @@ BEGIN NOT ATOMIC
END $$
DELIMITER ;$$
-
--echo #
--echo # MDEV-15112 Inconsistent evaluation of spvariable=0 in strict mode
--echo #
@@ -10081,3 +10081,32 @@ DROP FUNCTION f1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
+
+--echo # Test affected rows from an sp
+
+create table t1 (a int);
+
+DELIMITER $$;
+create procedure p1()
+begin
+insert into t1 values(1);
+insert into t1 values(2);
+end;
+$$
+create procedure p2()
+begin
+insert into t1 values(1);
+call p1();
+select row_count();
+insert into t1 values(2);
+insert into t1 values(2);
+end;
+$$
+DELIMITER ;$$
+
+--enable_info
+CALL p2();
+--disable_info
+DROP PROCEDURE p1;
+DROP PROCEDURE p2;
+drop table t1;
diff --git a/mysql-test/t/sql_mode.test b/mysql-test/t/sql_mode.test
index 31e38db34e5..9f38dc935e7 100644
--- a/mysql-test/t/sql_mode.test
+++ b/mysql-test/t/sql_mode.test
@@ -264,7 +264,7 @@ select @@sql_mode;
set sql_mode=16384+(65536*4);
select @@sql_mode;
--error 1231
-set sql_mode=2147483648*2*2; # that mode does not exist
+set sql_mode=2147483648*2*2*2; # that mode does not exist
select @@sql_mode;
#
diff --git a/mysql-test/t/status.test b/mysql-test/t/status.test
index 7ab32241bcb..92fba9ab0a6 100644
--- a/mysql-test/t/status.test
+++ b/mysql-test/t/status.test
@@ -387,6 +387,49 @@ drop table t1;
# End of 5.3 tests
+--echo #
+--echo # MDEV-11153 - Introduce status variables for table cache monitoring and
+--echo # tuning
+--echo #
+SET @old_table_open_cache= @@table_open_cache;
+SET @@global.table_open_cache=10;
+FLUSH TABLES;
+FLUSH STATUS;
+SHOW STATUS LIKE 'Table_open_cache%';
+disable_query_log;
+let $i= `SELECT @@table_open_cache + 5`;
+while ($i)
+{
+ eval CREATE TABLE t$i(a INT);
+ eval DELETE FROM t$i;
+ eval DELETE FROM t$i;
+ eval DELETE FROM t$i;
+ dec $i;
+}
+enable_query_log;
+SHOW STATUS LIKE 'Table_open_cache%';
+FLUSH TABLES;
+FLUSH STATUS;
+disable_query_log;
+let $i= `SELECT @@table_open_cache + 5`;
+while ($i)
+{
+ eval DROP TABLE t$i;
+ dec $i;
+}
+enable_query_log;
+SET @@global.table_open_cache= @old_table_open_cache;
+
+--echo #
+--echo # MDEV-14505 - Threads_running becomes scalability bottleneck
+--echo #
+--echo # Session status for Threads_running is currently always 1.
+SHOW STATUS LIKE 'Threads_running';
+SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='THREADS_RUNNING';
+FLUSH STATUS;
+SHOW STATUS LIKE 'Threads_running';
+SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='THREADS_RUNNING';
+
# Restore global concurrent_insert value. Keep in the end of the test file.
--connection default
set @@global.concurrent_insert= @old_concurrent_insert;
diff --git a/mysql-test/t/subselect_sj.test b/mysql-test/t/subselect_sj.test
index f90f1e2e927..6fdccee339d 100644
--- a/mysql-test/t/subselect_sj.test
+++ b/mysql-test/t/subselect_sj.test
@@ -2490,6 +2490,7 @@ drop table t1,t2;
--echo #
CREATE TABLE t1 (db VARCHAR(64) DEFAULT NULL);
INSERT INTO t1 VALUES ('mysql'),('information_schema');
+--sorted_result
SELECT * FROM t1 WHERE db IN (SELECT `SCHEMA_NAME` FROM information_schema.SCHEMATA);
DROP TABLE t1;
diff --git a/mysql-test/t/system_mysql_db_fix40123.test b/mysql-test/t/system_mysql_db_fix40123.test
index fd1212d4ce6..2d17a0964e5 100644
--- a/mysql-test/t/system_mysql_db_fix40123.test
+++ b/mysql-test/t/system_mysql_db_fix40123.test
@@ -72,7 +72,7 @@ CREATE TABLE time_zone_leap_second ( Transition_time bigint signed NOT NULL,
-- disable_query_log
# Drop all tables created by this test
-DROP TABLE db, host, user, func, plugin, tables_priv, columns_priv, procs_priv, servers, help_category, help_keyword, help_relation, help_topic, proc, time_zone, time_zone_leap_second, time_zone_name, time_zone_transition, time_zone_transition_type, general_log, slow_log, event, proxies_priv, innodb_index_stats, innodb_table_stats, table_stats, column_stats, index_stats, roles_mapping, gtid_slave_pos;
+DROP TABLE db, host, user, func, plugin, tables_priv, columns_priv, procs_priv, servers, help_category, help_keyword, help_relation, help_topic, proc, time_zone, time_zone_leap_second, time_zone_name, time_zone_transition, time_zone_transition_type, general_log, slow_log, event, proxies_priv, innodb_index_stats, innodb_table_stats, transaction_registry, table_stats, column_stats, index_stats, roles_mapping, gtid_slave_pos;
-- enable_query_log
diff --git a/mysql-test/t/system_mysql_db_fix50030.test b/mysql-test/t/system_mysql_db_fix50030.test
index c3e7dd7b9b1..9506c3465e7 100644
--- a/mysql-test/t/system_mysql_db_fix50030.test
+++ b/mysql-test/t/system_mysql_db_fix50030.test
@@ -79,7 +79,7 @@ INSERT INTO servers VALUES ('test','localhost','test','root','', 0,'','mysql','r
-- disable_query_log
# Drop all tables created by this test
-DROP TABLE db, host, user, func, plugin, tables_priv, columns_priv, procs_priv, servers, help_category, help_keyword, help_relation, help_topic, proc, time_zone, time_zone_leap_second, time_zone_name, time_zone_transition, time_zone_transition_type, general_log, slow_log, event, proxies_priv, innodb_index_stats, innodb_table_stats, table_stats, column_stats, index_stats, roles_mapping, gtid_slave_pos;
+DROP TABLE db, host, user, func, plugin, tables_priv, columns_priv, procs_priv, servers, help_category, help_keyword, help_relation, help_topic, proc, time_zone, time_zone_leap_second, time_zone_name, time_zone_transition, time_zone_transition_type, general_log, slow_log, event, proxies_priv, innodb_index_stats, innodb_table_stats, transaction_registry, table_stats, column_stats, index_stats, roles_mapping, gtid_slave_pos;
-- enable_query_log
diff --git a/mysql-test/t/system_mysql_db_fix50117.test b/mysql-test/t/system_mysql_db_fix50117.test
index dcc765ae132..f8bef3da162 100644
--- a/mysql-test/t/system_mysql_db_fix50117.test
+++ b/mysql-test/t/system_mysql_db_fix50117.test
@@ -96,7 +96,7 @@ CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8 COLLATE utf8_b
-- disable_query_log
# Drop all tables created by this test
-DROP TABLE db, host, user, func, plugin, tables_priv, columns_priv, procs_priv, servers, help_category, help_keyword, help_relation, help_topic, proc, time_zone, time_zone_leap_second, time_zone_name, time_zone_transition, time_zone_transition_type, general_log, slow_log, event, proxies_priv, innodb_index_stats, innodb_table_stats, table_stats, column_stats, index_stats, roles_mapping, gtid_slave_pos;
+DROP TABLE db, host, user, func, plugin, tables_priv, columns_priv, procs_priv, servers, help_category, help_keyword, help_relation, help_topic, proc, time_zone, time_zone_leap_second, time_zone_name, time_zone_transition, time_zone_transition_type, general_log, slow_log, event, proxies_priv, innodb_index_stats, innodb_table_stats, transaction_registry, table_stats, column_stats, index_stats, roles_mapping, gtid_slave_pos;
-- enable_query_log
diff --git a/mysql-test/t/table_value_constr.test b/mysql-test/t/table_value_constr.test
new file mode 100644
index 00000000000..578f8943fbb
--- /dev/null
+++ b/mysql-test/t/table_value_constr.test
@@ -0,0 +1,1046 @@
+create table t1 (a int, b int);
+
+insert into t1 values (1,2),(4,6),(9,7),
+ (1,1),(2,5),(7,8);
+
+--echo # just VALUES
+
+values (1,2);
+
+values (1,2), (3,4), (5.6,0);
+
+values ("abc", "def");
+
+--echo # UNION that uses VALUES structure(s)
+
+select 1,2
+union
+values (1,2);
+
+values (1,2)
+union
+select 1,2;
+
+select 1,2
+union
+values (1,2),(3,4),(5,6),(7,8);
+
+select 3,7
+union
+values (1,2),(3,4),(5,6);
+
+select 3,7,4
+union
+values (1,2,5),(4,5,6);
+
+select 1,2
+union
+values (1,7),(3,6.5);
+
+select 1,2
+union
+values (1,2.0),(3,6);
+
+select 1.8,2
+union
+values (1,2),(3,6);
+
+values (1,2.4),(3,6)
+union
+select 2.8,9;
+
+values (1,2),(3,4),(5,6),(7,8)
+union
+select 5,6;
+
+select "ab","cdf"
+union
+values ("al","zl"),("we","q");
+
+values ("ab", "cdf")
+union
+select "ab","cdf";
+
+values (1,2)
+union
+values (1,2),(5,6);
+
+values (1,2)
+union
+values (3,4),(5,6);
+
+values (1,2)
+union
+values (1,2)
+union values (4,5);
+
+--echo # UNION ALL that uses VALUES structure
+
+values (1,2),(3,4)
+union all
+select 5,6;
+
+values (1,2),(3,4)
+union all
+select 1,2;
+
+select 5,6
+union all
+values (1,2),(3,4);
+
+select 1,2
+union all
+values (1,2),(3,4);
+
+values (1,2)
+union all
+values (1,2),(5,6);
+
+values (1,2)
+union all
+values (3,4),(5,6);
+
+values (1,2)
+union all
+values (1,2)
+union all
+values (4,5);
+
+values (1,2)
+union all
+values (1,2)
+union values (1,2);
+
+values (1,2)
+union
+values (1,2)
+union all
+values (1,2);
+
+--echo # EXCEPT that uses VALUES structure(s)
+
+select 1,2
+except
+values (3,4),(5,6);
+
+select 1,2
+except
+values (1,2),(3,4);
+
+values (1,2),(3,4)
+except
+select 5,6;
+
+values (1,2),(3,4)
+except
+select 1,2;
+
+values (1,2),(3,4)
+except
+values (5,6);
+
+values (1,2),(3,4)
+except
+values (1,2);
+
+--echo # INTERSECT that uses VALUES structure(s)
+
+select 1,2
+intersect
+values (3,4),(5,6);
+
+select 1,2
+intersect
+values (1,2),(3,4);
+
+values (1,2),(3,4)
+intersect
+select 5,6;
+
+values (1,2),(3,4)
+intersect
+select 1,2;
+
+values (1,2),(3,4)
+intersect
+values (5,6);
+
+values (1,2),(3,4)
+intersect
+values (1,2);
+
+--echo # combination of different structures that uses VALUES structures : UNION + EXCEPT
+
+values (1,2),(3,4)
+except
+select 1,2
+union values (1,2);
+
+values (1,2),(3,4)
+except
+values (1,2)
+union
+values (1,2);
+
+values (1,2),(3,4)
+except
+values (1,2)
+union
+values (3,4);
+
+values (1,2),(3,4)
+union
+values (1,2)
+except
+values (1,2);
+
+--echo # combination of different structures that uses VALUES structures : UNION ALL + EXCEPT
+
+values (1,2),(3,4)
+except
+select 1,2
+union all
+values (1,2);
+
+values (1,2),(3,4)
+except
+values (1,2)
+union all
+values (1,2);
+
+values (1,2),(3,4)
+except
+values (1,2)
+union all
+values (3,4);
+
+values (1,2),(3,4)
+union all
+values (1,2)
+except
+values (1,2);
+
+--echo # combination of different structures that uses VALUES structures : UNION + INTERSECT
+
+values (1,2),(3,4)
+intersect
+select 1,2
+union
+values (1,2);
+
+values (1,2),(3,4)
+intersect
+values (1,2)
+union
+values (1,2);
+
+values (1,2),(3,4)
+intersect
+values (1,2)
+union
+values (3,4);
+
+values (1,2),(3,4)
+union
+values (1,2)
+intersect
+values (1,2);
+
+--echo # combination of different structures that uses VALUES structures : UNION ALL + INTERSECT
+
+values (1,2),(3,4)
+intersect
+select 1,2
+union all
+values (1,2);
+
+values (1,2),(3,4)
+intersect
+values (1,2)
+union all
+values (1,2);
+
+values (1,2),(3,4)
+intersect
+values (1,2)
+union all
+values (3,4);
+
+values (1,2),(3,4)
+union all
+values (1,2)
+intersect
+values (1,2);
+
+--echo # combination of different structures that uses VALUES structures : UNION + UNION ALL
+
+values (1,2),(3,4)
+union all
+select 1,2
+union
+values (1,2);
+
+values (1,2),(3,4)
+union all
+values (1,2)
+union
+values (1,2);
+
+values (1,2),(3,4)
+union all
+values (1,2)
+union
+values (3,4);
+
+values (1,2),(3,4)
+union
+values (1,2)
+union all
+values (1,2);
+
+values (1,2)
+union
+values (1,2)
+union all
+values (1,2);
+
+--echo # CTE that uses VALUES structure(s) : non-recursive CTE
+
+with t2 as
+(
+ values (1,2),(3,4)
+)
+select * from t2;
+
+with t2 as
+(
+ select 1,2
+ union
+ values (1,2)
+)
+select * from t2;
+
+with t2 as
+(
+ select 1,2
+ union
+ values (1,2),(3,4)
+)
+select * from t2;
+
+with t2 as
+(
+ values (1,2)
+ union
+ select 1,2
+)
+select * from t2;
+
+with t2 as
+(
+ values (1,2),(3,4)
+ union
+ select 1,2
+)
+select * from t2;
+
+with t2 as
+(
+ values (5,6)
+ union
+ values (1,2),(3,4)
+)
+select * from t2;
+
+with t2 as
+(
+ values (1,2)
+ union
+ values (1,2),(3,4)
+)
+select * from t2;
+
+with t2 as
+(
+ select 1,2
+ union all
+ values (1,2),(3,4)
+)
+select * from t2;
+
+with t2 as
+(
+ values (1,2),(3,4)
+ union all
+ select 1,2
+)
+select * from t2;
+
+with t2 as
+(
+ values (1,2)
+ union all
+ values (1,2),(3,4)
+)
+select * from t2;
+
+--echo # recursive CTE that uses VALUES structure(s) : singe VALUES structure as anchor
+
+with recursive t2(a,b) as
+(
+ values(1,1)
+ union
+ select t1.a, t1.b
+ from t1,t2
+ where t1.a=t2.a
+)
+select * from t2;
+
+with recursive t2(a,b) as
+(
+ values(1,1)
+ union
+ select t1.a+1, t1.b
+ from t1,t2
+ where t1.a=t2.a
+)
+select * from t2;
+
+--echo # recursive CTE that uses VALUES structure(s) : several VALUES structures as anchors
+
+with recursive t2(a,b) as
+(
+ values(1,1)
+ union
+ values (3,4)
+ union
+ select t2.a+1, t1.b
+ from t1,t2
+ where t1.a=t2.a
+)
+select * from t2;
+
+--echo # recursive CTE that uses VALUES structure(s) : that uses UNION ALL
+
+with recursive t2(a,b,st) as
+(
+ values(1,1,1)
+ union all
+ select t2.a, t1.b, t2.st+1
+ from t1,t2
+ where t1.a=t2.a and st<3
+)
+select * from t2;
+
+--echo # recursive CTE that uses VALUES structure(s) : computation of factorial (first 10 elements)
+
+with recursive fact(n,f) as
+(
+ values(1,1)
+ union
+ select n+1,f*n from fact where n < 10
+)
+select * from fact;
+
+--echo # Derived table that uses VALUES structure(s) : singe VALUES structure
+
+select * from (values (1,2),(3,4)) as t2;
+
+--echo # Derived table that uses VALUES structure(s) : UNION with VALUES structure(s)
+
+select * from (select 1,2 union values (1,2)) as t2;
+
+select * from (select 1,2 union values (1,2),(3,4)) as t2;
+
+select * from (values (1,2) union select 1,2) as t2;
+
+select * from (values (1,2),(3,4) union select 1,2) as t2;
+
+select * from (values (5,6) union values (1,2),(3,4)) as t2;
+
+select * from (values (1,2) union values (1,2),(3,4)) as t2;
+
+--echo # Derived table that uses VALUES structure(s) : UNION ALL with VALUES structure(s)
+
+select * from (select 1,2 union all values (1,2),(3,4)) as t2;
+
+select * from (values (1,2),(3,4) union all select 1,2) as t2;
+
+select * from (values (1,2) union all values (1,2),(3,4)) as t2;
+
+--echo # CREATE VIEW that uses VALUES structure(s) : singe VALUES structure
+
+let $drop_view= drop view v1;
+let $select_view= select * from v1;
+
+create view v1 as values (1,2),(3,4);
+
+eval $select_view;
+eval $drop_view;
+
+--echo # CREATE VIEW that uses VALUES structure(s) : UNION with VALUES structure(s)
+
+create view v1 as
+ select 1,2
+ union
+ values (1,2);
+
+eval $select_view;
+eval $drop_view;
+
+create view v1 as
+ select 1,2
+ union
+ values (1,2),(3,4);
+
+eval $select_view;
+eval $drop_view;
+
+create view v1 as
+ values (1,2)
+ union
+ select 1,2;
+
+eval $select_view;
+eval $drop_view;
+
+create view v1 as
+ values (1,2),(3,4)
+ union
+ select 1,2;
+
+eval $select_view;
+eval $drop_view;
+
+create view v1 as
+ values (5,6)
+ union
+ values (1,2),(3,4);
+
+eval $select_view;
+eval $drop_view;
+
+--echo # CREATE VIEW that uses VALUES structure(s) : UNION ALL with VALUES structure(s)
+
+create view v1 as
+ values (1,2)
+ union
+ values (1,2),(3,4);
+
+eval $select_view;
+eval $drop_view;
+
+create view v1 as
+ select 1,2
+ union all
+ values (1,2),(3,4);
+
+eval $select_view;
+eval $drop_view;
+
+create view v1 as
+ values (1,2),(3,4)
+ union all
+ select 1,2;
+
+eval $select_view;
+eval $drop_view;
+
+create view v1 as
+ values (1,2)
+ union all
+ values (1,2),(3,4);
+
+eval $select_view;
+eval $drop_view;
+
+--echo # IN-subquery with VALUES structure(s) : simple case
+let $query=
+select * from t1
+where a in (values (1));
+let $subst_query=
+select * from t1
+where a in (select * from (values (1)) as tvc_0);
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # IN-subquery with VALUES structure(s) : UNION with VALUES on the first place
+let $query=
+select * from t1
+where a in (values (1) union select 2);
+let $subst_query=
+select * from t1
+where a in (select * from (values (1)) as tvc_0 union
+ select 2);
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # IN-subquery with VALUES structure(s) : UNION with VALUES on the second place
+let $query=
+select * from t1
+where a in (select 2 union values (1));
+let $subst_query=
+select * from t1
+where a in (select 2 union
+ select * from (values (1)) tvc_0);
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # IN-subquery with VALUES structure(s) : UNION ALL
+let $query=
+select * from t1
+where a in (values (1) union all select b from t1);
+let $subst_query=
+select * from t1
+where a in (select * from (values (1)) as tvc_0 union all
+ select b from t1);
+
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # NOT IN subquery with VALUES structure(s) : simple case
+let $query=
+select * from t1
+where a not in (values (1),(2));
+let $subst_query=
+select * from t1
+where a not in (select * from (values (1),(2)) as tvc_0);
+
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # NOT IN subquery with VALUES structure(s) : UNION with VALUES on the first place
+let $query=
+select * from t1
+where a not in (values (1) union select 2);
+let $subst_query=
+select * from t1
+where a not in (select * from (values (1)) as tvc_0 union
+ select 2);
+
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # NOT IN subquery with VALUES structure(s) : UNION with VALUES on the second place
+let $query=
+select * from t1
+where a not in (select 2 union values (1));
+let $subst_query=
+select * from t1
+where a not in (select 2 union
+ select * from (values (1)) as tvc_0);
+
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # ANY-subquery with VALUES structure(s) : simple case
+let $query=
+select * from t1
+where a = any (values (1),(2));
+let $subst_query=
+select * from t1
+where a = any (select * from (values (1),(2)) as tvc_0);
+
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # ANY-subquery with VALUES structure(s) : UNION with VALUES on the first place
+let $query=
+select * from t1
+where a = any (values (1) union select 2);
+let $subst_query=
+select * from t1
+where a = any (select * from (values (1)) as tvc_0 union
+ select 2);
+
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # ANY-subquery with VALUES structure(s) : UNION with VALUES on the second place
+let $query=
+select * from t1
+where a = any (select 2 union values (1));
+let $subst_query=
+select * from t1
+where a = any (select 2 union
+ select * from (values (1)) as tvc_0);
+
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # ALL-subquery with VALUES structure(s) : simple case
+let $query=
+select * from t1
+where a = all (values (1));
+let $subst_query=
+select * from t1
+where a = all (select * from (values (1)) as tvc_0);
+
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # ALL-subquery with VALUES structure(s) : UNION with VALUES on the first place
+let $query=
+select * from t1
+where a = all (values (1) union select 1);
+let $subst_query=
+select * from t1
+where a = all (select * from (values (1)) as tvc_0 union
+ select 1);
+
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # ALL-subquery with VALUES structure(s) : UNION with VALUES on the second place
+let $query=
+select * from t1
+where a = any (select 1 union values (1));
+let $subst_query=
+select * from t1
+where a = any (select 1 union
+ select * from (values (1)) as tvc_0);
+
+eval $query;
+eval $subst_query;
+eval explain extended $query;
+eval explain extended $subst_query;
+
+--echo # prepare statement that uses VALUES structure(s): single VALUES structure
+
+prepare stmt1 from "
+values (1,2);
+";
+
+execute stmt1;
+execute stmt1;
+deallocate prepare stmt1;
+
+--echo # prepare statement that uses VALUES structure(s): UNION with VALUES structure(s)
+
+prepare stmt1 from "
+ select 1,2
+ union
+ values (1,2),(3,4);
+";
+
+execute stmt1;
+execute stmt1;
+deallocate prepare stmt1;
+
+prepare stmt1 from "
+ values (1,2),(3,4)
+ union
+ select 1,2;
+";
+
+execute stmt1;
+execute stmt1;
+deallocate prepare stmt1;
+
+prepare stmt1 from "
+ select 1,2
+ union
+ values (3,4)
+ union
+ values (1,2);
+";
+
+execute stmt1;
+execute stmt1;
+deallocate prepare stmt1;
+
+prepare stmt1 from "
+ values (5,6)
+ union
+ values (1,2),(3,4);
+";
+
+execute stmt1;
+execute stmt1;
+deallocate prepare stmt1;
+
+--echo # prepare statement that uses VALUES structure(s): UNION ALL with VALUES structure(s)
+
+prepare stmt1 from "
+ select 1,2
+ union
+ values (1,2),(3,4);
+";
+
+execute stmt1;
+execute stmt1;
+deallocate prepare stmt1;
+
+prepare stmt1 from "
+ values (1,2),(3,4)
+ union all
+ select 1,2;
+";
+
+execute stmt1;
+execute stmt1;
+deallocate prepare stmt1;
+
+prepare stmt1 from "
+ select 1,2
+ union all
+ values (3,4)
+ union all
+ values (1,2);
+";
+
+execute stmt1;
+execute stmt1;
+deallocate prepare stmt1;
+
+prepare stmt1 from "
+ values (1,2)
+ union all
+ values (1,2),(3,4);
+";
+
+execute stmt1;
+execute stmt1;
+deallocate prepare stmt1;
+
+--echo # explain query that uses VALUES structure(s): single VALUES structure
+
+explain
+values (1,2);
+
+explain format=json
+values (1,2);
+
+--echo # explain query that uses VALUES structure(s): UNION with VALUES structure(s)
+
+explain
+select 1,2
+union
+values (1,2),(3,4);
+
+explain
+values (1,2),(3,4)
+union
+select 1,2;
+
+explain
+values (5,6)
+union
+values (1,2),(3,4);
+
+explain format=json
+select 1,2
+union
+values (1,2),(3,4);
+
+explain format=json
+values (1,2),(3,4)
+union
+select 1,2;
+
+explain format=json
+values (5,6)
+union
+values (1,2),(3,4);
+
+explain
+select 1,2
+union
+values (3,4)
+union
+values (1,2);
+
+explain format=json
+select 1,2
+union
+values (3,4)
+union
+values (1,2);
+
+--echo # explain query that uses VALUES structure(s): UNION ALL with VALUES structure(s)
+
+explain
+select 1,2
+union
+values (1,2),(3,4);
+
+explain
+values (1,2),(3,4)
+union all
+select 1,2;
+
+explain
+values (1,2)
+union all
+values (1,2),(3,4);
+
+explain format=json
+values (1,2),(3,4)
+union all
+select 1,2;
+
+explain format=json
+select 1,2
+union
+values (1,2),(3,4);
+
+explain format=json
+values (1,2)
+union all
+values (1,2),(3,4);
+
+explain
+select 1,2
+union all
+values (3,4)
+union all
+values (1,2);
+
+explain format=json
+select 1,2
+union all
+values (3,4)
+union all
+values (1,2);
+
+--echo # analyze query that uses VALUES structure(s): single VALUES structure
+
+analyze
+values (1,2);
+
+analyze format=json
+values (1,2);
+
+--echo # analyze query that uses VALUES structure(s): UNION with VALUES structure(s)
+
+analyze
+select 1,2
+union
+values (1,2),(3,4);
+
+analyze
+values (1,2),(3,4)
+union
+select 1,2;
+
+analyze
+values (5,6)
+union
+values (1,2),(3,4);
+
+analyze format=json
+select 1,2
+union
+values (1,2),(3,4);
+
+analyze format=json
+values (1,2),(3,4)
+union
+select 1,2;
+
+analyze format=json
+values (5,6)
+union
+values (1,2),(3,4);
+
+analyze
+select 1,2
+union
+values (3,4)
+union
+values (1,2);
+
+analyze format=json
+select 1,2
+union
+values (3,4)
+union
+values (1,2);
+
+--echo # analyze query that uses VALUES structure(s): UNION ALL with VALUES structure(s)
+
+analyze
+select 1,2
+union
+values (1,2),(3,4);
+
+analyze
+values (1,2),(3,4)
+union all
+select 1,2;
+
+analyze
+values (1,2)
+union all
+values (1,2),(3,4);
+
+analyze format=json
+values (1,2),(3,4)
+union all
+select 1,2;
+
+analyze format=json
+select 1,2
+union
+values (1,2),(3,4);
+
+analyze format=json
+values (1,2)
+union all
+values (1,2),(3,4);
+
+analyze
+select 1,2
+union all
+values (3,4)
+union all
+values (1,2);
+
+analyze format=json
+select 1,2
+union all
+values (3,4)
+union all
+values (1,2);
+
+--echo # different number of values in TVC
+--error ER_WRONG_NUMBER_OF_VALUES_IN_TVC
+values (1,2),(3,4,5);
+
+--echo # illegal parameter data types in TVC
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+values (1,point(1,1)),(1,1);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+values (1,point(1,1)+1);
+
+--echo # field reference in TVC
+--error ER_FIELD_REFERENCE_IN_TVC
+select * from (values (1), (b), (2)) as new_tvc;
+--error ER_FIELD_REFERENCE_IN_TVC
+select * from (values (1), (t1.b), (2)) as new_tvc;
+
+drop table t1;
diff --git a/mysql-test/t/timeout.test b/mysql-test/t/timeout.test
new file mode 100644
index 00000000000..9f6e692b148
--- /dev/null
+++ b/mysql-test/t/timeout.test
@@ -0,0 +1,60 @@
+--echo #
+--echo # MDEV-11379 - AliSQL: [Feature] Issue#8: SELECT FOR UPDATE WAIT
+--echo # MDEV-11388 - AliSQL: [Feature] Issue#15 DDL FAST FAIL
+--echo #
+CREATE TABLE t1(a INT, b TEXT, c MULTIPOLYGON NOT NULL);
+CREATE INDEX i1 ON t1(a) WAIT 1;
+CREATE FULLTEXT INDEX i2 ON t1(b) WAIT 1;
+CREATE SPATIAL INDEX i3 ON t1(c) WAIT 1;
+ALTER TABLE t1 WAIT 1 COMMENT='test';
+OPTIMIZE TABLE t1 WAIT 1;
+DROP INDEX i1 ON t1 WAIT 1;
+TRUNCATE TABLE t1 WAIT 1;
+RENAME TABLE t1 WAIT 1 TO t2;
+RENAME TABLE t2 NOWAIT TO t1;
+
+connect(con1, localhost, root,,);
+LOCK TABLE t1 WRITE WAIT 31536001;
+
+connection default;
+--error ER_LOCK_WAIT_TIMEOUT
+CREATE INDEX i1 ON t1(a) WAIT 0;
+--error ER_LOCK_WAIT_TIMEOUT
+CREATE INDEX i1 ON t1(a) NOWAIT;
+--error ER_LOCK_WAIT_TIMEOUT
+CREATE FULLTEXT INDEX i2 ON t1(b) WAIT 0;
+--error ER_LOCK_WAIT_TIMEOUT
+CREATE FULLTEXT INDEX i2 ON t1(b) NOWAIT;
+--error ER_LOCK_WAIT_TIMEOUT
+CREATE SPATIAL INDEX i3 ON t1(c) WAIT 0;
+--error ER_LOCK_WAIT_TIMEOUT
+CREATE SPATIAL INDEX i3 ON t1(c) NOWAIT;
+--error ER_LOCK_WAIT_TIMEOUT
+ALTER TABLE t1 WAIT 0 COMMENT='test';
+--error ER_LOCK_WAIT_TIMEOUT
+ALTER TABLE t1 NOWAIT COMMENT='test';
+OPTIMIZE TABLE t1 WAIT 0;
+OPTIMIZE TABLE t1 NOWAIT;
+--error ER_LOCK_WAIT_TIMEOUT
+DROP INDEX i1 ON t1 WAIT 0;
+--error ER_LOCK_WAIT_TIMEOUT
+DROP INDEX i1 ON t1 NOWAIT;
+--error ER_LOCK_WAIT_TIMEOUT
+TRUNCATE TABLE t1 WAIT 0;
+--error ER_LOCK_WAIT_TIMEOUT
+TRUNCATE TABLE t1 NOWAIT;
+--error ER_LOCK_WAIT_TIMEOUT
+RENAME TABLE t1 WAIT 0 TO t2;
+--error ER_LOCK_WAIT_TIMEOUT
+RENAME TABLE t1 NOWAIT TO t2;
+--error ER_LOCK_WAIT_TIMEOUT
+DROP TABLE t1 WAIT 0;
+--error ER_LOCK_WAIT_TIMEOUT
+DROP TABLE t1 NOWAIT;
+--error ER_LOCK_WAIT_TIMEOUT
+LOCK TABLE t1 WRITE WAIT 0;
+--error ER_LOCK_WAIT_TIMEOUT
+LOCK TABLE t1 WRITE NOWAIT;
+
+disconnect con1;
+DROP TABLE t1 WAIT 1;
diff --git a/mysql-test/t/transaction_timeout.test b/mysql-test/t/transaction_timeout.test
new file mode 100644
index 00000000000..f2a044497c5
--- /dev/null
+++ b/mysql-test/t/transaction_timeout.test
@@ -0,0 +1,54 @@
+--source include/no_protocol.inc
+--source include/have_innodb.inc
+--source include/not_embedded.inc
+
+CREATE TABLE t1 (a INT) ENGINE=InnoDB;
+
+--echo # Test idle_transaction_timeout
+connect (c0,localhost,root,,test,,);
+SHOW VARIABLES LIKE 'idle_%transaction_timeout';
+SET autocommit=0;
+SET idle_transaction_timeout=1;
+
+BEGIN;
+SELECT * FROM t1;
+sleep 2;
+
+--error 2006,2013
+SELECT * FROM t1;
+disconnect c0;
+
+--echo # Test idle_readonly_transaction_timeout
+connect (c1,localhost,root,,test,,);
+SHOW VARIABLES LIKE 'idle_%transaction_timeout';
+SET autocommit=0;
+SET idle_readonly_transaction_timeout=1;
+
+BEGIN;
+SELECT * FROM t1;
+sleep 2;
+
+--error 2006,2013 # Gone away
+SELECT * FROM t1;
+disconnect c1;
+
+--echo # Test idle_write_transaction_timeout
+connect (c2,localhost,root,,test,,);
+SHOW VARIABLES LIKE 'idle_%transaction_timeout';
+SET autocommit=0;
+SET idle_write_transaction_timeout=1;
+
+BEGIN;
+SELECT * FROM t1;
+sleep 2;
+
+SELECT * FROM t1;
+INSERT INTO t1 VALUES (1);
+sleep 2;
+
+--error 2006, 2013 # Gone away
+SELECT * FROM t1;
+disconnect c2;
+
+connection default;
+DROP TABLE t1;
diff --git a/mysql-test/t/type_datetime_hires.test b/mysql-test/t/type_datetime_hires.test
index a62c227f563..d220a4601eb 100644
--- a/mysql-test/t/type_datetime_hires.test
+++ b/mysql-test/t/type_datetime_hires.test
@@ -57,6 +57,7 @@ INSERT INTO t2 VALUES
('2006-10-02 21:50:01.567',8),
('2006-10-02 21:50:01.5678',9);
+--sorted_result
select table_name,partition_name,partition_method,partition_expression,partition_description,table_rows from information_schema.partitions where table_name in ('t1', 't2');
drop table t1, t2;
diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test
index 1ba20f0ac9e..8d831567252 100644
--- a/mysql-test/t/variables.test
+++ b/mysql-test/t/variables.test
@@ -1521,7 +1521,7 @@ set session rand_seed1=DEFAULT;
# Bug #14211565 CRASH WHEN ATTEMPTING TO SET SYSTEM VARIABLE TO RESULT OF VALUES()
#
--error ER_BAD_FIELD_ERROR
-set autocommit = values(v);
+set autocommit = value(v);
#
# MDEV-6673 I_S.SESSION_VARIABLES shows global values
diff --git a/mysql-test/t/win_percentile.test b/mysql-test/t/win_percentile.test
new file mode 100644
index 00000000000..468d8cff56b
--- /dev/null
+++ b/mysql-test/t/win_percentile.test
@@ -0,0 +1,104 @@
+CREATE TABLE t1 (name CHAR(10), test double, score DECIMAL(19,4));
+INSERT INTO t1 VALUES
+('Chun', 0, 3), ('Chun', 0, 7),
+('Kaolin', 0.5, 3), ('Kaolin', 0.6, 7),
+('Kaolin', 0.5, 4),
+('Tatiana', 0.8, 4), ('Tata', 0.8, 4);
+
+--echo #
+--echo # Test invalid syntax
+--echo #
+
+--echo # Order by clause has more than one element
+--error ER_PARSE_ERROR
+select percentile_disc(0.5) within group(order by score,test) over (partition by name) from t1;
+--error ER_PARSE_ERROR
+select percentile_cont(0.5) within group(order by score,test) over (partition by name) from t1;
+
+--echo # Order by clause has no element
+--error ER_PARSE_ERROR
+select percentile_disc(0.5) within group() over (partition by name) from t1;
+--error ER_PARSE_ERROR
+select percentile_cont(0.5) within group() over (partition by name) from t1;
+
+--echo # No parameters to the percentile functions
+--error ER_PARSE_ERROR
+select percentile_disc() within group() over (partition by name) from t1;
+--error ER_PARSE_ERROR
+select percentile_cont() within group() over (partition by name) from t1;
+
+
+
+--echo #
+--echo # Test simple syntax
+--echo #
+
+select name, percentile_cont(0.5) within group(order by score) over (partition by name) as c from t1;
+select name, percentile_disc(0.5) within group(order by score) over (partition by name) as c from t1;
+
+--echo # no partition clause
+select name, percentile_disc(0.5) within group(order by score) over () from t1;
+select name, percentile_cont(0.5) within group(order by score) over () from t1;
+
+--echo # argument set to null
+--error ER_WRONG_TYPE_OF_ARGUMENT
+select name, percentile_cont(null) within group(order by score) over (partition by name) from t1;
+--error ER_WRONG_TYPE_OF_ARGUMENT
+select name, percentile_disc(null) within group(order by score) over (partition by name) from t1;
+
+--echo #subqueries having percentile functions
+select * from ( select name , percentile_cont(0.5) within group ( order by score) over (partition by name ) from t1 ) as t;
+select * from ( select name , percentile_disc(0.5) within group ( order by score) over (partition by name ) from t1 ) as t;
+select name from t1 a where (select percentile_disc(0.5) within group (order by score) over (partition by name) from t1 b limit 1) >= 0.5;
+
+--echo #disallowed fields in order by
+--error ER_WRONG_TYPE_FOR_PERCENTILE_FUNC
+select score, percentile_cont(0.5) within group(order by name) over (partition by score) from t1;
+--error ER_WRONG_TYPE_FOR_PERCENTILE_FUNC
+select score, percentile_disc(0.5) within group(order by name) over (partition by score) from t1;
+
+--echo #parameter value should be in the range of [0,1]
+--error ER_ARGUMENT_OUT_OF_RANGE
+select percentile_disc(1.5) within group(order by score) over (partition by name) from t1;
+--error ER_ARGUMENT_OUT_OF_RANGE
+select percentile_cont(1.5) within group(order by score) over (partition by name) from t1;
+
+--echo #Argument should remain constant for the entire partition
+--error ER_ARGUMENT_NOT_CONSTANT
+select name,percentile_cont(test) within group(order by score) over (partition by name) from t1;
+--error ER_ARGUMENT_NOT_CONSTANT
+select name, percentile_disc(test) within group(order by score) over (partition by name) from t1;
+
+--echo #only numerical types are allowed as argument to percentile functions
+--error ER_WRONG_TYPE_OF_ARGUMENT
+select name, percentile_cont(name) within group(order by score) over (partition by name) from t1;
+--error ER_WRONG_TYPE_OF_ARGUMENT
+select name, percentile_disc(name) within group(order by score) over (partition by name) from t1;
+
+--echo #complete query with partition column
+select name,cume_dist() over (partition by name order by score), percentile_disc(0.5) within group(order by score) over (partition by name) as c from t1;
+select name, percentile_cont(0.5) within group(order by score) over (partition by name) as c from t1;
+
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.1) within group(order by score) over (partition by name) as c from t1;
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.2) within group(order by score) over (partition by name) as c from t1;
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.3) within group(order by score) over (partition by name) as c from t1;
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.4) within group(order by score) over (partition by name) as c from t1;
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.5) within group(order by score) over (partition by name) as c from t1;
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.6) within group(order by score) over (partition by name) as c from t1;
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.7) within group(order by score) over (partition by name) as c from t1;
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.8) within group(order by score) over (partition by name) as c from t1;
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(0.9) within group(order by score) over (partition by name) as c from t1;
+select name,cume_dist() over (partition by name order by score) as b, percentile_disc(1) within group(order by score) over (partition by name) as c from t1;
+
+select median(score) over (partition by name), percentile_cont(0) within group(order by score) over (partition by name) as c from t1;
+select median(score) over (partition by name), percentile_cont(0.1) within group(order by score) over (partition by name) as c from t1;
+select median(score) over (partition by name), percentile_cont(0.2) within group(order by score) over (partition by name) as c from t1;
+select median(score) over (partition by name), percentile_cont(0.3) within group(order by score) over (partition by name) as c from t1;
+select median(score) over (partition by name), percentile_cont(0.4) within group(order by score) over (partition by name) as c from t1;
+select median(score) over (partition by name), percentile_cont(0.5) within group(order by score) over (partition by name) as c from t1;
+select median(score) over (partition by name), percentile_cont(0.6) within group(order by score) over (partition by name) as c from t1;
+select median(score) over (partition by name), percentile_cont(0.7) within group(order by score) over (partition by name) as c from t1;
+select median(score) over (partition by name), percentile_cont(0.8) within group(order by score) over (partition by name) as c from t1;
+select median(score) over (partition by name), percentile_cont(0.9) within group(order by score) over (partition by name) as c from t1;
+select median(score) over (partition by name), percentile_cont(1) within group(order by score) over (partition by name) as c from t1;
+drop table t1;
diff --git a/mysql-test/unstable-tests b/mysql-test/unstable-tests
index 0c564f54678..288df9233a5 100644
--- a/mysql-test/unstable-tests
+++ b/mysql-test/unstable-tests
@@ -23,147 +23,166 @@
#
##############################################################################
-# Based on 10.2 49bcc82686c9c305d376183ba4f7bafcbab96bc3
-main.alter_table : Modified in 10.2.13
+main.alter_table : Modified in 10.2.8
+main.alter_table_online : Modified in 10.2.8
+main.analyze_format_json : MDEV-11866 - Mismatch; modified in 10.2.8
main.analyze_stmt_slow_query_log : MDEV-12237 - Wrong result
-main.auth_named_pipe : MDEV-14724 - System error 2
-main.connect2 : MDEV-13885 - Server crash
-main.create : Modified in 10.2.13
-main.create_or_replace : Modified in 10.2.12
-main.cte_nonrecursive : Modified in 10.2.13
-main.cte_recursive : Modified in 10.2.13
-main.ctype_latin1 : Modified in 10.2.12
-main.ctype_like_range : Modified in 10.2.12
-main.ctype_ucs2_uca : Modified in 10.2.12
-main.ctype_utf16_uca : Modified in 10.2.12
-main.ctype_utf32_uca : Modified in 10.2.12
-main.ctype_utf8 : Modified in 10.2.12
-main.ctype_utf8_uca : Modified in 10.2.12
-main.ctype_utf8mb4 : Modified in 10.2.12
-main.ctype_utf8mb4_uca : Modified in 10.2.12
-main.derived : Modified in 10.2.13
-main.derived_cond_pushdown : Modified in 10.2.13
-main.distinct : MDEV-14194 - Crash
-main.dyncol : Modified in 10.2.13
+main.analyze_stmt_orderby : MDEV-11866 - Mismatch
+main.binary_to_hex : Added in 10.2.8
+main.bootstrap : Modified in 10.2.7
+main.check_constraint : Modified in 10.2.8
+main.client_xml : Modified in 10.2.7
+main.count_distinct : Modified in 10.2.8
+main.create_drop_event : Modified in 10.2.8
+main.cte_nonrecursive : Modified in 10.2.7
+main.ctype_ucs : Modified in 10.2.7
+main.derived_cond_pushdown : Modified in 10.2.7
+main.derived_view : Modified in 10.2.7
+main.drop-no_root : MDEV-12633 - Valgrind
+main.errors : Modified in 10.2.8
main.events_2 : MDEV-13277 - Crash
-main.events_slowlog : MDEV-12821 - Wrong result
-main.fulltext : Modified in 10.2.13
-main.func_concat : Modified in 10.2.13
-main.func_isnull : Modified in 10.2.13
-main.func_json : Modified in 10.2.12
-main.func_misc : Modified in 10.2.12
-main.func_set : Modified in 10.2.12
-main.func_str : Modified in 10.2.12
-main.gis-rtree : Modified in 10.2.13
-main.group_by : Modified in 10.2.12
-main.having : Modified in 10.2.12
-main.index_merge_innodb : MDEV-7142 - Plan mismatch
+main.func_concat : Modified in 10.2.7
+main.func_crypt : Modified in 10.2.7
+main.func_group : Modified in 10.2.7
+main.func_json : MDEV-11648 - Crash, valgrind; modified in 10.2.8
+main.func_regexp_pcre : MDEV-13412 - Crash; modified in 10.2.8
+main.gis : Modified in 10.2.8
+main.gis-json : Modified in 10.2.8
+main.group_by : Modified in 10.2.8
+main.index_merge_innodb : MDEV-7142 - Plan mismatch; include file modified in 10.2.8
+main.index_merge_myisam : Include file modified in 10.2.8
+main.innodb_ext_key : Modified in 10.2.7
main.innodb_mysql_lock : MDEV-7861 - Wrong result
-main.join_cache : Modified in 10.2.13
-main.join_outer : Modified in 10.2.12
+main.join_outer : Modified in 10.2.7
main.kill-2 : MDEV-13257 - Wrong result
-main.kill_processlist-6619 : MDEV-10793 - Wrong result
+main.loadxml : Data file modified in 10.2.8
main.log_slow : MDEV-13263 - Wrong result
-main.mdev_14586 : Modified in 10.2.13
-main.mdev-504 : MDEV-15171 - warning
-main.merge : Modified in 10.2.13
-main.myisam_optimize : Modified in 10.2.13
-main.mysql_client_test_nonblock : CONC-208 - Error on Power; MDEV-15096 - exec failed
-main.mysql_upgrade_noengine : MDEV-14355 - Wrong result
+main.mdl : Added in 10.2.7
+main.mdl_sync : Modified in 10.2.7
+main.myisam_debug : Modified in 10.2.7
+main.mysql : Modified in 10.2.7
+main.mysql_client_test : MDEV-12633 - Valgrind
+main.mysql_client_test_comp : MDEV-12633 - Valgrind
+main.mysql_client_test_nonblock : MDEV-12633 - Valgrind, CONC-208 - Error on Power
+main.mysql_upgrade : Modified in 10.2.8
main.mysql_upgrade_ssl : MDEV-13492 - Unknown SSL error
-main.mysqldump : MDEV-14800 - Stack smashing detected
-main.mysqldump-nl : Modified in 10.2.13
+main.mysqlcheck : MDEV-12633 - Valgrind
+main.mysqld--help : Modified in 10.2.8
main.mysqld_option_err : MDEV-12747 - Timeout
main.mysqlhotcopy_myisam : MDEV-10995 - Hang on debug
-main.mysqltest : MDEV-13887 - Wrong result
+main.mysqltest : Modified in 10.2.7
main.openssl_1 : MDEV-13492 - Unknown SSL error
-main.order_by : Modified in 10.2.13
-main.order_by_optimizer_innodb : MDEV-10683 - Wrong result
-main.partition : Modified in 10.2.13
-main.partition_innodb : Modified in 10.2.13
-main.ps : MDEV-11017 - Wrong result; modified in 10.2.13
-main.query_cache_debug : MDEV-15281 - Query cache is disabled; modified in 10.2.13
-main.range_vs_index_merge_innodb : MDEV-15283 - Server has gone away
-main.repair : Modified in 10.2.13
-main.set_statement : MDEV-13183 - Wrong result
+main.order_by : Modified in 10.2.7
+main.partition_alter : Modified in 10.2.7
+main.read_only : Modified in 10.2.8
main.shm : MDEV-12727 - Mismatch, ERROR 2013
-main.show_explain : MDEV-10674 - Wrong result code
-main.sp : MDEV-7866 - Mismatch; modified in 10.2.13
+main.show_check : MDEV-12633 - Valgrind
+main.sp : MDEV-7866 - Mismatch; modified in 10.2.8
+main.sp-destruct : Modified in 10.2.8
+main.sp-security : Modified in 10.2.8
+main.ssl_7937 : MDEV-11546 - Timeout on Windows
main.ssl_ca : MDEV-10895 - SSL connection error on Power
-main.ssl_cert_verify : MDEV-13735 - Server crash
main.ssl_connect : MDEV-13492 - Unknown SSL error
main.ssl_timeout : MDEV-11244 - Crash
main.stat_tables_par : MDEV-13266 - Wrong result
+main.statistics : Modified in 10.2.8
main.status : MDEV-13255 - Wrong result
-main.subselect : Modified in 10.2.13
-main.subselect_innodb : MDEV-10614 - Wrong result
-main.symlink-myisam-11902 : MDEV-15098 - Error 40 from storage engine
-main.tc_heuristic_recover : MDEV-14189 - Wrong result
-main.thread_id_overflow : Added in 10.2.13
-main.type_blob : MDEV-15195 - Wrong result
-main.type_time_6065 : Modified in 10.2.13
-main.union : Modified in 10.2.13
-main.update_innodb : Modified in 10.2.13
-main.userstat : MDEV-12904 - SSL errors
-main.view : Modified in 10.2.12
-main.win : Modified in 10.2.13
-main.xa : Modified in 10.2.13
-main.xml : Modified in 10.2.13
-
-#----------------------------------------------------------------
-
-archive.archive_bitfield : MDEV-11771 - table is marked as crashed
+main.subselect : Modified in 10.2.8
+main.subselect_innodb : Modified in 10.2.7
+main.subselect_mat_cost_bugs : Modified in 10.2.7
+main.subselect_nulls : Modified in 10.2.8
+main.subselect_sj : Modified in 10.2.7
+main.subselect_sj_mat : Modified in 10.2.7
+main.subselect_sj2_mat : Modified in 10.2.7
+main.trigger : Modified in 10.2.7
+main.type_json : Modified in 10.2.8
+main.type_num : Modified in 10.2.8
+main.union : Modified in 10.2.8
+main.view : Modified in 10.2.8
+main.win : Modified in 10.2.8
+main.win_insert_select : Added in 10.2.7
+
+#----------------------------------------------------------------
+
archive.mysqlhotcopy_archive : MDEV-10995 - Hang on debug
#----------------------------------------------------------------
binlog.binlog_commit_wait : MDEV-10150 - Mismatch
-binlog.binlog_flush_binlogs_delete_domain : MDEV-14431 - Wrong exit code
-binlog.binlog_xa_recover : MDEV-8517 - Extra checkpoint
+binlog.binlog_innodb : Modified in 10.2.8
+binlog.binlog_parallel_replication_marks_row : Added in 10.2.7
+binlog.binlog_parallel_replication_marks_stm_mix : Added in 10.2.7
+binlog.binlog_unsafe : Modified in 10.2.8
+binlog.flashback : Modified in 10.2.7
+binlog.mysqladmin : Added in 10.2.7
#----------------------------------------------------------------
binlog_encryption.binlog_xa_recover : MDEV-12908 - Extra checkpoint
-binlog_encryption.encrypted_master : MDEV-14201 - Extra warnings
-binlog_encryption.encrypted_master_switch_to_unencrypted : MDEV-14190 - Can't init tc log
-binlog_encryption.encryption_combo : MDEV-14199 - Table is marked as crashed
binlog_encryption.rpl_binlog_errors : MDEV-12742 - Crash
binlog_encryption.rpl_parallel : MDEV-10653 - Timeout in include
-binlog_encryption.rpl_relayrotate : MDEV-15194 - Timeout
binlog_encryption.rpl_semi_sync : MDEV-11673 - Valgrind
binlog_encryption.rpl_skip_replication : MDEV-13571 - Unexpected warning
-binlog_encryption.rpl_ssl : MDEV-14507 - Timeouts
binlog_encryption.rpl_stm_relay_ign_space : MDEV-13278 - Wrong result (test assertion)
-binlog_encryption.rpl_sync : MDEV-13830 - Assertion failure
#----------------------------------------------------------------
-connect.pivot : MDEV-14803 - Failed to discover table
+connect.alter_xml : Modified in 10.2.8
+connect.alter_xml2 : Added in 10.2.8
+connect.dir : Modified in 10.2.8
+connect.infoschema-9739 : Modified in 10.2.8
+connect.infoschema2-9739 : Added in 10.2.8
+connect.jdbc_new : Modified in 10.2.8
+connect.json : Enabled in 10.2.8
+connect.json_java_2 : Added in 10.2.8
+connect.json_java_3 : Added in 10.2.8
+connect.json_mongo_c : Added in 10.2.8
+connect.json_udf : Enabled in 10.2.8
+connect.json_udf_bin : Enabled in 10.2.8
+connect.mongo_c : Added in 10.2.8
+connect.mongo_java_2 : Added in 10.2.8
+connect.mongo_java_3 : Added in 10.2.8
+connect.mul_new : Added in 10.2.8
+connect.mysql_exec : Modified in 10.2.8
+connect.tbl : MDEV-10179 - Mismatch, MDEV-9844 - Valgrind, crash; modified in 10.2.8
+connect.tbl_thread : MDEV-10179 - Mismatch, MDEV-9844 - Valgrind, crash; added in 10.2.8
connect.vcol : MDEV-12374 - Fails on Windows
+connect.xml : Modified in 10.2.8
+connect.xml2 : Added in 10.2.8
+connect.xml2_grant : Added in 10.2.8
+connect.xml2_html : Added in 10.2.8
+connect.xml2_mdev5261 : Added in 10.2.8
+connect.xml2_mult : Added in 10.2.8
+connect.xml2_zip : Added in 10.2.8
+connect.xml_grant : Modified in 10.2.8
+connect.xml_html : Modified in 10.2.8
+connect.xml_mdev5261 : Modified in 10.2.8
+connect.xml_mult : Modified in 10.2.8
+connect.xml_zip : Modified in 10.2.8
+connect.zip : Modified in 10.2.8
+
+#----------------------------------------------------------------
+
+csv.read_only : Added in 10.2.7
#----------------------------------------------------------------
encryption.create_or_replace : MDEV-9359, MDEV-13516 - Assertion failure, MDEV-12694 - Timeout
-encryption.debug_key_management : MDEV-13841 - Timeout; modified in 10.2.13
-encryption.encrypt_and_grep : MDEV-13765 - Wrong result; modified in 10.2.13
-encryption.innochecksum : MDEV-13644 - Assertion failure
-encryption.innodb-bad-key-change : Modified in 10.2.13
-encryption.innodb-compressed-blob : MDEV-14728 - Unable to get certificate
+encryption.innochecksum : Modified in 10.2.8
+encryption.innodb-checksum-algorithm : Added in 10.2.7
+encryption.innodb-compressed-blob : Modified in 10.2.7
encryption.innodb-discard-import-change : MDEV-12632 - Valgrind
-encryption.innodb_encrypt_log : MDEV-13725 - Wrong result
-encryption.innodb_encryption : Modified in 10.2.13
encryption.innodb-encryption-alter : MDEV-13566 - Lock wait timeout
-encryption.innodb_encryption_discard_import : MDEV-12903 - Wrong result, MDEV-14045 - Error 192
+encryption.innodb_encryption_discard_import : MDEV-12903 - Wrong result
encryption.innodb_encryption_filekeys : MDEV-9962 - Timeout
-encryption.innodb_encryption-page-compression : MDEV-14814 - Timeout in wait condition
+encryption.innodb_encrypt_log : MDEV-13253 - Wrong result; modified in 10.2.8
+encryption.innodb_encrypt_log_corruption : MDEV-13253 - Wrong result
+encryption.innodb_encryption-page-compression : Re-enabled in 10.2.7
encryption.innodb_encryption_tables : MDEV-9359 - Assertion failure
-encryption.innodb-first-page-read : MDEV-14356 - Timeout in wait condition
-encryption.innodb_lotoftables : MDEV-11531 - Operation on a dropped tablespace
-encryption.innodb-missing-key : MDEV-9359 - assertion failure
-encryption.innodb-redo-badkey : MDEV-13893 - Page cannot be decrypted
-encryption.innodb-spatial-index : MDEV-13746 - Wrong result
-encryption.tempfiles : Modified in 10.2.13
+encryption.innodb-first-page-read : Added in 10.2.7
+encryption.innodb-key-rotation-disable : Modified in 10.2.7
+encryption.second_plugin-12863 : Added in 10.2.8
#----------------------------------------------------------------
@@ -171,144 +190,149 @@ engines/rr_trx.* : MDEV-10998 - Not maintained
#----------------------------------------------------------------
-federated.federated_bug_585688 : MDEV-14805 - Server crash, MDEV-12907 - Valgrind
+federated.assisted_discovery : Modified in 10.2.7
federated.federated_innodb : MDEV-10617 - Wrong checksum
federated.federated_transactions : MDEV-10617 - Wrong checksum
federated.federatedx : MDEV-10617 - Wrong checksum
+federated.net_thd_crash-12725 : Added in 10.2.8
#----------------------------------------------------------------
+funcs_1.is_character_sets : Modified in 10.2.8
+funcs_1.is_coll_char_set_appl : Modified in 10.2.8
+funcs_1.is_collations : Modified in 10.2.8
+funcs_1.is_engines : Modified in 10.2.8
+funcs_1.is_events : Modified in 10.2.8
+funcs_1.is_key_column_usage : Include file modified in 10.2.8
+funcs_1.is_key_column_usage_embedded : Modified in 10.2.8
+funcs_1.is_routines_embedded : Modified in 10.2.8
+funcs_1.is_schemata_embedded : Modified in 10.2.8
+funcs_1.is_table_constraints : Modified in 10.2.8
+funcs_1.is_tables_embedded : Modified in 10.2.8
+funcs_1.is_triggers_embedded : Modified in 10.2.8
+funcs_1.is_views_embedded : Modified in 10.2.8
+
funcs_2/charset.* : MDEV-10999 - Not maintained
#----------------------------------------------------------------
-galera.* : Suite is not stable yet
-galera_3nodes.* : Suite is not stable yet
+galera.galera_defaults : Modified in 10.2.7
+galera.MW-309 : Added in 10.2.7
+galera.MW-369 : Added in 10.2.7
#----------------------------------------------------------------
-gcol.innodb_virtual_debug_purge : Modified in 10.2.13
-gcol.innodb_virtual_index : Modified in 10.2.12
-gcol.innodb_virtual_stats : Added in 10.2.12
+gcol.gcol_bugfixes : Modified in 10.2.8
+gcol.gcol_keys_innodb : Modified in 10.2.8
+gcol.gcol_keys_myisam : Include file modified in 10.2.8
+gcol.gcol_rollback : Modified in 10.2.8
+gcol.innodb_virtual_basic : Modified in 10.2.8
+gcol.innodb_virtual_debug_purge : MDEV-13568 - Wrong result; modified in 10.2.8
+gcol.innodb_virtual_purge : Modified in 10.2.8
#----------------------------------------------------------------
-innodb.101_compatibility : MDEV-13891 - Wrong result
-innodb.alter_copy : Added in 10.2.13
-innodb.autoinc_persist : MDEV-15282 - Assertion failure
-innodb.deadlock_detect : Modified in 10.2.13
-innodb.doublewrite : MDEV-12905 - Server crash
-innodb.foreign_key : Modified in 10.2.13
-innodb.group_commit_crash : MDEV-14191 - InnoDB registration failed
-innodb.group_commit_crash_no_optimize_thread : MDEV-13830 - Assertion failure
-innodb.innodb : Modified in 10.2.13
-innodb.innodb-alter-tempfile : MDEV-15285 - Table already exists
-innodb.innodb-autoinc : Modified in 10.2.12
-innodb.innodb_bug14147491 : MDEV-11808 - Index is corrupt; modified in 10.2.13
-innodb.innodb_bug30423 : MDEV-7311 - Wrong result
-innodb.innodb_bug48024 : MDEV-14352 - Assertion failure
-innodb.innodb_bug59641 : MDEV-13830 - Assertion failure
-innodb.innodb_buffer_pool_resize : Added in 10.2.13
-innodb.innodb_buffer_pool_resize_with_chunks : Added in 10.2.13
-innodb.innodb_bulk_create_index_replication : MDEV-15273 - Slave failed to start
-innodb.innodb_corrupt_bit : Modified in 10.2.13
-innodb.innodb_defrag_stats_many_tables : MDEV-14198 - Table is full
+innodb.101_compatibility : MDEV-13570 - Crash; perl file modified in 10.2.7
+innodb.alter_missing_tablespace : Modified in 10.2.7
+innodb.deadlock_detect : MDEV-13262 - Wrong error code
+innodb.defrag_mdl-9155 : MDEV-11336 - Timeout
+innodb.doublewrite : Modified in 10.2.7
+innodb.drop_table_background : Added in 10.2.7
+innodb.foreign_key : Modified in 10.2.8
+innodb.group_commit_binlog_pos : Modified in 10.2.7
+innodb.group_commit_binlog_pos_no_optimize_thread : Modified in 10.2.7
+innodb.ibuf_not_empty : MDEV-12741 - Tablespace error
+innodb.index_merge_threshold : Modified in 10.2.8
+innodb.innodb-32k : Opt file modified in 10.2.8
+innodb.innodb-32k-crash : Opt file modified in 10.2.8
+innodb.innodb-64k : Modified in 10.2.8
+innodb.innodb-64k-crash : Opt file modified in 10.2.8
+innodb.innodb-alter-debug : Modified in 10.2.7
+innodb.innodb-alter-nullable : Modified in 10.2.7
+innodb.innodb-alter-table : Modified in 10.2.7
+innodb.innodb-alter-tempfile : Modified in 10.2.7
+innodb.innodb-alter-timestamp : Modified in 10.2.7
+innodb.innodb_bug14147491 : MDEV-11808 - Index is corrupt
+innodb.innodb_bug53290 : MDEV-12634 - Valgrind
+innodb.innodb_defragment : MDEV-11336 - Mismatch
+innodb.innodb_defragment_fill_factor : Modified in 10.2.8
+innodb.innodb_defragment_small : MDEV-11336 - Mismatch
+innodb.innodb_defrag_binlog : MDEV-11336 - Mismatch
+innodb.innodb_defrag_concurrent : MDEV-11336 - Assertion failure, mismatch
+innodb.innodb_defrag_stats : MDEV-11336 - Mismatch
+innodb.innodb-enlarge-blob : Added in 10.2.8
+innodb.innodb_force_recovery : Modified in 10.2.7
innodb.innodb-get-fk : MDEV-13276 - Server crash
-innodb.innodb-index-debug : Modified in 10.2.12
-innodb.innodb-index-online : MDEV-14809 - Cannot save statistics; modified in 10.2.13
innodb.innodb_information_schema : MDEV-8851 - Wrong result
-innodb.innodb-lru-force-no-free-page : Added in 10.2.13
-innodb.innodb_max_recordsize_32k : MDEV-14801 - Operation failed; modified in 10.2.12
-innodb.innodb_max_recordsize_64k : MDEV-15203 - Wrong result; modified in 10.2.12
-innodb.innodb-page_compression_default : MDEV-13644 - Assertion failure
-innodb.innodb-page_compression_lzma : MDEV-14353 - Wrong result
-innodb.innodb-replace-debug : Modified in 10.2.13
-innodb.innodb_stats_drop_locked : Modified in 10.2.13
-innodb.innodb_stats_persistent_debug : MDEV-14801 - Operation failed
-innodb.innodb-table-online : MDEV-13894 - Wrong result
+innodb.innodb_max_recordsize_32k : Added in 10.2.8
+innodb.innodb_max_recordsize_64k : Added in 10.2.8
+innodb.innodb-page_compression_default : Modified in 10.2.7
+innodb.innodb-page_compression_snappy : Modified in 10.2.7
+innodb.innodb_stats_persistent : Added in 10.2.7
innodb.innodb_sys_semaphore_waits : MDEV-10331 - Semaphore wait
-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
-innodb.lock_deleted : Added in 10.2.12
-innodb.log_corruption : MDEV-13251 - Wrong result; modified in 10.2.13
-innodb.log_data_file_size : MDEV-14204 - Server failed to start
-innodb.log_file_name : MDEV-14193 - Exception
-innodb.log_file_size : MDEV-15202 - Can't initiate database recovery; modified in 10.2.13
-innodb.mvcc : Added in 10.2.13
-innodb.purge_secondary : Added in 10.2.12
-innodb.purge_thread_shutdown : MDEV-13792 - Wrong result
-innodb.read_only_recovery : MDEV-13886 - Server crash; modified in 10.2.13
-innodb.recovery_shutdown : Modified in 10.2.13
-innodb.row_format_redundant : MDEV-15192 - Trying to access missing tablespace
-innodb.table_definition_cache_debug : MDEV-14206 - Extra warning; opt file modified in 10.2.13
-innodb.table_flags : MDEV-13572 - Wrong result
-innodb.temporary_table : MDEV-13265 - Wrong result
-innodb.truncate_inject : Added in 10.2.13
-innodb.truncate_restart : Modified in 10.2.12
-innodb.update-cascade : Added in 10.2.13
-innodb.update_time : MDEV-14804 - Wrong result; modified in 10.2.12
-innodb.xa_recovery : MDEV-15279 - mysqld got exception
-
-innodb_fts.fulltext2 : MDEV-14727 - Long semaphore wait
+innodb.innodb-virtual-columns2 : Added in 10.2.6
+innodb.innodb-wl5522-debug : Modified in 10.2.6
+innodb.insert_debug : Modified in 10.2.6
+innodb.log_corruption : MDEV-13251 - Wrong result
+innodb.log_data_file_size : Modified in 10.2.7
+innodb.log_file : Modified in 10.2.7
+innodb.log_file_name : Modified in 10.2.7
+innodb.log_file_size : MDEV-13471 - Crash; modified in 10.2.7
+innodb.purge_thread_shutdown : Added in 10.2.8
+innodb.read_only_recovery : Modified in 10.2.8
+innodb.rename_table : Added in 10.2.8
+innodb.row_format_redundant : Added in 10.2.7
+innodb.table_flags : MDEV-13572 - Wrong result; added in 10.2.7
+innodb.temporary_table : MDEV-13265 - Wrong result; modified in 10.2.7
+innodb.truncate_debug : MDEV-13256 - Timeout
+innodb.truncate_purge_debug : Modified in 10.2.7
+
innodb_fts.fulltext_misc : MDEV-12636 - Valgrind
-innodb_fts.innodb_fts_plugin : MDEV-13888 - Errors in server log
+innodb_fts.innodb_fts_plugin : Modified in 10.2.7
innodb_fts.innodb_fts_stopword_charset : MDEV-13259 - Table crashed
-innodb_fts.sync : MDEV-14808 - Wrong result
-
-innodb_gis.bug17057168 : Re-enabled in 10.2.13
-innodb_gis.geometry : Modified in 10.2.13
-innodb_gis.gis_split_inf : Modified in 10.2.13
-innodb_gis.innodb_gis_rtree : Added in 10.2.13
-innodb_gis.kill_server : Modified in 10.2.12
-innodb_gis.rtree_compress : Modified in 10.2.13
-innodb_gis.rtree_compress2 : Modified in 10.2.13
-innodb_gis.rtree_concurrent_srch : MDEV-15284 - Wrong result with embedded; modified in 10.2.13
-innodb_gis.rtree_debug : Modified in 10.2.13
-innodb_gis.rtree_estimate : Re-enabled in 10.2.13
-innodb_gis.rtree_multi_pk : Re-enabled in 10.2.13
-innodb_gis.rtree_purge : MDEV-15275 - Timeout; modified in 10.2.13
-innodb_gis.rtree_recovery : MDEV-15274 - Error on check; re-enabled in 10.2.13
-innodb_gis.rtree_search : Modified in 10.2.13
-innodb_gis.rtree_split : MDEV-14208 - Too many arguments; modified in 10.2.13
-innodb_gis.rtree_undo : MDEV-14456 - Timeout in include file; modified in 10.2.13
-innodb_gis.tree_search : Re-enabled in 10.2.13
-innodb_gis.types : Modified in 10.2.13
-
-innodb_zip.cmp_per_index : MDEV-14490 - Table is marked as crashed
-innodb_zip.innochecksum_3 : MDEV-13279 - Extra warnings
-innodb_zip.prefix_index_liftedlimit : Added in 10.2.13
-innodb_zip.wl6470_1 : MDEV-14240 - Assertion failure
+
+innodb_gis.1 : Modified in 10.2.8
+innodb_gis.gis : Modified in 10.2.8
+
+innodb_zip.bug36169 : Modified in 10.2.7
+innodb_zip.bug36172 : Modified in 10.2.7
+innodb_zip.bug52745 : Modified in 10.2.7
+innodb_zip.bug53591 : Modified in 10.2.7
+innodb_zip.bug56680 : Modified in 10.2.7
+innodb_zip.cmp_drop_table : Modified in 10.2.7
+innodb_zip.create_options : Modified in 10.2.7
+innodb_zip.innochecksum : Modified in 10.2.7
+innodb_zip.innochecksum_2 : Modified in 10.2.7
+innodb_zip.innochecksum_3 : MDEV-13279 - Extra warnings; modified in 10.2.8
+innodb_zip.innodb-zip : Modified in 10.2.7
+innodb_zip.recover : Modified in 10.2.7
+innodb_zip.restart : Modified in 10.2.7
innodb_zip.wl6501_1 : MDEV-10891 - Can't create UNIX socket
-innodb_zip.wl5522_debug_zip : MDEV-11600 - Operating system error number 2
-innodb_zip.wl6501_scale_1 : MDEV-13254 - Timeout, MDEV-14104 - Error 192
+innodb_zip.wl5522_debug_zip : MDEV-11600 - Operating system error number 2; modified in 10.2.7
+innodb_zip.wl5522_zip : Modified in 10.2.7
+innodb_zip.wl6344_compress_level : Modified in 10.2.7
+innodb_zip.wl6501_scale_1 : MDEV-13254 - Timeout
#----------------------------------------------------------------
maria.insert_select : MDEV-12757 - Timeout
-maria.lock : Modified in 10.2.13
-maria.maria : MDEV-14430 - Extra warning; modified in 10.2.13
-maria.max_length : Modified in 10.2.13
-maria.repair : Added in 10.2.13
#----------------------------------------------------------------
-mariabackup.apply-log-only : MDEV-14192 - Assertion failure; modified in 10.2.13
-mariabackup.apply-log-only-incr : MDEV-14192 - Assertion failure; modified in 10.2.13
-mariabackup.data_directory : MDEV-15270 - Error on exec
-mariabackup.full_backup : MDEV-13889 - Timeout
-mariabackup.huge_lsn : Modified in 10.2.13
-mariabackup.incremental_backup : MDEV-14192 - Assertion failure
-mariabackup.incremental_encrypted : MDEV-14188 - Wrong result
-mariabackup.log_checksum_mismatch : Added in 10.2.12
-mariabackup.mdev-14447 : MDEV-15201 - Timeout
-mariabackup.missing_ibd : Added in 10.2.13
-mariabackup.partial_exclude : MDEV-15270 - Error on exec
-mariabackup.xbstream : MDEV-14192 - Crash
-mariabackup.xb_aws_key_management : MDEV-15276 - Wrong result; modified in 10.2.13
-mariabackup.xb_page_compress : MDEV-14810 - status: 1, errno: 11
-mariabackup.xb_compressed_encrypted : MDEV-14812 - Segmentation fault
-mariabackup.xb_file_key_management : MDEV-15277 - Assertion failure
+mariabackup.* : suite.pm and .opt modified in 10.2.7
+
+mariabackup.full_backup : Modified in 10.2.7
+mariabackup.huge_lsn : Added in 10.2.8
+mariabackup.incremental_backup : Modified in 10.2.8
+mariabackup.incremental_encrypted : Modified in 10.2.7
+mariabackup.partial : Modified in 10.2.7
+mariabackup.partial_exclude : Modified in 10.2.7
+mariabackup.small_ibd : Modified in 10.2.7
+mariabackup.xb_aws_key_management : Modified in 10.2.7
+mariabackup.xb_compressed_encrypted : Modified in 10.2.7
+mariabackup.xb_file_key_management : Modified in 10.2.7
+mariabackup.xb_partition : Modified in 10.2.7
+mariabackup.xbstream : Modified in 10.2.7
#----------------------------------------------------------------
@@ -316,19 +340,16 @@ mroonga/storage.index_multiple_column_unique_datetime_index_read : MDEV-8643 - V
#----------------------------------------------------------------
-multi_source.gtid : MDEV-14202 - Crash
-multi_source.info_logs : MDEV-12629 - Valgrind, MDEV-10042 - wrong result
+multi_source.info_logs : MDEV-12629 - Valgrind
+multi_source.mdev-9544 : Added in 10.2.7
multi_source.reset_slave : MDEV-10690 - Wrong result
multi_source.simple : MDEV-4633 - Wrong result
#----------------------------------------------------------------
-parts.partition_alter_innodb : Added in 10.2.12
-parts.partition_alter_maria : Modified in 10.2.12
-parts.partition_alter_myisam : Added in 10.2.12
-parts.partition_auto_increment_maria : MDEV-14430 - Extra warning
-parts.partition_basic_symlink_innodb : Modified in 10.2.13
-parts.partition_debug_innodb : MDEV-10891 - Can't create UNIX socket; MDEV-15095 - Table doesn't exist
+parts.longname : Added in 10.2.7
+parts.partition_debug_innodb : MDEV-10891 - Can't create UNIX socket
+parts.quoting : Added in 10.2.7
#----------------------------------------------------------------
@@ -336,19 +357,16 @@ percona.* : MDEV-10997 - Not maintained
#----------------------------------------------------------------
-perfschema.bad_option_1 : MDEV-13892 - Timeout
+perfschema.bad_option_2 : Modified in 10.2.7
perfschema.bad_option_3 : MDEV-12728 - Timeout on Power
-perfschema.bad_option_5 : MDEV-14197 - Timeout
-perfschema.dml_file_instances : MDEV-15179 - Wrong result
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.misc : Modified in 10.2.12
+perfschema.privilege_table_io : Modified in 10.2.8
perfschema.setup_actors : MDEV-10679 - Crash
-perfschema.socket_summary_by_event_name_func : MDEV-10622 - Wrong result
perfschema.stage_mdl_procedure : MDEV-11545 - Missing row
-perfschema.threads_mysql : MDEV-10677 - Wrong result
+perfschema.start_server_1_digest : Added in 10.2.7
#----------------------------------------------------------------
@@ -356,75 +374,45 @@ perfschema_stress.* : MDEV-10996 - Not maintained
#----------------------------------------------------------------
-plugins.binlog-simple_plugin_check : Added in 10.2.12
plugins.feedback_plugin_send : MDEV-7932, MDEV-11118 - Connection problems and such
-plugins.thread_pool_server_audit : MDEV-14295 - Wrong result
#----------------------------------------------------------------
-rocksdb.* : MyRocks is beta-quality and tests are unstable
-rocksdb_sys_vars.* : MyRocks is beta-quality and tests are unstable
+rocksdb.* : MyRocks is alpha-quality and tests are unstable
#----------------------------------------------------------------
-roles.flush_roles-12366 : Added in 10.2.12
-roles.set_role-13655 : Added in 10.2.12
+roles.current_role_view-12666 : Added in 10.2.7
+roles.show_create_database-10463 : Added in 10.2.7
#----------------------------------------------------------------
+rpl.circular_serverid0 : Added in 10.2.7
rpl.rpl_binlog_errors : MDEV-12742 - Crash
rpl.rpl_binlog_index : MDEV-9501 - Failed registering on master
-rpl.rpl_ctype_latin1 : MDEV-14813 - Wrong result on Mac; added in 10.2.12
-rpl.rpl_domain_id_filter_io_crash : MDEV-12729 - Timeout in include file, MDEV-13677 - Server crash
+rpl.rpl_domain_id_filter_io_crash : MDEV-12729 - Timeout in include file
rpl.rpl_domain_id_filter_restart : MDEV-10684 - Wrong result
-rpl.rpl_extra_col_master_myisam : MDEV-14203 - Extra warning
-rpl.rpl_gtid_crash : MDEV-9501 - Failed registering on master, MDEV-13643 - Lost connection
-rpl.rpl_gtid_delete_domain : MDEV-14463 - Timeout
+rpl.rpl_gtid_crash : MDEV-9501 - Failed registering on master
rpl.rpl_gtid_errorhandling : MDEV-13261 - Crash
-rpl.rpl_gtid_reconnect : MDEV-14497 - Crash
-rpl.rpl_gtid_stop_start : MDEV-11621 - Table marked as crashed
-rpl.rpl_insert_id : MDEV-15197 - Wrong result
+rpl.rpl_gtid_stop_start : MDEV-11621 - Table marked as crashed, MDEV-12731 - Valgrind
rpl.rpl_mariadb_slave_capability : MDEV-11018 - Extra lines in binlog
-rpl.rpl_mdev6020 : MDEV-15272 - Server crash
-rpl.rpl_mixed_mixing_engines : MDEV-14489 - Sync slave with master failed
-rpl.rpl_non_direct_mixed_mixing_engines : MDEV-14489 - Sync slave with master failed
-rpl.rpl_non_direct_row_mixing_engines : MDEV-14491 - Long semaphore wait
-rpl.rpl_non_direct_stm_mixing_engines : MDEV-14489 - Failed sync_slave_with_master
+rpl.rpl_mdev-11092 : Added in 10.2.7
rpl.rpl_parallel : MDEV-12730 - Assertion failure
-rpl.rpl_parallel_conflicts : MDEV-15272 - Server crash
rpl.rpl_parallel_mdev6589 : MDEV-12979 - Assertion failure
-rpl.rpl_parallel_optimistic : MDEV-15278 - Failed to sync with master
+rpl.rpl_parallel_optimistic : Modified in 10.2.7
rpl.rpl_parallel_optimistic_nobinlog : MDEV-12746 - Timeouts, mismatch
rpl.rpl_parallel_retry : MDEV-11119 - Crash
-rpl.rpl_parallel_temptable : MDEV-10356 - Crash
-rpl.rpl_row_drop_create_temp_table : MDEV-14487 - Wrong result
-rpl.rpl_row_img_eng_min : MDEV-13875 - diff_files failed
-rpl.rpl_row_index_choice : MDEV-15196 - Slave crash
-rpl.rpl_row_log : Included test modified in 10.2.12
-rpl.rpl_row_log_innodb : Included test modified in 10.2.12
-rpl.rpl_row_mixing_engines : MDEV-14491 - Long semaphore wait
-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
-rpl.rpl_semi_sync_skip_repl : Added in 10.2.13
-rpl.rpl_semi_sync_uninstall_plugin : MDEV-7140 - Assorted failures
+rpl.rpl_temporal_mysql56_to_mariadb53 : MDEV-9501 - Failed registering on master
+rpl.rpl_reset_slave_fail : Added in 10.2.8
+rpl.rpl_semi_sync_uninstall_plugin : MDEV-10892 - Assertion failure
rpl.rpl_set_statement_default_master : MDEV-13258 - Extra warning
-rpl.rpl_show_slave_hosts : MDEV-10681 - Crash
rpl.rpl_skip_replication : MDEV-13258 - Extra warning
rpl.rpl_slave_grp_exec : MDEV-10514 - Deadlock
-rpl.rpl_slave_load_tmpdir_not_exist : MDEV-14203 - Extra warning
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_log : Included test modified in 10.2.12
-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
-rpl.rpl_stm_stop_middle_group : MDEV-13791 - Server crash
-rpl.rpl_sync : MDEV-13830 - Assertion failure
-rpl.rpl_temporal_mysql56_to_mariadb53 : MDEV-9501 - Failed registering on master
rpl.rpl_upgrade_master_info : MDEV-11620 - Table marked as crashed
-rpl.sec_behind_master-5114 : MDEV-13878 - Wrong result
rpl/extra/rpl_tests.* : MDEV-10994 - Not maintained
@@ -432,10 +420,6 @@ rpl/extra/rpl_tests.* : MDEV-10994 - Not maintained
spider.basic_sql : MDEV-11186 - Internal check fails
-spider/bg.direct_aggregate : MDEV-7098 - Packets out of order
-spider/bg.ha_part : MDEV-7914 - Crash
-spider/bg.spider3_fixes : MDEV-12639 - Syntax error
-
spider/handler.* : MDEV-10990 - Not maintained
#----------------------------------------------------------------
@@ -449,66 +433,90 @@ storage_engine.* : Not always timely maintained
#----------------------------------------------------------------
-sys_vars.innodb_buffer_pool_dump_at_shutdown_basic : MDEV-14280 - Unexpected error
-sys_vars.innodb_print_lock_wait_timeout_info_basic : Added in 10.2.13
-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.wsrep_on_basic : Opt file added in 10.2.12
+sys_vars.back_log_basic : Modified in 10.2.8
+sys_vars.delay_key_write_func : Modified in 10.2.7
+sys_vars.innodb_sched_priority_cleaner_basic : Modified in 10.2.7
+sys_vars.rpl_init_slave_func : MDEV-10149 - Test assertion
+sys_vars.tmp_disk_table_size_basic : Added in 10.2.7
+sys_vars.tmp_disk_table_size_func : Added in 10.2.7
+sys_vars.tmp_memory_table_size_basic : Added in 10.2.7
#----------------------------------------------------------------
-tokudb.card_scale_percent : Modified in 10.2.13
+tokudb.background_job_manager : Modified in 10.2.7
+tokudb.bug-1657908 : Added in 10.2.7
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
-tokudb.dir_per_db : MDEV-11537 - Wrong result
-tokudb.hotindex-insert-2 : MDEV-15271 - Timeout
+tokudb.dir_cmd : Added in 10.2.7
tokudb.hotindex-insert-bigchar : MDEV-12640 - Crash
-tokudb.hotindex-update-0 : MDEV-15198 - Timeout
tokudb.hotindex-update-1 : MDEV-12640 - Crash
-tokudb.locking-read-repeatable-read-1 : Added in 10.2.13
-tokudb.locking-read-repeatable-read-2 : Added in 10.2.13
-tokudb.nonflushing_analyze_debug : Added in 10.2.13
+tokudb.kill_query_blocked_in_lt : Added in 10.2.8
+tokudb.locks-select-update-3 : Modified in 10.2.8
tokudb.rows-32m-rand-insert : MDEV-12640 - Crash
tokudb.rows-32m-seq-insert : MDEV-12640 - Crash
-tokudb.row_format : Modified in 10.2.13
-tokudb.savepoint-5 : MDEV-15280 - Wrong result
-tokudb.type_datetime : MDEV-15193 - Wrong result
-
-tokudb_alter_table.hcad_all_add2 : MDEV-15269 - Timeout
-
-tokudb_bugs.xa : MDEV-11804 - Lock wait timeout
+tokudb_mariadb.mdev12972 : Modified in 10.2.8
tokudb_mariadb.mdev6657 : MDEV-12737 - Mismatch or valgrind
-tokudb-rpl.rpl_tokudb_row_log : Included test modified in 10.2.12
-tokudb-rpl.rpl_tokudb_stm_log : Included test modified in 10.2.12
-
-tokudb_backup.* : MDEV-11001 - Missing include file
+tokudb_backup.* : MDEV-11001 - Missing include file; suite.pm modified in 10.2.7
tokudb_sys_vars.* : MDEV-11001 - Missing include file
tokudb_rpl.* : MDEV-11001 - Missing include file
-tokudb_parts.nonflushing_analyze_debug : Added in 10.2.13
+tokudb_backup.backup_master_info : Added in 10.2.7
+tokudb_backup.backup_master_state : Added in 10.2.7
+tokudb_backup.empty_slave_info_file : Added in 10.2.7
+tokudb_backup.innodb_use_native_aio_enabled : Added in 10.2.7
+tokudb_backup.rpl_safe_slave : Include file modified in 10.2.8
+tokudb_backup.rpl_tokudb_commit_sync : Added in 10.2.7
+
+tokudb_bugs.db233 : Modified in 10.2.7
+tokudb_bugs.leak172 : Modified in 10.2.7
+
tokudb_parts.partition_alter4_tokudb : MDEV-12640 - Lost connection
-tokudb_perfschema.crash_tokudb : Added in 10.2.13
-tokudb_perfschema.start_server_tokudb : Added in 10.2.13
+rpl-tokudb.rpl_not_null_tokudb : Modified in 10.2.8
+rpl-tokudb.rpl_parallel_tokudb_delete_pk : Opt file modified in 10.2.8
+rpl-tokudb.rpl_parallel_tokudb_update_pk_uc0_lookup0 : Modified in 10.2.8
+rpl-tokudb.rpl_parallel_tokudb_write_pk : Modified in 10.2.8
+rpl-tokudb.rpl_rfr_disable_on_expl_pk_absence : Added in 10.2.8
+rpl-tokudb.rpl_row_basic_3tokudb : Modified in 10.2.8
+rpl-tokudb.rpl_tokudb_commit_after_flush : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_insert_id : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_insert_id_pk : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_multi_update : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_multi_update2 : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_multi_update3 : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_rfr_partition_table : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_crash_safe : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_img_blobs : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_img_eng_full : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_img_eng_min : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_img_eng_noblob : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_img_idx_full : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_img_idx_min : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_img_idx_noblob : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_log : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_lower_case_table_names : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_sp003 : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_sp006 : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_row_trig004 : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_stm_log : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_stm_mixed_crash_safe : Added in 10.2.8
+rpl-tokudb.rpl_tokudb_stm_mixed_lower_case_table_names : Added in 10.2.8
#----------------------------------------------------------------
-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
-unit.lf : MDEV-12897 - Signal 11 thrown
#----------------------------------------------------------------
-wsrep.binlog_format : MDEV-11532 - Could not execute check-testcase
-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
+vcol.cross_db : Added in 10.2.7
+vcol.upgrade : Added in 10.2.7
+
+#----------------------------------------------------------------
+
+wsrep.pool_of_threads : MDEV-12234 - GLIBCXX_3.4.20 not found; modified in 10.2.7
wsrep_info.plugin : MDEV-13569 - No nodes coming from prim view
diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp
index d9597e625fe..3def1bd083b 100644
--- a/mysql-test/valgrind.supp
+++ b/mysql-test/valgrind.supp
@@ -1239,7 +1239,7 @@
}
{
- XtraDB uses gcc __thread variables
+ TokuDB uses gcc __thread variables
Memcheck:Leak
fun:memalign
fun:*