Code_drop_table.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #ifndef ODBC_CODEGEN_Code_drop_table_hpp
  14. #define ODBC_CODEGEN_Code_drop_table_hpp
  15. #include <vector>
  16. #include <NdbApi.hpp>
  17. #include <common/common.hpp>
  18. #include "Code_ddl.hpp"
  19. class DictTable;
  20. class DictColumn;
  21. /**
  22.  * @class Plan_drop_table
  23.  * @brief Drop table in PlanTree
  24.  */
  25. class Plan_drop_table : public Plan_ddl {
  26. public:
  27.     Plan_drop_table(Plan_root* root, const BaseString& name);
  28.     virtual ~Plan_drop_table();
  29.     Plan_base* analyze(Ctx& ctx, Ctl& ctl);
  30.     Exec_base* codegen(Ctx& ctx, Ctl& ctl);
  31.     void describe(Ctx & ctx);
  32.     void print(Ctx& ctx);
  33.     // attributes
  34.     const BaseString& getName() const;
  35. protected:
  36.     BaseString m_name;
  37. };
  38. inline
  39. Plan_drop_table::Plan_drop_table(Plan_root* root, const BaseString& name) :
  40.     Plan_ddl(root),
  41.     m_name(name)
  42. {
  43. }
  44. inline const BaseString&
  45. Plan_drop_table::getName() const
  46. {
  47.     return m_name;
  48. }
  49. /**
  50.  * @class Exec_drop_table
  51.  * @brief Drop table in ExecTree
  52.  */
  53. class Exec_drop_table : public Exec_ddl {
  54. public:
  55.     class Code : public Exec_ddl::Code {
  56.     public:
  57. Code(const BaseString& tableName);
  58. virtual ~Code();
  59.     protected:
  60. friend class Exec_drop_table;
  61. const BaseString m_tableName;
  62.     };
  63.     class Data : public Exec_ddl::Data {
  64.     public:
  65. Data();
  66. virtual ~Data();
  67.     protected:
  68. friend class Exec_drop_table;
  69.     };
  70.     Exec_drop_table(Exec_root* root);
  71.     virtual ~Exec_drop_table();
  72.     void alloc(Ctx& ctx, Ctl& ctl);
  73.     void execute(Ctx& ctx, Ctl& ctl);
  74.     void close(Ctx& ctx);
  75.     void print(Ctx& ctx);
  76.     // children
  77.     const Code& getCode() const;
  78.     Data& getData() const;
  79. };
  80. inline
  81. Exec_drop_table::Code::Code(const BaseString& tableName) :
  82.     m_tableName(tableName)
  83. {
  84. }
  85. inline
  86. Exec_drop_table::Data::Data()
  87. {
  88. }
  89. inline
  90. Exec_drop_table::Exec_drop_table(Exec_root* root) :
  91.     Exec_ddl(root)
  92. {
  93. }
  94. // children
  95. inline const Exec_drop_table::Code&
  96. Exec_drop_table::getCode() const
  97. {
  98.     const Code* code = static_cast<const Code*>(m_code);
  99.     return *code;
  100. }
  101. inline Exec_drop_table::Data&
  102. Exec_drop_table::getData() const
  103. {
  104.     Data* data = static_cast<Data*>(m_data);
  105.     return *data;
  106. }
  107. #endif