17 package com.mapd.parser.extension.ddl;
21 import org.apache.calcite.runtime.CalciteException;
22 import org.apache.calcite.sql.SqlCall;
23 import org.apache.calcite.sql.SqlCreate;
24 import org.apache.calcite.sql.SqlIdentifier;
25 import org.apache.calcite.sql.SqlKind;
26 import org.apache.calcite.sql.SqlNode;
27 import org.apache.calcite.sql.SqlNodeList;
29 import org.apache.calcite.sql.SqlSpecialOperator;
30 import org.apache.calcite.sql.SqlWriter;
31 import org.apache.calcite.sql.SqlWriterConfig;
32 import org.apache.calcite.sql.dialect.CalciteSqlDialect;
33 import org.apache.calcite.sql.parser.SqlParserPos;
34 import org.apache.calcite.sql.pretty.SqlPrettyWriter;
36 import org.apache.calcite.util.ImmutableNullableList;
37 import org.apache.calcite.util.JsonBuilder;
39 import java.util.List;
41 import java.util.Objects;
48 public final SqlIdentifier
name;
54 new SqlSpecialOperator(
"CREATE TABLE", SqlKind.CREATE_TABLE);
65 super(
OPERATOR, pos, replace, ifNotExists);
67 this.name = Objects.requireNonNull(
name);
68 this.options = withOptions;
78 public void unparse(SqlWriter writer,
int leftPrec,
int rightPrec) {
79 writer.keyword(
"CREATE");
81 writer.keyword(
"TEMPORARY");
83 writer.keyword(
"TABLE");
85 writer.keyword(
"IF NOT EXISTS");
87 name.unparse(writer, leftPrec, rightPrec);
89 SqlWriter.Frame frame = writer.startList(
"(",
")");
92 c.unparse(writer, 0, 0);
94 writer.endList(frame);
98 writer.newlineAndIndent();
99 query.unparse(writer, 0, 0);
106 Map<String, Object> map = jsonBuilder.map();
108 jsonBuilder.put(map,
"command",
"CREATE_TABLE");
109 jsonBuilder.put(map,
"name", this.name.toString());
117 SqlWriterConfig c = SqlPrettyWriter.config()
118 .withDialect(CalciteSqlDialect.DEFAULT)
119 .withQuoteAllIdentifiers(
false)
120 .withSelectListItemsOnSeparateLines(
false)
121 .withWhereListItemsOnSeparateLines(
false)
122 .withValuesListNewline(
false);
123 SqlPrettyWriter writer =
new SqlPrettyWriter(c);
124 this.query.unparse(writer, 0, 0);
125 jsonBuilder.put(map,
"query", writer.toString());
128 List<Object> elements_list = jsonBuilder.list();
131 if (!(elementNode instanceof SqlCall)) {
132 throw new CalciteException(
"Column definition for table " + this.
name.toString()
133 +
" is invalid: " + elementNode.toString(),
136 elements_list.add(elementNode);
139 jsonBuilder.put(map,
"elements", elements_list);
141 jsonBuilder.put(map,
"temporary", this.temporary);
142 jsonBuilder.put(map,
"ifNotExists", this.ifNotExists);
144 map.put(
"options", this.options);
146 Map<String, Object> payload = jsonBuilder.map();
147 payload.put(
"payload", map);
152 return jsonBuilder.toJsonString(payload);
final HeavyDBOptionsMap options
SqlCreateTable(SqlParserPos pos, boolean replace, boolean temporary, boolean ifNotExists, SqlIdentifier name, SqlNodeList columnList, HeavyDBOptionsMap withOptions, SqlNode query)
List< SqlNode > getOperandList()
final SqlNodeList columnList
static final SqlOperator OPERATOR
void unparse(SqlWriter writer, int leftPrec, int rightPrec)