summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2018-09-07 22:09:28 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2018-09-07 22:09:28 +0300
commit4901f31c13f91e130f077f2f77b32c40b0036e32 (patch)
tree586f0ffeba0748e75064899d22d8179897d0df7f
parentc3a80175b1978ced6c2a89a92707d24149aee9e9 (diff)
parent59950df533ab7231c77a59ec3e27cef855318939 (diff)
downloadmariadb-git-4901f31c13f91e130f077f2f77b32c40b0036e32.tar.gz
Merge 10.2 into 10.3
-rw-r--r--extra/mariabackup/encryption_plugin.cc50
-rw-r--r--extra/mariabackup/xtrabackup.cc7
-rw-r--r--mysql-test/collections/10.0-compatible.list591
-rw-r--r--storage/innobase/btr/btr0sea.cc2
-rw-r--r--storage/innobase/handler/ha_innodb.cc4
-rw-r--r--storage/innobase/include/log0recv.h26
-rw-r--r--storage/innobase/include/srv0srv.h6
-rw-r--r--storage/innobase/log/log0recv.cc31
-rw-r--r--storage/innobase/row/row0purge.cc5
9 files changed, 672 insertions, 50 deletions
diff --git a/extra/mariabackup/encryption_plugin.cc b/extra/mariabackup/encryption_plugin.cc
index 7f230256e7a..6335cdf3cd7 100644
--- a/extra/mariabackup/encryption_plugin.cc
+++ b/extra/mariabackup/encryption_plugin.cc
@@ -51,6 +51,36 @@ static void add_to_plugin_load_list(const char *plugin_def)
static char XTRABACKUP_EXE[] = "xtrabackup";
+/*
+ Read "plugin-load" value (encryption plugin) from backup-my.cnf during
+ prepare phase.
+ The value is stored during backup phase.
+*/
+static std::string get_encryption_plugin_from_cnf()
+{
+ FILE *f = fopen("backup-my.cnf", "r");
+ if (!f)
+ {
+ msg("cannot open backup-my.cnf for reading\n");
+ exit(EXIT_FAILURE);
+ }
+ char line[512];
+ std::string plugin_load;
+ while (fgets(line, sizeof(line), f))
+ {
+ if (strncmp(line, "plugin_load=", 12) == 0)
+ {
+ plugin_load = line + 12;
+ // remote \n at the end of string
+ plugin_load.resize(plugin_load.size() - 1);
+ break;
+ }
+ }
+ fclose(f);
+ return plugin_load;
+}
+
+
void encryption_plugin_backup_init(MYSQL *mysql)
{
MYSQL_RES *result;
@@ -78,7 +108,17 @@ void encryption_plugin_backup_init(MYSQL *mysql)
std::string plugin_load(name);
if (library)
+ {
+ /* Remove shared library suffixes, in case we'll prepare on different OS.*/
+ const char *extensions[] = { ".dll", ".so", 0 };
+ for (size_t i = 0; extensions[i]; i++)
+ {
+ const char *ext = extensions[i];
+ if (ends_with(library, ext))
+ library[strlen(library) - strlen(ext)] = 0;
+ }
plugin_load += std::string("=") + library;
+ }
oss << "plugin_load=" << plugin_load << std::endl;
@@ -140,14 +180,18 @@ extern int finalize_encryption_plugin(st_plugin_int *plugin);
void encryption_plugin_prepare_init(int argc, char **argv)
{
-
- if (!xb_plugin_load)
+ std::string plugin_load= get_encryption_plugin_from_cnf();
+ if (plugin_load.size())
+ {
+ msg("Loading encryption plugin from %s\n", plugin_load.c_str());
+ }
+ else
{
finalize_encryption_plugin(0);
return;
}
- add_to_plugin_load_list(xb_plugin_load);
+ add_to_plugin_load_list(plugin_load.c_str());
if (xb_plugin_dir)
strncpy(opt_plugin_dir, xb_plugin_dir, FN_REFLEN);
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc
index 7dee801c921..154999384e9 100644
--- a/extra/mariabackup/xtrabackup.cc
+++ b/extra/mariabackup/xtrabackup.cc
@@ -709,7 +709,6 @@ enum options_xtrabackup
OPT_INNODB_LOG_CHECKSUMS,
OPT_XTRA_INCREMENTAL_FORCE_SCAN,
OPT_DEFAULTS_GROUP,
- OPT_PLUGIN_LOAD,
OPT_INNODB_ENCRYPT_LOG,
OPT_CLOSE_FILES,
OPT_CORE_FILE,
@@ -1268,11 +1267,7 @@ struct my_option xb_server_options[] =
&xb_plugin_dir, &xb_plugin_dir,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "plugin-load", OPT_PLUGIN_LOAD, "encrypton plugin to load during 'prepare' phase.",
- &xb_plugin_load, &xb_plugin_load,
- 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
-
- { "innodb-encrypt-log", OPT_INNODB_ENCRYPT_LOG, "encrypton plugin to load",
+ { "innodb-encrypt-log", OPT_INNODB_ENCRYPT_LOG, "Whether to encrypt innodb log",
&srv_encrypt_log, &srv_encrypt_log,
0, GET_BOOL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
diff --git a/mysql-test/collections/10.0-compatible.list b/mysql-test/collections/10.0-compatible.list
new file mode 100644
index 00000000000..415c74ab00c
--- /dev/null
+++ b/mysql-test/collections/10.0-compatible.list
@@ -0,0 +1,591 @@
+main.1st
+main.adddate_454
+main.almost_full
+main.alter_table_autoinc-5574
+main.alter_table_errors
+main.alter_table_mdev539_maria
+main.alter_table_mdev539_myisam
+main.alter_table_online
+main.alter_table_trans
+main.analyze
+main.analyze_stmt
+main.analyze_stmt_orderby
+main.analyze_stmt_slow_query_log
+main.ansi
+main.assign_key_cache
+main.auth_rpl
+main.auto_increment
+main.auto_increment_ranges_innodb
+main.auto_increment_ranges_myisam
+main.bad_frm_crash_5029
+main.bench_count_distinct
+main.bigint
+main.binary
+main.binary_to_hex
+main.blackhole
+main.blackhole_plugin
+main.bool
+main.bootstrap
+main.bug12427262
+main.bug13633383
+main.bug46760
+main.bug47671
+main.bulk_replace
+main.case
+main.change_user
+main.check_constraint_show
+main.client_xml
+main.comment_column
+main.comment_column2
+main.comment_index
+main.comments
+main.comment_table
+main.commit_1innodb
+main.compare
+main.compound
+main.contributors
+main.count_distinct
+main.count_distinct2
+main.create_drop_db
+main.create_drop_event
+main.create_drop_function
+main.create_drop_index
+main.create_drop_procedure
+main.create_drop_server
+main.create_drop_trigger
+main.create_drop_user
+main.create_drop_view
+main.create_not_windows
+main.create_select_tmp
+main.create-uca
+main.create_user
+main.create_w_max_indexes_64
+main.ctype_ascii
+main.ctype_big5
+main.ctype_binary
+main.ctype_collate
+main.ctype_cp1250_ch
+main.ctype_cp1251
+main.ctype_cp850
+main.ctype_cp932
+main.ctype_cp932_binlog_row
+main.ctype_cp932_binlog_stm
+main.ctype_create
+main.ctype_eucjpms
+main.ctype_euckr
+main.ctype_filename
+main.ctype_filesystem
+main.ctype_gb2312
+main.ctype_gbk
+main.ctype_gbk_binlog
+main.ctype_gbk_export_import
+main.ctype_hebrew
+main.ctype_latin1
+main.ctype_latin1_de
+main.ctype_latin2
+main.ctype_latin2_ch
+main.ctype_ldml
+main.ctype_many
+main.ctype_mb
+main.ctype_nopad_8bit
+main.ctype_partitions
+main.ctype_recoding
+main.ctype_sjis
+main.ctype_swe7
+main.ctype_tis620
+main.ctype_uca
+main.ctype_uca_innodb
+main.ctype_uca_partitions
+main.ctype_ucs
+main.ctype_ucs2_def
+main.ctype_ucs2_query_cache
+main.ctype_ucs2_uca
+main.ctype_ujis
+main.ctype_ujis_ucs2
+main.ctype_upgrade
+main.ctype_utf16
+main.ctype_utf16_def
+main.ctype_utf16le
+main.ctype_utf16_uca
+main.ctype_utf32
+main.ctype_utf32_uca
+main.ctype_utf8
+main.ctype_utf8mb4
+main.ctype_utf8mb4_heap
+main.ctype_utf8mb4_innodb
+main.ctype_utf8mb4_myisam
+main.ctype_utf8mb4_uca
+main.ctype_utf8_uca
+main.date_formats
+main.datetime_456
+main.default_storage_engine
+main.delete
+main.delete_returning
+main.deprecated_features
+main.derived_cond_pushdown
+main.derived_opt
+main.derived_view
+main.distinct
+main.drop-no_root
+main.dyncol
+main.empty_server_name-8224
+main.empty_table
+main.endspace
+main.enforce_storage_engine_opt
+main.errors
+main.events_2
+main.events_logs_tests
+main.events_microsec
+main.events_restart
+main.events_scheduling
+main.events_slowlog
+main.events_trans
+main.execution_constants
+main.explain
+main.explain_json
+main.explain_json_format_partitions
+main.explain_json_innodb
+main.explain_non_select
+main.ext_key_noPK_6794
+main.fast_prefix_index_fetch_innodb
+main.features
+main.filesort_bad_i_s-7585
+main.flush2
+main.foreign_key
+main.frm_bad_row_type-7333
+main.fulltext
+main.fulltext2
+main.fulltext3
+main.fulltext_cache
+main.fulltext_charsets
+main.fulltext_derived_4257
+main.fulltext_derived_4316
+main.fulltext_distinct
+main.fulltext_left_join
+main.fulltext_multi
+main.fulltext_order_by
+main.fulltext_update
+main.fulltext_var
+main.func_analyse
+main.func_concat
+main.func_crypt
+main.func_date_add
+main.func_default
+main.func_des_encrypt
+main.func_digest
+main.func_encrypt
+main.func_encrypt_ucs2
+main.func_equal
+main.func_gconcat
+main.func_group_innodb
+main.func_hybrid_type
+main.func_if
+main.func_in
+main.func_isnull
+main.func_like
+main.func_math
+main.func_op
+main.func_regexp
+main.func_regexp_pcre
+main.func_rollback
+main.func_sapdb
+main.func_set
+main.func_system
+main.func_test
+main.func_time
+main.func_time_hires
+main.func_timestamp
+main.function_defaults
+main.function_defaults_innodb
+main.gcc296
+main.get_diagnostics
+main.gis
+main.gis2
+main.gis-alter_table_online
+main.gis-precise
+main.gis-rt-precise
+main.gis-rtree
+main.grant_4332
+main.greedy_optimizer
+main.group_by
+main.group_by_innodb
+main.group_by_null
+main.group_min_max
+main.group_min_max_innodb
+main.handler_read_last
+main.handlersocket
+main.having
+main.help
+main.host_cache_size_functionality
+main.huge_frm-6224
+main.implicit_char_to_num_conversion
+main.implicit_commit
+main.in_datetime_241
+main.index_intersect
+main.index_intersect_innodb
+main.index_merge_innodb
+main.index_merge_myisam
+main.information_schema2
+main.information_schema_all_engines
+main.information_schema_chmod
+main.information_schema_inno
+main.information_schema_parameters
+main.information_schema_part
+main.information_schema_routines
+main.information_schema_stats
+main.init_file
+main.init_file_longline_3816
+main.init_file_set_password-7656
+main.innodb_bug878769
+main.innodb_ext_key
+main.innodb_group
+main.innodb_icp
+main.innodb_ignore_builtin
+main.innodb_mrr_cpk
+main.innodb_utf8
+main.insert
+main.insert_innodb
+main.insert_select
+main.insert_update
+main.insert_update_autoinc-7150
+main.join
+main.join_cache
+main.join_crash
+main.join_nested
+main.join_nested_jcl6
+main.join_optimizer
+main.join_outer
+main.join_outer_innodb
+main.join_outer_jcl6
+main.key
+main.key_cache
+main.key_diff
+main.key_primary
+main.keyread
+main.keywords
+main.last_value
+main.limit
+main.limit_rows_examined
+main.loaddata_autocom_innodb
+main.locale
+main.log_errchk
+main.log_slow
+main.log_state_bug33693
+main.log_tables_upgrade
+main.long_tmpdir
+main.lowercase_mixed_tmpdir
+main.lowercase_table
+main.lowercase_table5
+main.lowercase_table_grant
+main.lowercase_table_qcache
+main.lowercase_utf8
+main.lowercase_view
+main.mdev13607
+main.mdev_14586
+main.mdev316
+main.mdl
+main.merge_innodb
+main.merge_mmap
+main.metadata
+main.mix2_myisam_ucs2
+main.mrr_derived_crash_4610
+main.mrr_icp_extra
+main.multi_statement
+main.multi_update2
+main.multi_update_innodb
+main.multi_update_tiny_hash
+main.myisam-blob
+main.myisam_enable_keys-10506
+main.myisam_explain_non_select_all
+main.myisam_icp
+main.myisam_mrr
+main.myisampack
+main.myisam-system
+main.mysql
+main.mysql5613mysql
+main.mysql57_virtual
+main.mysqladmin
+main.mysql_binary_mode
+main.mysqlcheck
+main.mysql_comments
+main.mysql_cp932
+main.mysqld--defaults-file
+main.mysqld--help
+main.mysqld_help_crash-9183
+main.mysqld_option_err
+main.mysqldump-compat
+main.mysqldump-nl
+main.mysqldump-no-binlog
+main.mysqldump_restore
+main.mysql_not_windows
+main.mysql_protocols
+main.mysqlshow
+main.mysqlslap
+main.mysqltest_256
+main.mysqltest_cont_on_error
+main.mysql_tzinfo_to_sql_symlink
+main.mysql_upgrade_noengine
+main.mysql_upgrade_no_innodb
+main.mysql_upgrade_ssl
+main.mysql_upgrade_view
+main.negation_elimination
+main.no_binlog
+main.no_password_column-mdev-11170
+main.null
+main.null_key
+main.odbc
+main.olap
+main.old-mode
+main.order_by
+main.order_by_innodb
+main.order_by-mdev-10122
+main.order_by_optimizer
+main.order_by_optimizer_innodb
+main.order_by_sortkey
+main.order_by_zerolength-4285
+main.order_fill_sortbuf
+main.outfile_loaddata
+main.parser
+main.parser_bug21114_innodb
+main.parser_precedence
+main.parser_stack
+main.partition
+main.partition_binlog
+main.partition_binlog_stmt
+main.partition_blackhole
+main.partition_bug18198
+main.partition_cache_innodb
+main.partition_cache_myisam
+main.partition_charset
+main.partition_column
+main.partition_column_prune
+main.partition_datatype
+main.partition_disabled
+main.partition_error
+main.partition_example
+main.partition_exchange
+main.partition_explicit_prune
+main.partition_hash
+main.partition_key_cache
+main.partition_list
+main.partition_mgm
+main.partition_mgm_err
+main.partition_mgm_err2
+main.partition_myisam
+main.partition_not_blackhole
+main.partition_not_windows
+main.partition_order
+main.partition_pruning
+main.partition_range
+main.partition_rename_longfilename
+main.partition_truncate
+main.partition_utf8
+main.perror
+main.plugin
+main.plugin_auth_qa
+main.plugin_auth_qa_2
+main.plugin_auth_qa_3
+main.plugin_innodb
+main.plugin_load
+main.plugin_loaderr
+main.plugin_load_option
+main.plugin_maturity
+main.preload
+main.profiling
+main.progress_976225
+main.ps_10nestset
+main.ps_11bugs
+main.ps_1general
+main.ps_2myisam
+main.ps_3innodb
+main.ps_4heap
+main.ps_5merge
+main.ps_change_master
+main.ps_ddl1
+main.ps_max_subselect-5113
+main.ps_not_windows
+main.query_cache
+main.query_cache_innodb
+main.query_cache_merge
+main.query_cache_with_views
+main.range
+main.range_innodb
+main.range_mrr_icp
+main.range_vs_index_merge
+main.range_vs_index_merge_innodb
+main.renamedb
+main.reopen_temp_table
+main.repair
+main.repair_symlink-5543
+main.replace
+main.rollback
+main.round
+main.row
+main.row-checksum
+main.row-checksum-old
+main.rowid_order_innodb
+main.rpl_mysqldump_slave
+main.second_frac-9175
+main.select
+main.select_found
+main.selectivity
+main.selectivity_innodb
+main.selectivity_no_engine
+main.select_jcl6
+main.select_pkeycache
+main.select_safe
+main.servers
+main.set_password
+main.set_statement_notembedded
+main.set_statement_notembedded_binlog
+main.show
+main.show_bad_definer-5553
+main.show_create_user
+main.show_function_with_pad_char_to_full_length
+main.show_profile
+main.show_row_order-9226
+main.sighup-6580
+main.signal
+main.signal_demo1
+main.signal_demo2
+main.signal_demo3
+main.signal_sqlmode
+main.single_delete_update
+main.single_delete_update_innodb
+main.skip_grants
+main.skip_log_bin
+main.sp-big
+main.sp-bugs
+main.sp-bugs2
+main.sp-destruct
+main.sp-dynamic
+main.sp-error
+main.sp-fib
+main.sp_gis
+main.sp-group
+main.sp_missing_4665
+main.sp-no-code
+main.sp-prelocking
+main.sp_stress_case
+main.sp_trans
+main.sp_trans_log
+main.sp-ucs2
+main.sp-vars
+main.ssl_7937
+main.ssl_8k_key
+main.ssl_and_innodb
+main.ssl_ca
+main.ssl_cert_verify
+main.ssl_connect
+main.ssl_crl_clients
+main.stack-crash
+main.statistics
+main.statistics_index_crash-7362
+main.stat_tables
+main.stat_tables_disabled
+main.stat_tables_innodb
+main.stat_tables_partition
+main.stat_tables_repl
+main.strict
+main.strict_autoinc_1myisam
+main.strict_autoinc_2innodb
+main.strict_autoinc_3heap
+main.str_to_datetime_457
+main.subselect2
+main.subselect3
+main.subselect3_jcl6
+main.subselect4
+main.subselect_cache
+main.subselect-crash_15755
+main.subselect_exists2in
+main.subselect_exists2in_costmat
+main.subselect_extra
+main.subselect_extra_no_semijoin
+main.subselect_gis
+main.subselect_innodb
+main.subselect_mat
+main.subselect_mat_cost
+main.subselect_mat_cost_bugs
+main.subselect_notembedded
+main.subselect_nulls
+main.subselect_partial_match
+main.subselect_sj2
+main.subselect_sj2_jcl6
+main.subselect_sj2_mat
+main.subselect_sj_aria
+main.subselect_sj_mat
+main.subselect_sj_nonmerged
+main.sum_distinct
+main.sysdate_is_now
+main.system_mysql_db
+main.system_mysql_db_refs
+main.table_elim
+main.table_elim_debug
+main.table_keyinfo-6838
+main.tablelock
+main.table_options
+main.table_options-5867
+main.temporal_literal
+main.temporal_scale_4283
+main.temp_table_frm
+main.timezone
+main.timezone2
+main.timezone3
+main.timezone4
+main.tmp_table_count-7586
+main.trigger_no_defaults-11698
+main.trigger_null-8605
+main.truncate
+main.truncate_badse
+main.truncate-stale-6500
+main.type_binary
+main.type_bit
+main.type_bit_innodb
+main.type_blob
+main.type_datetime_hires
+main.type_decimal
+main.type_enum
+main.type_float
+main.type_int
+main.type_nchar
+main.type_newdecimal
+main.type_num
+main.type_num_innodb
+main.type_ranges
+main.type_set
+main.type_temporal_innodb
+main.type_temporal_mysql56
+main.type_time
+main.type_time_6065
+main.type_time_hires
+main.type_timestamp_hires
+main.type_uint
+main.type_varchar
+main.type_year
+main.update_ignore_216
+main.update_innodb
+main.upgrade
+main.user_var
+main.varbinary
+main.variables_community
+main.view_alias
+main.warnings_engine_disabled
+main.win_avg
+main.win_big
+main.win_big-mdev-10092
+main.win_big-mdev-11697
+main.win_bit
+main.win_empty_over
+main.win_first_last_value
+main.win_insert_select
+main.win_i_s
+main.win_lead_lag
+main.win_min_max
+main.win_nth_value
+main.win_orderby
+main.win_percent_cume
+main.win_rank
+main.win_sum
+main.xa_binlog
+main.xml
+main.xtradb_mrr
diff --git a/storage/innobase/btr/btr0sea.cc b/storage/innobase/btr/btr0sea.cc
index db9e028b8f3..1041ad8614a 100644
--- a/storage/innobase/btr/btr0sea.cc
+++ b/storage/innobase/btr/btr0sea.cc
@@ -1279,8 +1279,6 @@ void btr_search_drop_page_hash_when_freed(const page_id_t& page_id)
mtr_t mtr;
dberr_t err = DB_SUCCESS;
- ut_d(export_vars.innodb_ahi_drop_lookups++);
-
mtr_start(&mtr);
/* If the caller has a latch on the page, then the caller must
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index e03fa1b58d6..d2cb4439293 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -1068,10 +1068,6 @@ static SHOW_VAR innodb_status_variables[]= {
(char*) &export_vars.innodb_truncated_status_writes, SHOW_LONG},
{"available_undo_logs",
(char*) &export_vars.innodb_available_undo_logs, SHOW_LONG},
-#ifdef UNIV_DEBUG
- {"ahi_drop_lookups",
- (char*) &export_vars.innodb_ahi_drop_lookups, SHOW_LONG},
-#endif /* UNIV_DEBUG */
/* Status variables for page compression */
{"page_compression_saved",
diff --git a/storage/innobase/include/log0recv.h b/storage/innobase/include/log0recv.h
index 8065ff2c96c..99530a3799c 100644
--- a/storage/innobase/include/log0recv.h
+++ b/storage/innobase/include/log0recv.h
@@ -186,32 +186,6 @@ struct recv_t{
rec_list;/*!< list of log records for this page */
};
-/** States of recv_addr_t */
-enum recv_addr_state {
- /** not yet processed */
- RECV_NOT_PROCESSED,
- /** page is being read */
- RECV_BEING_READ,
- /** log records are being applied on the page */
- RECV_BEING_PROCESSED,
- /** log records have been applied on the page */
- RECV_PROCESSED,
- /** log records have been discarded because the tablespace
- does not exist */
- RECV_DISCARDED
-};
-
-/** Hashed page file address struct */
-struct recv_addr_t{
- enum recv_addr_state state;
- /*!< recovery state of the page */
- unsigned space:32;/*!< space id */
- unsigned page_no:32;/*!< page number */
- UT_LIST_BASE_NODE_T(recv_t)
- rec_list;/*!< list of log records for this page */
- hash_node_t addr_hash;/*!< hash node in the hash bucket chain */
-};
-
struct recv_dblwr_t {
/** Add a page frame to the doublewrite recovery buffer. */
void add(byte* page) {
diff --git a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h
index 7c22015511a..ee82381032c 100644
--- a/storage/innobase/include/srv0srv.h
+++ b/storage/innobase/include/srv0srv.h
@@ -1014,12 +1014,6 @@ struct export_var_t{
of used row log buffer */
ulint innodb_onlineddl_pct_progress; /*!< Online alter progress */
-#ifdef UNIV_DEBUG
- ulint innodb_ahi_drop_lookups; /*!< number of adaptive hash
- index lookups when freeing
- file pages */
-#endif /* UNIV_DEBUG */
-
int64_t innodb_page_compression_saved;/*!< Number of bytes saved
by page compression */
int64_t innodb_index_pages_written; /*!< Number of index pages
diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc
index f5c3f1ecb23..fe42de2b7a2 100644
--- a/storage/innobase/log/log0recv.cc
+++ b/storage/innobase/log/log0recv.cc
@@ -169,6 +169,35 @@ typedef std::map<
static recv_spaces_t recv_spaces;
+/** States of recv_addr_t */
+enum recv_addr_state {
+ /** not yet processed */
+ RECV_NOT_PROCESSED,
+ /** page is being read */
+ RECV_BEING_READ,
+ /** log records are being applied on the page */
+ RECV_BEING_PROCESSED,
+ /** log records have been applied on the page */
+ RECV_PROCESSED,
+ /** log records have been discarded because the tablespace
+ does not exist */
+ RECV_DISCARDED
+};
+
+/** Hashed page file address struct */
+struct recv_addr_t{
+ /** recovery state of the page */
+ recv_addr_state state;
+ /** tablespace identifier */
+ unsigned space:32;
+ /** page number */
+ unsigned page_no:32;
+ /** list of log records for this page */
+ UT_LIST_BASE_NODE_T(recv_t) rec_list;
+ /** hash node in the hash bucket chain */
+ hash_node_t addr_hash;
+};
+
/** Report optimized DDL operation (without redo log),
corresponding to MLOG_INDEX_LOAD.
@param[in] space_id tablespace identifier
@@ -1174,6 +1203,7 @@ parse_log:
redo log been written with something
older than InnoDB Plugin 1.0.4. */
ut_ad(offs == FIL_PAGE_TYPE
+ || srv_is_undo_tablespace(space_id)
|| offs == IBUF_TREE_SEG_HEADER
+ IBUF_HEADER + FSEG_HDR_OFFSET
|| offs == PAGE_BTR_IBUF_FREE_LIST
@@ -1199,6 +1229,7 @@ parse_log:
ut_ad(0
/* fil_crypt_rotate_page() writes this */
|| offs == FIL_PAGE_SPACE_ID
+ || srv_is_undo_tablespace(space_id)
|| offs == IBUF_TREE_SEG_HEADER
+ IBUF_HEADER + FSEG_HDR_SPACE
|| offs == IBUF_TREE_SEG_HEADER
diff --git a/storage/innobase/row/row0purge.cc b/storage/innobase/row/row0purge.cc
index e2bbb5a3d5e..30eacbfc518 100644
--- a/storage/innobase/row/row0purge.cc
+++ b/storage/innobase/row/row0purge.cc
@@ -1076,9 +1076,7 @@ try_again:
ut_ad(!node->table->is_temporary());
if (!fil_table_accessible(node->table)) {
- dict_table_close(node->table, FALSE, FALSE);
- node->table = NULL;
- goto err_exit;
+ goto close_exit;
}
switch (type) {
@@ -1113,6 +1111,7 @@ try_again:
dict_set_corrupted() works on an index, and
we do not have an index to call it with. */
dict_table_close(node->table, FALSE, FALSE);
+ node->table = NULL;
err_exit:
rw_lock_s_unlock(dict_operation_lock);
return(false);