+--source include/wait_until_count_sessions.inc
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
-@@ -1632,6 +1632,9 @@
+@@ -1638,6 +1638,9 @@
alter_list(rhs.alter_list, mem_root),
key_list(rhs.key_list, mem_root),
create_list(rhs.create_list, mem_root),
flags(rhs.flags),
keys_onoff(rhs.keys_onoff),
tablespace_op(rhs.tablespace_op),
-@@ -1654,6 +1657,7 @@
+@@ -1660,6 +1663,7 @@
list_copy_and_replace_each_value(alter_list, mem_root);
list_copy_and_replace_each_value(key_list, mem_root);
list_copy_and_replace_each_value(create_list, mem_root);
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
-@@ -1013,6 +1013,9 @@
+@@ -1014,6 +1014,9 @@
List<Alter_column> alter_list;
List<Key> key_list;
List<Create_field> create_list;
uint flags;
enum enum_enable_or_disable keys_onoff;
enum tablespace_op_type tablespace_op;
-@@ -1024,6 +1027,8 @@
+@@ -1025,6 +1028,8 @@
Alter_info() :
flags(0),
keys_onoff(LEAVE_AS_IS),
tablespace_op(NO_TABLESPACE_OP),
-@@ -1039,6 +1044,9 @@
+@@ -1040,6 +1045,9 @@
alter_list.empty();
key_list.empty();
create_list.empty();
key_info++;
}
if (!unique_key && !primary_key &&
-@@ -5256,6 +5280,10 @@
+@@ -5261,6 +5285,10 @@
List<Create_field> new_create_list;
/* New key definitions are added here */
List<Key> new_key_list;
List_iterator<Alter_drop> drop_it(alter_info->drop_list);
List_iterator<Create_field> def_it(alter_info->create_list);
List_iterator<Alter_column> alter_it(alter_info->alter_list);
-@@ -5268,6 +5296,7 @@
+@@ -5273,6 +5301,7 @@
uint used_fields= create_info->used_fields;
KEY *key_info=table->key_info;
bool rc= TRUE;
DBUG_ENTER("mysql_prepare_alter_table");
-@@ -5457,7 +5486,26 @@
+@@ -5462,7 +5491,26 @@
/*
Collect all keys which isn't in drop list. Add only those
for which some fields exists.
for (uint i=0 ; i < table->s->keys ; i++,key_info++)
{
-@@ -5574,6 +5622,8 @@
+@@ -5579,6 +5627,8 @@
test(key_info->flags & HA_GENERATED_KEY),
key_parts);
new_key_list.push_back(key);
}
}
{
-@@ -5581,7 +5631,21 @@
+@@ -5586,7 +5636,21 @@
while ((key=key_it++)) // Add new keys
{
if (key->type != Key::FOREIGN_KEY)
if (key->name.str &&
!my_strcasecmp(system_charset_info, key->name.str, primary_key_name))
{
-@@ -5630,12 +5694,104 @@
+@@ -5635,12 +5699,104 @@
rc= FALSE;
alter_info->create_list.swap(new_create_list);
alter_info->key_list.swap(new_key_list);
Alter table
SYNOPSIS
-@@ -6428,19 +6584,38 @@
+@@ -6434,19 +6590,38 @@
*/
if (new_table && !(new_table->file->ha_table_flags() & HA_NO_COPY_ON_ALTER))
{
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
-@@ -556,6 +556,7 @@
+@@ -551,6 +551,7 @@
double long_query_time_double;
--- a/sql/sys_vars.cc
+++ b/sql/sys_vars.cc
-@@ -710,6 +710,14 @@
+@@ -783,6 +783,14 @@
ON_CHECK(event_scheduler_check), ON_UPDATE(event_scheduler_update));
#endif
--expire-logs-days=#
If non-zero, binary logs will be purged after
expire_logs_days days; possible purges happen at startup
-@@ -821,6 +825,7 @@
+@@ -823,6 +827,7 @@
div-precision-increment 4
engine-condition-pushdown TRUE
event-scheduler OFF
--expire-logs-days=#
If non-zero, binary logs will be purged after
expire_logs_days days; possible purges happen at startup
-@@ -775,6 +779,7 @@
+@@ -781,6 +785,7 @@
div-precision-increment 4
engine-condition-pushdown TRUE
event-scheduler OFF