~linuxjedi/drizzle/trunk-bug-667053

« back to all changes in this revision

Viewing changes to mysql-test/suite/parts/inc/partition_alter1.inc

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
################################################################################
 
2
# inc/partition_alter1.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 #  1.    ALTER TABLE ADD PRIMARY KEY and/or UNIQUE INDEX
 
19
--echo #========================================================================
 
20
#         Rule: The table does not have a PRIMARY KEY or UNIQUE INDEX.
 
21
#               ---> $unique must be empty
 
22
#               ---> The PRIMARY KEY or UNIQUE INDEX to be created must contain
 
23
#                     the columns used for partitioning.
 
24
--echo #------------------------------------------------------------------------
 
25
--echo #  1.1   ADD PRIMARY KEY or UNIQUE INDEX to table with one column (f_int1)
 
26
--echo #        within the partitioning function
 
27
--echo #------------------------------------------------------------------------
 
28
#         Rule: Only f_int1 is used within the partitioning function
 
29
#         ---> inc/partition_alter_11.inc
 
30
if ($do_pk_tests)
 
31
{
 
32
   # The value of the following test is maybe covered by 1.1.3.
 
33
   if ($more_pk_ui_tests)
 
34
   {
 
35
      --echo #  1.1.1 PRIMARY KEY consisting of one column
 
36
      let $alter= ALTER TABLE t1 ADD PRIMARY KEY(f_int1);
 
37
      --source suite/parts/inc/partition_alter_11.inc
 
38
   }
 
39
   # This must fail, because PRIMARY KEY does not contain f_int1
 
40
   let $alter= ALTER TABLE t1 ADD PRIMARY KEY(f_int2);
 
41
   --source suite/parts/inc/partition_alter_11.inc
 
42
}
 
43
# The value of the following test is maybe covered by 1.1.4.
 
44
if ($more_pk_ui_tests)
 
45
{
 
46
   --echo #  1.1.2 UNIQUE INDEX consisting of one column
 
47
   let $alter= ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1);
 
48
   --source suite/parts/inc/partition_alter_11.inc
 
49
}
 
50
# This must fail, because UNIQUE INDEX does not contain f_int1
 
51
let $alter= ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2);
 
52
--source suite/parts/inc/partition_alter_11.inc
 
53
if ($do_pk_tests)
 
54
{
 
55
   --echo #  1.1.3 PRIMARY KEY consisting of two columns
 
56
   let $alter= ALTER TABLE t1 ADD PRIMARY KEY(f_int1,f_int2);
 
57
   --source suite/parts/inc/partition_alter_11.inc
 
58
   let $alter= ALTER TABLE t1 ADD PRIMARY KEY(f_int2,f_int1);
 
59
   --source suite/parts/inc/partition_alter_11.inc
 
60
}
 
61
--echo #  1.1.4 UNIQUE INDEX consisting of two columns
 
62
let $alter= ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
 
63
--source suite/parts/inc/partition_alter_11.inc
 
64
let $alter= ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
 
65
--source suite/parts/inc/partition_alter_11.inc
 
66
#
 
67
--echo #------------------------------------------------------------------------
 
68
--echo #  1.2   ADD PRIMARY KEY or UNIQUE INDEX to table with two columns
 
69
--echo #        (f_int1 and f_int2) within the partitioning function
 
70
--echo #------------------------------------------------------------------------
 
71
#         Rule: f_int1 and f_int2 is used within the partitioning function
 
72
#         ---> inc/partition_alter_13.inc
 
73
if ($do_pk_tests)
 
74
{
 
75
   --echo #  1.2.1 PRIMARY KEY consisting of two columns
 
76
   let $alter= ALTER TABLE t1 ADD PRIMARY KEY(f_int1,f_int2);
 
77
   --source suite/parts/inc/partition_alter_13.inc
 
78
   let $alter= ALTER TABLE t1 ADD PRIMARY KEY(f_int2,f_int1);
 
79
   --source suite/parts/inc/partition_alter_13.inc
 
80
}
 
81
--echo #  1.2.2 UNIQUE INDEX consisting of two columns
 
82
let $alter= ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
 
83
--source suite/parts/inc/partition_alter_13.inc
 
84
let $alter= ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
 
85
--source suite/parts/inc/partition_alter_13.inc
 
86
if ($do_pk_tests)
 
87
{
 
88
   --echo #  1.2.3 PRIMARY KEY and UNIQUE INDEX consisting of two columns
 
89
   let $alter= ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2), ADD PRIMARY KEY(f_int2,f_int1);
 
90
   --source suite/parts/inc/partition_alter_13.inc
 
91
   let $alter= ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1), ADD PRIMARY KEY(f_int1,f_int2);
 
92
   --source suite/parts/inc/partition_alter_13.inc
 
93
   let $unique= ;
 
94
   --source suite/parts/inc/partition_alter_13.inc
 
95
}
 
96
#
 
97
#
 
98
--echo
 
99
--echo #========================================================================
 
100
--echo #  2     DROP PRIMARY KEY or UNIQUE INDEX
 
101
--echo #========================================================================
 
102
#         Rule: The table must have a PRIMARY KEY or UNIQUE INDEX.
 
103
#               ---> $unique must not be empty
 
104
#               ---> The PRIMARY KEY or UNIQUE INDEX to be dropped must contain
 
