class_docstr: Create Table Statement constructed after parsing the input query
  
  Attributes:
      TableRef: table reference in the create table statement
      ColumnList: list of columns
class_docstr_tok: ["Create","Table","Statement","constructed","after","parsing","the","input","query","Attributes",":","TableRef",":","table","reference","in","the","create","table","statement","ColumnList",":","list","of","columns"]
code: def __init__(
      self,
      table_info: TableInfo,
      if_not_exists: bool,
      column_list: List[ColumnDefinition] = None,
      query: SelectStatement = None,
  ):
      super().__init__(StatementType.CREATE)
      self._table_info = table_info
      self._if_not_exists = if_not_exists
      self._column_list = column_list
      self._query = query
  
imports: from dataclasses import dataclass
  from typing import List, Optional, Tuple
  from evadb.catalog.catalog_type import ColumnType, NdArrayType
  from evadb.parser.select_statement import SelectStatement
  from evadb.parser.statement import AbstractStatement
  from evadb.parser.table_ref import TableInfo
  from evadb.parser.types import StatementType
label_desc: Use image node_id 1 to create a new CreateTableStatement object from inherited base classes: AbstractStatement with example: obj = CreateTableStatement(table_info, if_not_exists, column_list, query)