Code_ddl_column.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_ddl_column_hpp
  14. #define ODBC_CODEGEN_Code_ddl_column_hpp
  15. #include <common/common.hpp>
  16. #include "Code_column.hpp"
  17. #include "Code_data_type.hpp"
  18. #include "Code_expr.hpp"
  19. class DictColumn;
  20. class Plan_table;
  21. /**
  22.  * @class Plan_ddl_column
  23.  * @brief Column in DDL statement
  24.  */
  25. class Plan_ddl_column : public Plan_base, public Plan_column {
  26. public:
  27.     Plan_ddl_column(Plan_root* root, const BaseString& name);
  28.     virtual ~Plan_ddl_column();
  29.     Plan_base* analyze(Ctx& ctx, Ctl& ctl);
  30.     Exec_base* codegen(Ctx& ctx, Ctl& ctl);
  31.     void print(Ctx& ctx);
  32.     // attributes
  33.     void setNotNull();
  34.     void setUnSigned();
  35.     void setPrimaryKey();
  36.     bool getPrimaryKey() const;
  37.     void setTupleId();
  38.     bool getTupleId() const;
  39.     void setAutoIncrement();
  40.     bool getAutoIncrement() const;
  41.     // children
  42.     void setType(Plan_data_type* type);
  43.     void setDefaultValue(Plan_expr* defaultValue);
  44.     Plan_expr* getDefaultValue() const;
  45. protected:
  46.     friend class Plan_create_row;
  47.     Plan_data_type* m_type;
  48.     Plan_expr* m_defaultValue;
  49.     bool m_nullable;
  50.     bool m_unSigned;
  51.     bool m_primaryKey;
  52.     bool m_tupleId;
  53.     bool m_autoIncrement;
  54. };
  55. inline
  56. Plan_ddl_column::Plan_ddl_column(Plan_root* root, const BaseString& name) :
  57.     Plan_base(root),
  58.     Plan_column(Type_ddl, name),
  59.     m_type(0),
  60.     m_defaultValue(0),
  61.     m_nullable(true),
  62.     m_unSigned(false),
  63.     m_primaryKey(false),
  64.     m_tupleId(false),
  65.     m_autoIncrement(false)
  66. {
  67. }
  68. inline void
  69. Plan_ddl_column::setNotNull()
  70. {
  71.     m_nullable = false;
  72. }
  73. inline void
  74. Plan_ddl_column::setUnSigned()
  75. {
  76.     m_unSigned = true;
  77. }
  78. inline void
  79. Plan_ddl_column::setPrimaryKey()
  80. {
  81.     m_nullable = false;
  82.     m_primaryKey = true;
  83. }
  84. inline bool
  85. Plan_ddl_column::getPrimaryKey() const
  86. {
  87.     return m_primaryKey;
  88. }
  89. inline void
  90. Plan_ddl_column::setTupleId()
  91. {
  92.     m_nullable = false;
  93.     m_tupleId = true;
  94. }
  95. inline bool
  96. Plan_ddl_column::getTupleId() const
  97. {
  98.     return m_tupleId;
  99. }
  100. inline void
  101. Plan_ddl_column::setAutoIncrement()
  102. {
  103.     m_nullable = false;
  104.     m_autoIncrement = true;
  105. }
  106. inline bool
  107. Plan_ddl_column::getAutoIncrement() const
  108. {
  109.     return m_autoIncrement;
  110. }
  111. // children
  112. inline void
  113. Plan_ddl_column::setType(Plan_data_type* type)
  114. {
  115.     ctx_assert(type != 0);
  116.     m_type = type;
  117. }
  118. inline void
  119. Plan_ddl_column::setDefaultValue(Plan_expr* defaultValue)
  120. {
  121.     ctx_assert(defaultValue != 0);
  122.     m_defaultValue = defaultValue;
  123. }
  124. inline Plan_expr*
  125. Plan_ddl_column::getDefaultValue() const
  126. {
  127.     return m_defaultValue;
  128. }
  129. #endif