105
#                    the columns used for partitioning.
 
106
--echo #------------------------------------------------------------------------
 
107
--echo #  2.1   Partitioning function contains one column(f_int1)
 
108
--echo #------------------------------------------------------------------------
 
109
#         Rule: Only f_int1 is used within the partitioning function
 
110
#         ---> inc/partition_alter_11.inc
 
111
# The value of the following test is maybe covered by 2.1.5.
 
112
if ($more_pk_ui_tests)
 
113
{
 
114
   if ($do_pk_tests)
 
115
   {
 
116
      --echo #  2.1.1 DROP PRIMARY KEY consisting of one column
 
117
      let $unique= , PRIMARY KEY(f_int1);
 
118
      let $alter= ALTER TABLE t1 DROP PRIMARY KEY;
 
119
      --source suite/parts/inc/partition_alter_11.inc
 
120
   }
 
121
   #
 
122
   --echo #  2.1.2 DROP UNIQUE INDEX consisting of one column
 
123
   let $unique= , UNIQUE INDEX uidx1 (f_int1);
 
124
   let $alter= ALTER TABLE t1 DROP INDEX uidx1;
 
125
   --source suite/parts/inc/partition_alter_11.inc
 
126
   #
 
127
   if ($do_pk_tests)
 
128
   {
 
129
      --echo #  2.1.3 DROP PRIMARY KEY consisting of two columns
 
130
      let $alter= ALTER TABLE t1 DROP PRIMARY KEY;
 
131
      let $unique= , PRIMARY KEY(f_int1,f_int2);
 
132
      --source suite/parts/inc/partition_alter_11.inc
 
133
      let $unique= , PRIMARY KEY(f_int2,f_int1);
 
134
      --source suite/parts/inc/partition_alter_11.inc
 
135
   }
 
136
   #
 
137
   --echo #  2.1.4 DROP UNIQUE INDEX consisting of two columns
 
138
   let $alter= ALTER TABLE t1 DROP INDEX uidx1;
 
139
   let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2);
 
140
   --source suite/parts/inc/partition_alter_11.inc
 
141
   let $unique= , UNIQUE INDEX uidx1 (f_int2,f_int1);
 
142
   --source suite/parts/inc/partition_alter_11.inc
 
143
   }
 
144
#
 
145
if ($do_pk_tests)
 
146
{
 
147
   --echo #  2.1.5 DROP PRIMARY KEY + UNIQUE INDEX consisting of two columns
 
148
   let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1);
 
149
   let $alter= ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
 
150
   --source suite/parts/inc/partition_alter_11.inc
 
151
   let $unique= , UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2);
 
152
   let $alter= ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
 
153
   --source suite/parts/inc/partition_alter_11.inc
 
154
}
 
155
let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1);
 
156
let $alter= ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
 
157
--source suite/parts/inc/partition_alter_11.inc
 
158
#
 
159
--echo #------------------------------------------------------------------------
 
160
--echo #  2.2   Partitioning function contains two columns (f_int1,f_int2)
 
161
--echo #------------------------------------------------------------------------
 
162
#         Rule: f_int1 and f_int2 is used within the partitioning function
 
163
#         ---> inc/partition_alter_13.inc
 
164
if ($do_pk_tests)
 
165
{
 
166
   --echo #  2.2.1 DROP PRIMARY KEY consisting of two columns
 
167
   let $alter= ALTER TABLE t1 DROP PRIMARY KEY;
 
168
   let $unique= , PRIMARY KEY(f_int1,f_int2);
 
169
   --source suite/parts/inc/partition_alter_13.inc
 
170
   let $unique= , PRIMARY KEY(f_int2,f_int1);
 
171
   --source suite/parts/inc/partition_alter_13.inc
 
172
}
 
173
#
 
174
--echo #  2.2.2 DROP UNIQUE INDEX consisting of two columns
 
175
let $alter= ALTER TABLE t1 DROP INDEX uidx1;
 
176
let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2);
 
177
--source suite/parts/inc/partition_alter_13.inc
 
178
let $unique= , UNIQUE INDEX uidx1 (f_int2,f_int1);
 
179
--source suite/parts/inc/partition_alter_13.inc
 
180
#
 
181
if ($do_pk_tests)
 
182
{
 
183
   --echo #  2.2.3 DROP PRIMARY KEY + UNIQUE INDEX consisting of two columns
 
184
   let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1);
 
185
   let $alter= ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
 
186
   --source suite/parts/inc/partition_alter_13.inc
 
187
   let $unique= , UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2);
 
188
   let $alter= ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
 
189
   --source suite/parts/inc/partition_alter_13.inc
 
190
}
 
191
let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1);
 
192
let $alter= ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
 
193
--source suite/parts/inc/partition_alter_13.inc
 
194
 
 
195
if (0)
 
196
{
 
197
--echo
 
198
--echo #========================================================================
 
199
--echo #  3.    ALTER TABLE "ALTER" PRIMARY KEY
 
200
--echo #        mleich: I think that an ALTER TABLE statement where a PRIMARY
 
201
--echo #            KEY is dropped and recreated (with different layout) might
 
202
--echo #            be of interest, if the tree containing the table data has
 
203
--echo #            to be reorganized during this operation.
 
204
--echo #        To be implemented
 
205
--echo #========================================================================
 
206
--echo
 
207
}