diff --git a/mysql-test/suite/innodb_plugin/t/innodb_gis.test b/mysql-test/suite/innodb_plugin/t/innodb_gis.test index ad1d081f29c..3ad20e3dce6 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb_gis.test +++ b/mysql-test/suite/innodb_plugin/t/innodb_gis.test @@ -1,4 +1,4 @@ ---source include/have_innodb_plugin.inc +--source include/have_xtradb.inc SET storage_engine=innodb; --source include/gis_generic.inc --source include/gis_keys.inc diff --git a/mysql-test/suite/innodb_plugin/t/innodb_mysql.test b/mysql-test/suite/innodb_plugin/t/innodb_mysql.test index 1cdc1b4e2fe..fc77d9aaa8a 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb_mysql.test +++ b/mysql-test/suite/innodb_plugin/t/innodb_mysql.test @@ -5,7 +5,7 @@ # main testing code t/innodb_mysql.test -> include/mix1.inc # --- source include/have_innodb_plugin.inc +-- source include/have_xtradb.inc -- source include/have_query_cache.inc let $engine_type= InnoDB; diff --git a/sql/password.c b/sql/password.c index 27fbb07b6e3..64b3d69862d 100644 --- a/sql/password.c +++ b/sql/password.c @@ -196,8 +196,8 @@ check_scramble_323(const unsigned char *scrambled, const char *message, struct my_rnd_struct rand_st; ulong hash_message[2]; /* Big enough for checks. */ - char buff[16], scrambled_buff[SCRAMBLE_LENGTH_323 + 1]; - char *to, extra; + uchar buff[16], scrambled_buff[SCRAMBLE_LENGTH_323 + 1]; + uchar *to, extra; const uchar *pos; /* Ensure that the scrambled message is null-terminated. */ diff --git a/sql/sql_base.cc b/sql/sql_base.cc index c8b1067425b..ee44629a192 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -2309,7 +2309,12 @@ bool reopen_name_locked_table(THD* thd, TABLE_LIST* table_list, bool link_in) if (thd->killed || !table) DBUG_RETURN(TRUE); - orig_table= *table; + /* + make a copy. we may need to restore it later. + don't use orig_table=*table, because we need an exact replica, + not a C++ copy that may modify the data in the copy constructor. + */ + memcpy(&orig_table, table, sizeof(*table)); if (open_unireg_entry(thd, table, table_list, table_name, table->s->table_cache_key.str, @@ -2322,9 +2327,10 @@ bool reopen_name_locked_table(THD* thd, TABLE_LIST* table_list, bool link_in) properly release name-lock in this case we should restore this object to its original state. */ - *table= orig_table; + memcpy(table, &orig_table, sizeof(*table)); DBUG_RETURN(TRUE); } + orig_table.alias.free(); share= table->s; /* diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc index 66243ad2e34..beb45305ba3 100644 --- a/storage/xtradb/handler/ha_innodb.cc +++ b/storage/xtradb/handler/ha_innodb.cc @@ -11614,14 +11614,13 @@ static MYSQL_SYSVAR_ULONG(concurrency_tickets, srv_n_free_tickets_to_enter, "Number of times a thread is allowed to enter InnoDB within the same SQL query after it has once got the ticket", NULL, NULL, 500L, 1L, ~0L, 0); -static MYSQL_SYSVAR_LONG(kill_idle_transaction, srv_kill_idle_transaction, - PLUGIN_VAR_RQCMDARG, #ifdef EXTENDED_FOR_KILLIDLE - "If non-zero value, the idle session with transaction which is idle over the value in seconds is killed by InnoDB.", +#define kill_idle_help_text "If non-zero value, the idle session with transaction which is idle over the value in seconds is killed by InnoDB." #else - "No effect for this build.", +#define kill_idle_help_text "No effect for this build." #endif - NULL, NULL, 0, 0, LONG_MAX, 0); +static MYSQL_SYSVAR_LONG(kill_idle_transaction, srv_kill_idle_transaction, + PLUGIN_VAR_RQCMDARG, kill_idle_help_text, NULL, NULL, 0, 0, LONG_MAX, 0); static MYSQL_SYSVAR_LONG(file_io_threads, innobase_file_io_threads, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY | PLUGIN_VAR_NOSYSVAR, diff --git a/storage/xtradb/row/row0ins.c b/storage/xtradb/row/row0ins.c index 0e62185c02e..6068c3547df 100644 --- a/storage/xtradb/row/row0ins.c +++ b/storage/xtradb/row/row0ins.c @@ -493,7 +493,8 @@ row_ins_cascade_calc_update_vec( ufield->field_no = dict_table_get_nth_col_pos( table, dict_col_get_no(col)); - ufield->exp = NULL; + + ufield->orig_len = 0; ufield->new_val = parent_ufield->new_val; ufield_len = dfield_get_len(&ufield->new_val);