1 /* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
2 
3    This program is free software; you can redistribute it and/or modify
4    it under the terms of the GNU General Public License as published by
5    the Free Software Foundation; version 2 of the License.
6 
7    This program is distributed in the hope that it will be useful,
8    but WITHOUT ANY WARRANTY; without even the implied warranty of
9    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10    GNU General Public License for more details.
11 
12    You should have received a copy of the GNU General Public License
13    along with this program; if not, write to the Free Software
14    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
15 
16 #ifndef SQL_PARTITION_ADMIN_H
17 #define SQL_PARTITION_ADMIN_H
18 
19 #ifndef WITH_PARTITION_STORAGE_ENGINE
20 
21 /**
22   Stub class that returns a error if the partition storage engine is
23   not supported.
24 */
25 class Sql_cmd_partition_unsupported : public Sql_cmd
26 {
27 public:
Sql_cmd_partition_unsupported()28   Sql_cmd_partition_unsupported()
29   {}
30 
~Sql_cmd_partition_unsupported()31   ~Sql_cmd_partition_unsupported()
32   {}
33 
34   /* Override SQLCOM_*, since it is an ALTER command */
sql_command_code()35   virtual enum_sql_command sql_command_code() const
36   {
37     return SQLCOM_ALTER_TABLE;
38   }
39 
40   bool execute(THD *thd);
41 };
42 
43 
44 class Sql_cmd_alter_table_exchange_partition :
45   public Sql_cmd_partition_unsupported
46 {
47 public:
Sql_cmd_alter_table_exchange_partition()48   Sql_cmd_alter_table_exchange_partition()
49   {}
50 
~Sql_cmd_alter_table_exchange_partition()51   ~Sql_cmd_alter_table_exchange_partition()
52   {}
53 };
54 
55 
56 class  Sql_cmd_alter_table_analyze_partition :
57   public Sql_cmd_partition_unsupported
58 {
59 public:
Sql_cmd_alter_table_analyze_partition()60   Sql_cmd_alter_table_analyze_partition()
61   {}
62 
~Sql_cmd_alter_table_analyze_partition()63   ~Sql_cmd_alter_table_analyze_partition()
64   {}
65 };
66 
67 
68 class Sql_cmd_alter_table_check_partition :
69   public Sql_cmd_partition_unsupported
70 {
71 public:
Sql_cmd_alter_table_check_partition()72   Sql_cmd_alter_table_check_partition()
73   {}
74 
~Sql_cmd_alter_table_check_partition()75   ~Sql_cmd_alter_table_check_partition()
76   {}
77 };
78 
79 
80 class Sql_cmd_alter_table_optimize_partition :
81   public Sql_cmd_partition_unsupported
82 {
83 public:
Sql_cmd_alter_table_optimize_partition()84   Sql_cmd_alter_table_optimize_partition()
85   {}
86 
~Sql_cmd_alter_table_optimize_partition()87   ~Sql_cmd_alter_table_optimize_partition()
88   {}
89 };
90 
91 
92 class Sql_cmd_alter_table_repair_partition :
93   public Sql_cmd_partition_unsupported
94 {
95 public:
Sql_cmd_alter_table_repair_partition()96   Sql_cmd_alter_table_repair_partition()
97   {}
98 
~Sql_cmd_alter_table_repair_partition()99   ~Sql_cmd_alter_table_repair_partition()
100   {}
101 };
102 
103 
104 class Sql_cmd_alter_table_truncate_partition :
105   public Sql_cmd_partition_unsupported
106 {
107 public:
Sql_cmd_alter_table_truncate_partition()108   Sql_cmd_alter_table_truncate_partition()
109   {}
110 
~Sql_cmd_alter_table_truncate_partition()111   ~Sql_cmd_alter_table_truncate_partition()
112   {}
113 };
114 
115 #else
116 
117 /**
118   Class that represents the ALTER TABLE t1 ANALYZE PARTITION p statement.
119 */
120 class Sql_cmd_alter_table_exchange_partition : public Sql_cmd_common_alter_table
121 {
122 public:
123   /**
124     Constructor, used to represent a ALTER TABLE EXCHANGE PARTITION statement.
125   */
Sql_cmd_alter_table_exchange_partition()126   Sql_cmd_alter_table_exchange_partition()
127     : Sql_cmd_common_alter_table()
128   {}
129 
~Sql_cmd_alter_table_exchange_partition()130   ~Sql_cmd_alter_table_exchange_partition()
131   {}
132 
133   bool execute(THD *thd);
134 
135 private:
136   bool exchange_partition(THD *thd, TABLE_LIST *, Alter_info *);
137 };
138 
139 
140 /**
141   Class that represents the ALTER TABLE t1 ANALYZE PARTITION p statement.
142 */
143 class Sql_cmd_alter_table_analyze_partition : public Sql_cmd_analyze_table
144 {
145 public:
146   /**
147     Constructor, used to represent a ALTER TABLE ANALYZE PARTITION statement.
148   */
Sql_cmd_alter_table_analyze_partition()149   Sql_cmd_alter_table_analyze_partition()
150     : Sql_cmd_analyze_table()
151   {}
152 
~Sql_cmd_alter_table_analyze_partition()153   ~Sql_cmd_alter_table_analyze_partition()
154   {}
155 
156   bool execute(THD *thd);
157 
158   /* Override SQLCOM_ANALYZE, since it is an ALTER command */
sql_command_code()159   virtual enum_sql_command sql_command_code() const
160   {
161     return SQLCOM_ALTER_TABLE;
162   }
163 };
164 
165 
166 /**
167   Class that represents the ALTER TABLE t1 CHECK PARTITION p statement.
168 */
169 class Sql_cmd_alter_table_check_partition : public Sql_cmd_check_table
170 {
171 public:
172   /**
173     Constructor, used to represent a ALTER TABLE CHECK PARTITION statement.
174   */
Sql_cmd_alter_table_check_partition()175   Sql_cmd_alter_table_check_partition()
176     : Sql_cmd_check_table()
177   {}
178 
~Sql_cmd_alter_table_check_partition()179   ~Sql_cmd_alter_table_check_partition()
180   {}
181 
182   bool execute(THD *thd);
183 
184   /* Override SQLCOM_CHECK, since it is an ALTER command */
sql_command_code()185   virtual enum_sql_command sql_command_code() const
186   {
187     return SQLCOM_ALTER_TABLE;
188   }
189 };
190 
191 
192 /**
193   Class that represents the ALTER TABLE t1 OPTIMIZE PARTITION p statement.
194 */
195 class Sql_cmd_alter_table_optimize_partition : public Sql_cmd_optimize_table
196 {
197 public:
198   /**
199     Constructor, used to represent a ALTER TABLE OPTIMIZE PARTITION statement.
200   */
Sql_cmd_alter_table_optimize_partition()201   Sql_cmd_alter_table_optimize_partition()
202     : Sql_cmd_optimize_table()
203   {}
204 
~Sql_cmd_alter_table_optimize_partition()205   ~Sql_cmd_alter_table_optimize_partition()
206   {}
207 
208   bool execute(THD *thd);
209 
210   /* Override SQLCOM_OPTIMIZE, since it is an ALTER command */
sql_command_code()211   virtual enum_sql_command sql_command_code() const
212   {
213     return SQLCOM_ALTER_TABLE;
214   }
215 };
216 
217 
218 /**
219   Class that represents the ALTER TABLE t1 REPAIR PARTITION p statement.
220 */
221 class Sql_cmd_alter_table_repair_partition : public Sql_cmd_repair_table
222 {
223 public:
224   /**
225     Constructor, used to represent a ALTER TABLE REPAIR PARTITION statement.
226   */
Sql_cmd_alter_table_repair_partition()227   Sql_cmd_alter_table_repair_partition()
228     : Sql_cmd_repair_table()
229   {}
230 
~Sql_cmd_alter_table_repair_partition()231   ~Sql_cmd_alter_table_repair_partition()
232   {}
233 
234   bool execute(THD *thd);
235 
236   /* Override SQLCOM_REPAIR, since it is an ALTER command */
sql_command_code()237   virtual enum_sql_command sql_command_code() const
238   {
239     return SQLCOM_ALTER_TABLE;
240   }
241 };
242 
243 
244 /**
245   Class that represents the ALTER TABLE t1 TRUNCATE PARTITION p statement.
246 */
247 class Sql_cmd_alter_table_truncate_partition : public Sql_cmd_truncate_table
248 {
249 public:
250   /**
251     Constructor, used to represent a ALTER TABLE TRUNCATE PARTITION statement.
252   */
Sql_cmd_alter_table_truncate_partition()253   Sql_cmd_alter_table_truncate_partition()
254   {}
255 
~Sql_cmd_alter_table_truncate_partition()256   virtual ~Sql_cmd_alter_table_truncate_partition()
257   {}
258 
259   bool execute(THD *thd);
260 
261   /* Override SQLCOM_TRUNCATE, since it is an ALTER command */
sql_command_code()262   virtual enum_sql_command sql_command_code() const
263   {
264     return SQLCOM_ALTER_TABLE;
265   }
266 };
267 
268 #endif /* WITH_PARTITION_STORAGE_ENGINE */
269 #endif /* SQL_PARTITION_ADMIN_H */
270