1 #ifndef SQL_TRUNCATE_INCLUDED 2 #define SQL_TRUNCATE_INCLUDED 3 /* Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; version 2 of the License. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program; if not, write to the Free Software 16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */ 17 18 class THD; 19 struct TABLE_LIST; 20 21 /** 22 Sql_cmd_truncate_table represents the TRUNCATE statement. 23 */ 24 class Sql_cmd_truncate_table : public Sql_cmd 25 { 26 private: 27 /* Set if a lock must be downgraded after truncate is done. */ 28 MDL_ticket *m_ticket_downgrade; 29 30 public: 31 /** 32 Constructor, used to represent a TRUNCATE statement. 33 */ Sql_cmd_truncate_table()34 Sql_cmd_truncate_table() 35 {} 36 ~Sql_cmd_truncate_table()37 virtual ~Sql_cmd_truncate_table() 38 {} 39 40 /** 41 Execute a TRUNCATE statement at runtime. 42 @param thd the current thread. 43 @return false on success. 44 */ 45 bool execute(THD *thd); 46 sql_command_code()47 virtual enum_sql_command sql_command_code() const 48 { 49 return SQLCOM_TRUNCATE; 50 } 51 52 protected: 53 enum truncate_result{ 54 TRUNCATE_OK=0, 55 TRUNCATE_FAILED_BUT_BINLOG, 56 TRUNCATE_FAILED_SKIP_BINLOG 57 }; 58 59 /** Handle locking a base table for truncate. */ 60 bool lock_table(THD *, TABLE_LIST *, bool *); 61 62 /** Truncate table via the handler method. */ 63 enum truncate_result handler_truncate(THD *, TABLE_LIST *, bool); 64 65 /** 66 Optimized delete of all rows by doing a full regenerate of the table. 67 Depending on the storage engine, it can be accomplished through a 68 drop and recreate or via the handler truncate method. 69 */ 70 bool truncate_table(THD *, TABLE_LIST *); 71 }; 72 73 #endif 74