~vlad-lesin/percona-server/pintables

2 by kinoyasu
ported part of Yasufumi patches until innodb_extend_slow.patch
1
# name       : control_online_alter_index.patch
2
# introduced : 12
3
# maintainer : Yasufumi
4
#
5
#!!! notice !!!
6
# Any small change to this file in the main branch
7
# should be done or reviewed by the maintainer!
8
diff -ruN a/sql/handler.h b/sql/handler.h
9
--- a/sql/handler.h	2010-11-03 07:01:14.000000000 +0900
10
+++ b/sql/handler.h	2010-12-03 13:51:04.727293058 +0900
118 by kinoyasu
port Yasufumi patches to 5.5.13
11
@@ -205,6 +205,8 @@
90 by Yasufumi Kinoshita
Yasufumi patches are ported to 5.5.10; Note: option innodb_stats_method was removed from innodb_stats.patch, because implemented officially. And, bug733317 should be fixed before release
12
 #define HA_INPLACE_DROP_UNIQUE_INDEX_NO_WRITE      (1L << 9)
13
 #define HA_INPLACE_ADD_PK_INDEX_NO_WRITE           (1L << 10)
14
 #define HA_INPLACE_DROP_PK_INDEX_NO_WRITE          (1L << 11)
2 by kinoyasu
ported part of Yasufumi patches until innodb_extend_slow.patch
15
+
90 by Yasufumi Kinoshita
Yasufumi patches are ported to 5.5.10; Note: option innodb_stats_method was removed from innodb_stats.patch, because implemented officially. And, bug733317 should be fixed before release
16
+#define HA_INPLACE_ALTER_INDEX_MASK                ((1L << 12) - 1)
2 by kinoyasu
ported part of Yasufumi patches until innodb_extend_slow.patch
17
 /*
18
   HA_PARTITION_FUNCTION_SUPPORTED indicates that the function is
19
   supported at all.
20
diff -ruN a/sql/sql_class.h b/sql/sql_class.h
21
--- a/sql/sql_class.h	2010-12-02 20:31:56.200956501 +0900
22
+++ b/sql/sql_class.h	2010-12-03 13:51:04.744953174 +0900
33.1.5 by Oleg Tsarev
merge profiling_slow.patch to slow_extended.patch
23
@@ -481,6 +481,8 @@
2 by kinoyasu
ported part of Yasufumi patches until innodb_extend_slow.patch
24
   my_bool engine_condition_pushdown;
25
   my_bool keep_files_on_create;
26
 
27
+  my_bool online_alter_index;
28
+
29
   my_bool old_alter_table;
30
   my_bool old_passwords;
31
   my_bool big_tables;
32
diff -ruN a/sql/sql_partition.cc b/sql/sql_partition.cc
33
--- a/sql/sql_partition.cc	2010-11-03 07:01:14.000000000 +0900
34
+++ b/sql/sql_partition.cc	2010-12-03 13:59:56.444039002 +0900
72 by kinoyasu
port Yasufumi patches to 5.5.9
35
@@ -4636,7 +4636,12 @@
2 by kinoyasu
ported part of Yasufumi patches until innodb_extend_slow.patch
36
         alter_info->num_parts= curr_part_no - new_part_no;
37
       }
38
     }
39
-    if (!(flags= new_table->file->alter_table_flags(alter_info->flags)))
40
+    flags= new_table->file->alter_table_flags(alter_info->flags);
41
+    if (!thd->variables.online_alter_index)
42
+    {
90 by Yasufumi Kinoshita
Yasufumi patches are ported to 5.5.10; Note: option innodb_stats_method was removed from innodb_stats.patch, because implemented officially. And, bug733317 should be fixed before release
43
+      flags&= ~((uint)HA_INPLACE_ALTER_INDEX_MASK);
2 by kinoyasu
ported part of Yasufumi patches until innodb_extend_slow.patch
44
+    }
45
+    if (!flags)
46
     {
47
       my_error(ER_PARTITION_FUNCTION_FAILURE, MYF(0));
48
       goto err;
49
diff -ruN a/sql/sql_table.cc b/sql/sql_table.cc
50
--- a/sql/sql_table.cc	2010-11-03 07:01:14.000000000 +0900
51
+++ b/sql/sql_table.cc	2010-12-03 13:51:04.768955495 +0900
109 by kinoyasu
port Yasufumi patches to 5.5.12
52
@@ -6112,6 +6112,10 @@
2 by kinoyasu
ported part of Yasufumi patches until innodb_extend_slow.patch
53
     uint  *idx_end_p;
54
 
55
     alter_flags= table->file->alter_table_flags(alter_info->flags);
56
+    if (!thd->variables.online_alter_index)
57
+    {
90 by Yasufumi Kinoshita
Yasufumi patches are ported to 5.5.10; Note: option innodb_stats_method was removed from innodb_stats.patch, because implemented officially. And, bug733317 should be fixed before release
58
+      alter_flags&= ~((ulong)HA_INPLACE_ALTER_INDEX_MASK);
2 by kinoyasu
ported part of Yasufumi patches until innodb_extend_slow.patch
59
+    }
60
     DBUG_PRINT("info", ("alter_flags: %lu", alter_flags));
61
     /* Check dropped indexes. */
62
     for (idx_p= index_drop_buffer, idx_end_p= idx_p + index_drop_count;
63
diff -ruN a/sql/sys_vars.cc b/sql/sys_vars.cc
64
--- a/sql/sys_vars.cc	2010-12-02 21:23:05.569356468 +0900
65
+++ b/sql/sys_vars.cc	2010-12-03 14:05:28.857356603 +0900
109 by kinoyasu
port Yasufumi patches to 5.5.12
66
@@ -2186,6 +2186,13 @@
2 by kinoyasu
ported part of Yasufumi patches until innodb_extend_slow.patch
67
        GLOBAL_VAR(opt_optimizer_fix),
68
        NO_CMD_LINE, DEFAULT(TRUE));
69
 
70
+static Sys_var_mybool Sys_fast_index_creation(
71
+       "fast_index_creation",
72
+       "If disabled, suppresses online operations for indexes of ALTER TABLE "
73
+       "(e.g. fast index creation of InnoDB Plugin) for the session.",
74
+       SESSION_VAR(online_alter_index), NO_CMD_LINE,
75
+       DEFAULT(TRUE));
76
+
77
 /** propagates changes to the relevant flag of @@optimizer_switch */
78
 static bool fix_engine_condition_pushdown(sys_var *self, THD *thd,
79
                                           enum_var_type type)