MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
partition_alter1_2.inc
1 ################################################################################
2 # inc/partition_alter1_2.inc #
3 # #
4 # Purpose: #
5 # ADD/DROP PRIMARY KEYs and/or UNIQUE INDEXes tests on partitioned tables #
6 # This routine is only useful for the partition_<feature>_<engine> tests. #
7 # #
8 #------------------------------------------------------------------------------#
9 # Original Author: mleich #
10 # Original Date: 2006-03-05 #
11 # Change Author: #
12 # Change Date: #
13 # Change: #
14 ################################################################################
15 #
16 --echo
17 --echo #========================================================================
18 --echo # 2 DROP PRIMARY KEY or UNIQUE INDEX
19 --echo #========================================================================
20 # Rule: The table must have a PRIMARY KEY or UNIQUE INDEX.
21 # ---> $unique must not be empty
22 # ---> The PRIMARY KEY or UNIQUE INDEX to be dropped must contain
23 # the columns used for partitioning.
24 --echo #------------------------------------------------------------------------
25 --echo # 2.1 Partitioning function contains one column(f_int1)
26 --echo #------------------------------------------------------------------------
27 # Rule: Only f_int1 is used within the partitioning function
28 # ---> inc/partition_alter_11.inc
29 # The value of the following test is maybe covered by 2.1.5.
30 if ($more_pk_ui_tests)
31 {
32  if ($do_pk_tests)
33  {
34  --echo # 2.1.1 DROP PRIMARY KEY consisting of one column
35  let $unique= , PRIMARY KEY(f_int1);
36  let $alter= ALTER TABLE t1 DROP PRIMARY KEY;
37  --source suite/parts/inc/partition_alter_11.inc
38  }
39  #
40  --echo # 2.1.2 DROP UNIQUE INDEX consisting of one column
41  let $unique= , UNIQUE INDEX uidx1 (f_int1);
42  let $alter= ALTER TABLE t1 DROP INDEX uidx1;
43  --source suite/parts/inc/partition_alter_11.inc
44  #
45  if ($do_pk_tests)
46  {
47  --echo # 2.1.3 DROP PRIMARY KEY consisting of two columns
48  let $alter= ALTER TABLE t1 DROP PRIMARY KEY;
49  let $unique= , PRIMARY KEY(f_int1,f_int2);
50  --source suite/parts/inc/partition_alter_11.inc
51  let $unique= , PRIMARY KEY(f_int2,f_int1);
52  --source suite/parts/inc/partition_alter_11.inc
53  }
54  #
55  --echo # 2.1.4 DROP UNIQUE INDEX consisting of two columns
56  let $alter= ALTER TABLE t1 DROP INDEX uidx1;
57  let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2);
58  --source suite/parts/inc/partition_alter_11.inc
59  let $unique= , UNIQUE INDEX uidx1 (f_int2,f_int1);
60  --source suite/parts/inc/partition_alter_11.inc
61  }
62 #
63 if ($do_pk_tests)
64 {
65  --echo # 2.1.5 DROP PRIMARY KEY + UNIQUE INDEX consisting of two columns
66  let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1);
67  let $alter= ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
68  --source suite/parts/inc/partition_alter_11.inc
69  let $unique= , UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2);
70  let $alter= ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
71  --source suite/parts/inc/partition_alter_11.inc
72 }
73 let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1);
74 let $alter= ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
75 --source suite/parts/inc/partition_alter_11.inc
76 #
77 --echo #------------------------------------------------------------------------
78 --echo # 2.2 Partitioning function contains two columns (f_int1,f_int2)
79 --echo #------------------------------------------------------------------------
80 # Rule: f_int1 and f_int2 is used within the partitioning function
81 # ---> inc/partition_alter_13.inc
82 if ($do_pk_tests)
83 {
84  --echo # 2.2.1 DROP PRIMARY KEY consisting of two columns
85  let $alter= ALTER TABLE t1 DROP PRIMARY KEY;
86  let $unique= , PRIMARY KEY(f_int1,f_int2);
87  --source suite/parts/inc/partition_alter_13.inc
88  let $unique= , PRIMARY KEY(f_int2,f_int1);
89  --source suite/parts/inc/partition_alter_13.inc
90 }
91 #
92 --echo # 2.2.2 DROP UNIQUE INDEX consisting of two columns
93 let $alter= ALTER TABLE t1 DROP INDEX uidx1;
94 let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2);
95 --source suite/parts/inc/partition_alter_13.inc
96 let $unique= , UNIQUE INDEX uidx1 (f_int2,f_int1);
97 --source suite/parts/inc/partition_alter_13.inc
98 #
99 if ($do_pk_tests)
100 {
101  --echo # 2.2.3 DROP PRIMARY KEY + UNIQUE INDEX consisting of two columns
102  let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1);
103  let $alter= ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
104  --source suite/parts/inc/partition_alter_13.inc
105  let $unique= , UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2);
106  let $alter= ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
107  --source suite/parts/inc/partition_alter_13.inc
108 }
109 let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1);
110 let $alter= ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
111 --source suite/parts/inc/partition_alter_13.inc
112 
113 if (0)
114 {
115 --echo
116 --echo #========================================================================
117 --echo # 3. ALTER TABLE "ALTER" PRIMARY KEY
118 --echo # mleich: I think that an ALTER TABLE statement where a PRIMARY
119 --echo # KEY is dropped and recreated (with different layout) might
120 --echo # be of interest, if the tree containing the table data has
121 --echo # to be reorganized during this operation.
122 --echo # To be implemented
123 --echo #========================================================================
124 --echo
125 }
126