From d2ddde1f885a0a46e8cb0eb0fbccd5985fe8231a Mon Sep 17 00:00:00 2001 From: zhaochun Date: Wed, 28 Nov 2018 14:36:34 +0800 Subject: [PATCH 1/4] Subsititue ColumnType to Type --- fe/src/main/cup/sql_parser.cup | 110 +-- .../doris/alter/SchemaChangeHandler.java | 7 +- .../doris/analysis/AddColumnClause.java | 30 +- .../doris/analysis/AddColumnsClause.java | 24 +- .../AdminShowReplicaDistributionStmt.java | 4 +- .../analysis/AdminShowReplicaStatusStmt.java | 4 +- .../org/apache/doris/analysis/ColumnDef.java | 187 +++++ .../analysis/CreateTableAsSelectStmt.java | 16 +- .../doris/analysis/CreateTableStmt.java | 177 +---- .../apache/doris/analysis/CreateViewStmt.java | 6 +- .../doris/analysis/DataDescription.java | 4 +- .../apache/doris/analysis/DescribeStmt.java | 32 +- .../org/apache/doris/analysis/HelpStmt.java | 18 +- .../org/apache/doris/analysis/KeysDesc.java | 8 +- .../doris/analysis/ModifyColumnClause.java | 21 +- .../apache/doris/analysis/PartitionDesc.java | 2 +- .../doris/analysis/RangePartitionDesc.java | 10 +- .../org/apache/doris/analysis/SelectStmt.java | 2 +- .../apache/doris/analysis/ShowAlterStmt.java | 4 +- .../apache/doris/analysis/ShowAuthorStmt.java | 8 +- .../doris/analysis/ShowBackendsStmt.java | 4 +- .../apache/doris/analysis/ShowBackupStmt.java | 4 +- .../apache/doris/analysis/ShowBrokerStmt.java | 6 +- .../doris/analysis/ShowCharsetStmt.java | 10 +- .../doris/analysis/ShowClusterStmt.java | 4 +- .../doris/analysis/ShowCollationStmt.java | 14 +- .../apache/doris/analysis/ShowColumnStmt.java | 32 +- .../doris/analysis/ShowCreateDbStmt.java | 6 +- .../doris/analysis/ShowCreateTableStmt.java | 14 +- .../apache/doris/analysis/ShowDataStmt.java | 12 +- .../org/apache/doris/analysis/ShowDbStmt.java | 4 +- .../apache/doris/analysis/ShowDeleteStmt.java | 4 +- .../doris/analysis/ShowEnginesStmt.java | 14 +- .../apache/doris/analysis/ShowEventsStmt.java | 32 +- .../apache/doris/analysis/ShowExportStmt.java | 4 +- .../doris/analysis/ShowFrontendsStmt.java | 4 +- .../apache/doris/analysis/ShowGrantsStmt.java | 4 +- .../apache/doris/analysis/ShowKeysStmt.java | 26 +- .../apache/doris/analysis/ShowLoadStmt.java | 4 +- .../doris/analysis/ShowLoadWarningsStmt.java | 8 +- .../doris/analysis/ShowMigrationsStmt.java | 4 +- .../doris/analysis/ShowOpenTableStmt.java | 10 +- .../doris/analysis/ShowPartitionsStmt.java | 4 +- .../doris/analysis/ShowPluginsStmt.java | 12 +- .../apache/doris/analysis/ShowProcStmt.java | 4 +- .../doris/analysis/ShowProcedureStmt.java | 24 +- .../doris/analysis/ShowProcesslistStmt.java | 20 +- .../doris/analysis/ShowRepositoriesStmt.java | 4 +- .../doris/analysis/ShowRestoreStmt.java | 4 +- .../apache/doris/analysis/ShowRolesStmt.java | 12 +- .../apache/doris/analysis/ShowRollupStmt.java | 8 +- .../doris/analysis/ShowSnapshotStmt.java | 6 +- .../apache/doris/analysis/ShowStatusStmt.java | 6 +- .../doris/analysis/ShowTableStatusStmt.java | 38 +- .../apache/doris/analysis/ShowTableStmt.java | 6 +- .../apache/doris/analysis/ShowTabletStmt.java | 24 +- .../doris/analysis/ShowTriggersStmt.java | 24 +- .../doris/analysis/ShowUserPropertyStmt.java | 4 +- .../apache/doris/analysis/ShowUserStmt.java | 4 +- .../doris/analysis/ShowVariablesStmt.java | 6 +- .../doris/analysis/ShowWarningStmt.java | 8 +- .../doris/analysis/ShowWhiteListStmt.java | 6 +- .../org/apache/doris/analysis/TypeDef.java | 37 +- .../org/apache/doris/backup/BackupJob_D.java | 3 +- .../org/apache/doris/backup/ObjectWriter.java | 10 +- .../org/apache/doris/backup/RestoreJob_D.java | 3 +- .../java/org/apache/doris/catalog/Column.java | 171 +---- .../org/apache/doris/catalog/ColumnType.java | 363 +--------- .../org/apache/doris/catalog/EsTable.java | 14 - .../org/apache/doris/catalog/MysqlTable.java | 16 - .../org/apache/doris/catalog/OlapTable.java | 53 +- .../org/apache/doris/catalog/ScalarType.java | 120 +++- .../org/apache/doris/catalog/SchemaTable.java | 660 +++++++++--------- .../java/org/apache/doris/catalog/Type.java | 10 + .../common/proc/IndexSchemaProcNode.java | 2 +- .../apache/doris/common/util/KuduUtil.java | 3 +- .../main/java/org/apache/doris/load/Load.java | 2 +- .../org/apache/doris/planner/CsvScanNode.java | 3 +- .../apache/doris/planner/OlapRewriteNode.java | 2 +- .../org/apache/doris/qe/ShowExecutor.java | 2 +- .../org/apache/doris/qe/ShowResultSet.java | 12 +- .../org/apache/doris/qe/StmtExecutor.java | 6 +- .../doris/service/FrontendServiceImpl.java | 6 +- .../doris/alter/SchemaChangeJobTest.java | 6 +- .../doris/analysis/AddColumnClauseTest.java | 25 +- .../doris/analysis/AddColumnsClauseTest.java | 17 +- .../{ColumnTest.java => ColumnDefTest.java} | 35 +- .../doris/analysis/CreateTableStmtTest.java | 18 +- .../analysis/ModifyColumnClauseTest.java | 7 +- .../apache/doris/backup/CatalogMocker.java | 33 +- .../apache/doris/catalog/CatalogTestUtil.java | 6 +- .../org/apache/doris/catalog/ColumnTest.java | 19 +- .../apache/doris/catalog/ColumnTypeTest.java | 117 ++-- .../apache/doris/catalog/CreateTableTest.java | 56 +- .../apache/doris/catalog/DatabaseTest.java | 20 +- .../doris/catalog/MaterializedIndexTest.java | 6 +- .../doris/catalog/PartitionKeyTest.java | 12 +- .../doris/catalog/RangePartitionInfoTest.java | 10 +- .../org/apache/doris/catalog/TableTest.java | 20 +- .../doris/common/PropertyAnalyzerTest.java | 10 +- .../doris/common/util/UnitTestUtil.java | 4 +- .../doris/persist/CreateTableInfoTest.java | 27 +- .../doris/planner/OlapTableSinkTest.java | 6 +- .../doris/planner/StreamLoadScanNodeTest.java | 6 +- .../doris/qe/ShowResultSetMetaDataTest.java | 6 +- .../org/apache/doris/task/AgentTaskTest.java | 6 +- 106 files changed, 1347 insertions(+), 1745 deletions(-) create mode 100644 fe/src/main/java/org/apache/doris/analysis/ColumnDef.java rename fe/src/test/java/org/apache/doris/analysis/{ColumnTest.java => ColumnDefTest.java} (69%) diff --git a/fe/src/main/cup/sql_parser.cup b/fe/src/main/cup/sql_parser.cup index 41ca7d8812ee59..1859c26f1dc2a4 100644 --- a/fe/src/main/cup/sql_parser.cup +++ b/fe/src/main/cup/sql_parser.cup @@ -347,10 +347,8 @@ nonterminal List option_value_list, option_value_list_continued, start_o start_option_value_list_following_option_type, user_property_list; nonterminal Map key_value_map, opt_key_value_map, opt_properties, opt_ext_properties; -nonterminal Column column_definition; -nonterminal ArrayList column_definition_list; -nonterminal ColumnType column_type; -nonterminal List column_type_list; +nonterminal ColumnDef column_definition; +nonterminal ArrayList column_definition_list; nonterminal AggregateType opt_agg_type; nonterminal PartitionDesc opt_partition; nonterminal DistributionDesc opt_distribution; @@ -831,6 +829,7 @@ create_stmt ::= RESULT = new CreateClusterStmt(name, properties, password); :}*/ /* Function */ + /* | KW_CREATE KW_FUNCTION function_name:functionName LPAREN column_type_list:arguments RPAREN column_type:retrunType KW_SONAME STRING_LITERAL:soPath opt_properties:properties @@ -843,6 +842,7 @@ create_stmt ::= {: RESULT = new CreateFunctionStmt(functionName, arguments, retrunType, soPath, properties, true); :} + */ /* Table */ | KW_CREATE opt_external:isExternal KW_TABLE opt_if_not_exists:ifNotExists table_name:name LPAREN column_definition_list:columns RPAREN opt_engine:engineName @@ -946,19 +946,6 @@ user_identity ::= :} ; -column_type_list ::= - column_type:type - {: - RESULT = Lists.newArrayList(); - RESULT.add(type); - :} - | column_type_list:types COMMA column_type:type - {: - types.add(type); - RESULT = types; - :} - ; - // Help statement help_stmt ::= KW_HELP ident_or_text:mark @@ -1416,89 +1403,6 @@ column_definition_list ::= :} ; -column_type ::= - KW_TINYINT - {: - RESULT = ColumnType.createType(PrimitiveType.TINYINT); - :} - | KW_TINYINT LPAREN INTEGER_LITERAL:length RPAREN - {: - RESULT = ColumnType.createType(PrimitiveType.TINYINT); - :} - | KW_SMALLINT - {: - RESULT = ColumnType.createType(PrimitiveType.SMALLINT); - :} - | KW_SMALLINT LPAREN INTEGER_LITERAL:length RPAREN - {: - RESULT = ColumnType.createType(PrimitiveType.SMALLINT); - :} - | KW_INT - {: - RESULT = ColumnType.createType(PrimitiveType.INT); - :} - | KW_INT LPAREN INTEGER_LITERAL:length RPAREN - {: - RESULT = ColumnType.createType(PrimitiveType.INT); - :} - | KW_BIGINT - {: - RESULT = ColumnType.createType(PrimitiveType.BIGINT); - :} - | KW_BIGINT LPAREN INTEGER_LITERAL:length RPAREN - {: - RESULT = ColumnType.createType(PrimitiveType.BIGINT); - :} - | KW_LARGEINT - {: - RESULT = ColumnType.createType(PrimitiveType.LARGEINT); - :} - | KW_LARGEINT LPAREN INTEGER_LITERAL:length RPAREN - {: - RESULT = ColumnType.createType(PrimitiveType.LARGEINT); - :} - | KW_FLOAT - {: - RESULT = ColumnType.createType(PrimitiveType.FLOAT); - :} - | KW_DOUBLE - {: - RESULT = ColumnType.createType(PrimitiveType.DOUBLE); - :} - | KW_DECIMAL - {: - RESULT = ColumnType.createDecimal(10, 0); - :} - | KW_DECIMAL LPAREN INTEGER_LITERAL:precision COMMA INTEGER_LITERAL:scale RPAREN - {: - RESULT = ColumnType.createDecimal(precision.intValue(), scale.intValue()); - :} - | KW_DATE - {: - RESULT = ColumnType.createType(PrimitiveType.DATE); - :} - | KW_DATETIME - {: - RESULT = ColumnType.createType(PrimitiveType.DATETIME); - :} - | KW_CHAR - {: - RESULT = ColumnType.createChar(1); - :} - | KW_CHAR LPAREN INTEGER_LITERAL:length RPAREN - {: - RESULT = ColumnType.createChar(length.intValue()); - :} - | KW_VARCHAR LPAREN INTEGER_LITERAL:length RPAREN - {: - RESULT = ColumnType.createVarchar(length.intValue()); - :} - | KW_HLL - {: - RESULT = ColumnType.createHll(); - :} - ; - opt_default_value ::= /* Empty */ {: @@ -1525,10 +1429,10 @@ opt_is_key ::= ; column_definition ::= - ident:columnName column_type:dataType opt_is_key:isKey opt_agg_type:aggType opt_is_allow_null:isAllowNull opt_default_value:defaultValue opt_comment:comment + ident:columnName type_def:typeDef opt_is_key:isKey opt_agg_type:aggType opt_is_allow_null:isAllowNull opt_default_value:defaultValue opt_comment:comment {: - Column column = new Column(columnName, dataType, isKey, aggType, isAllowNull, defaultValue, comment); - RESULT = column; + ColumnDef columnDef = new ColumnDef(columnName, typeDef, isKey, aggType, isAllowNull, defaultValue, comment); + RESULT = columnDef; :} ; diff --git a/fe/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java b/fe/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java index 7d2f9f245d70cc..fc14cd687583fa 100644 --- a/fe/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java +++ b/fe/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java @@ -55,7 +55,6 @@ import org.apache.doris.common.util.ListComparator; import org.apache.doris.common.util.PropertyAnalyzer; import org.apache.doris.common.util.Util; -import org.apache.doris.mysql.privilege.PrivPredicate; import org.apache.doris.qe.ConnectContext; import org.apache.doris.thrift.TResourceInfo; import org.apache.doris.thrift.TStorageType; @@ -86,7 +85,7 @@ public SchemaChangeHandler() { private void processAddColumn(AddColumnClause alterClause, OlapTable olapTable, Map> indexSchemaMap) throws DdlException { - Column column = alterClause.getCol(); + Column column = alterClause.getColumn(); ColumnPosition columnPos = alterClause.getColPos(); String targetIndexName = alterClause.getRollupName(); checkIndexExists(olapTable, targetIndexName); @@ -264,7 +263,7 @@ private void processDropColumn(DropColumnClause alterClause, OlapTable olapTable private void processModifyColumn(ModifyColumnClause alterClause, OlapTable olapTable, Map> indexSchemaMap) throws DdlException { - Column modColumn = alterClause.getCol(); + Column modColumn = alterClause.getColumn(); if (KeysType.AGG_KEYS == olapTable.getKeysType()) { if (modColumn.isKey() && null != modColumn.getAggregationType()) { throw new DdlException("key column of aggregate key table cannot use aggregation method"); @@ -663,7 +662,7 @@ private void checkKeyModificationIfInRandomDistributedTable(OlapTable olapTable) private void checkRowLength(List modIndexSchema) throws DdlException { int rowLengthBytes = 0; for (Column column : modIndexSchema) { - rowLengthBytes += column.getColumnType().getMemlayoutBytes(); + rowLengthBytes += column.getType().getStorageLayoutBytes(); } if (rowLengthBytes > Config.max_layout_length_per_row) { diff --git a/fe/src/main/java/org/apache/doris/analysis/AddColumnClause.java b/fe/src/main/java/org/apache/doris/analysis/AddColumnClause.java index c3c662531a2bc5..95edafe95c08ff 100644 --- a/fe/src/main/java/org/apache/doris/analysis/AddColumnClause.java +++ b/fe/src/main/java/org/apache/doris/analysis/AddColumnClause.java @@ -32,17 +32,17 @@ // clause which is used to add one column to public class AddColumnClause extends AlterClause { private static final Logger LOG = LogManager.getLogger(AddColumnClause.class); - private Column col; + private ColumnDef columnDef; // Column position private ColumnPosition colPos; // if rollupName is null, add to column to base index. private String rollupName; private Map properties; + // set in analyze + private Column column; - public Column getCol() { - return col; - } + public Column getColumn() { return column; } public ColumnPosition getColPos() { return colPos; @@ -52,9 +52,9 @@ public String getRollupName() { return rollupName; } - public AddColumnClause(Column col, ColumnPosition colPos, String rollupName, + public AddColumnClause(ColumnDef columnDef, ColumnPosition colPos, String rollupName, Map properties) { - this.col = col; + this.columnDef = columnDef; this.colPos = colPos; this.rollupName = rollupName; this.properties = properties; @@ -62,25 +62,27 @@ public AddColumnClause(Column col, ColumnPosition colPos, String rollupName, @Override public void analyze(Analyzer analyzer) throws AnalysisException { - if (col == null) { - throw new AnalysisException("No column definition in add columnn clause."); + if (columnDef == null) { + throw new AnalysisException("No column definition in add column clause."); } - col.analyze(true); + columnDef.analyze(true); if (colPos != null) { colPos.analyze(); } - if (false == col.isAllowNull() && col.getDefaultValue() == null) { - ErrorReport.reportAnalysisException(ErrorCode.ERR_NO_DEFAULT_FOR_FIELD, col.getName()); + if (!columnDef.isAllowNull() && columnDef.getDefaultValue() == null) { + ErrorReport.reportAnalysisException(ErrorCode.ERR_NO_DEFAULT_FOR_FIELD, columnDef.getName()); } - if (col.getAggregationType() != null && colPos != null && colPos.isFirst()) { - throw new AnalysisException("Cannot add value column[" + col.getName() + "] at first"); + if (columnDef.getAggregateType() != null && colPos != null && colPos.isFirst()) { + throw new AnalysisException("Cannot add value column[" + columnDef.getName() + "] at first"); } if (Strings.isNullOrEmpty(rollupName)) { rollupName = null; } + + column = columnDef.toColumn(); } @Override @@ -91,7 +93,7 @@ public Map getProperties() { @Override public String toSql() { StringBuilder sb = new StringBuilder(); - sb.append("ADD COLUMN ").append(col.toSql()); + sb.append("ADD COLUMN ").append(columnDef.toSql()); if (colPos != null) { sb.append(" ").append(colPos.toSql()); } diff --git a/fe/src/main/java/org/apache/doris/analysis/AddColumnsClause.java b/fe/src/main/java/org/apache/doris/analysis/AddColumnsClause.java index e5d591415a5ebf..81b108c86963f7 100644 --- a/fe/src/main/java/org/apache/doris/analysis/AddColumnsClause.java +++ b/fe/src/main/java/org/apache/doris/analysis/AddColumnsClause.java @@ -17,6 +17,7 @@ package org.apache.doris.analysis; +import com.google.common.collect.Lists; import org.apache.doris.catalog.Column; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; @@ -29,10 +30,12 @@ // add some columns to one index. public class AddColumnsClause extends AlterClause { - private List columns; + private List columnDefs; private String rollupName; private Map properties; + // set in analyze + private List columns; public List getColumns() { return columns; @@ -42,27 +45,32 @@ public String getRollupName() { return rollupName; } - public AddColumnsClause(List columns, String rollupName, Map properties) { - this.columns = columns; + public AddColumnsClause(List columnDefs, String rollupName, Map properties) { + this.columnDefs = columnDefs; this.rollupName = rollupName; this.properties = properties; } @Override public void analyze(Analyzer analyzer) throws AnalysisException { - if (columns == null || columns.isEmpty()) { + if (columnDefs == null || columnDefs.isEmpty()) { throw new AnalysisException("Columns is empty in add columns clause."); } - for (Column colDef : columns) { + for (ColumnDef colDef : columnDefs) { colDef.analyze(true); - if (false == colDef.isAllowNull() && colDef.getDefaultValue() == null) { + if (!colDef.isAllowNull() && colDef.getDefaultValue() == null) { ErrorReport.reportAnalysisException(ErrorCode.ERR_NO_DEFAULT_FOR_FIELD, colDef.getName()); } } // Make sure return null if rollup name is empty. rollupName = Strings.emptyToNull(rollupName); + + columns = Lists.newArrayList(); + for (ColumnDef columnDef : columnDefs) { + columns.add(columnDef.toColumn()); + } } @Override @@ -75,11 +83,11 @@ public String toSql() { StringBuilder sb = new StringBuilder(); sb.append("ADD COLUMN ("); int idx = 0; - for (Column column : columns) { + for (ColumnDef columnDef : columnDefs) { if (idx != 0) { sb.append(", "); } - sb.append(column.toSql()); + sb.append(columnDef.toSql()); idx++; } sb.append(")"); diff --git a/fe/src/main/java/org/apache/doris/analysis/AdminShowReplicaDistributionStmt.java b/fe/src/main/java/org/apache/doris/analysis/AdminShowReplicaDistributionStmt.java index 909d8fbddb6d5f..d8bd929f27ddec 100644 --- a/fe/src/main/java/org/apache/doris/analysis/AdminShowReplicaDistributionStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/AdminShowReplicaDistributionStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; @@ -88,7 +88,7 @@ public List getPartitions() { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String title : TITLE_NAMES) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/AdminShowReplicaStatusStmt.java b/fe/src/main/java/org/apache/doris/analysis/AdminShowReplicaStatusStmt.java index 811bb0c8fb9d2b..a09950839f59d0 100644 --- a/fe/src/main/java/org/apache/doris/analysis/AdminShowReplicaStatusStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/AdminShowReplicaStatusStmt.java @@ -20,7 +20,7 @@ import org.apache.doris.analysis.BinaryPredicate.Operator; import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.Replica.ReplicaStatus; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; @@ -155,7 +155,7 @@ public ReplicaStatus getStatusFilter() { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String title : TITLE_NAMES) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ColumnDef.java b/fe/src/main/java/org/apache/doris/analysis/ColumnDef.java new file mode 100644 index 00000000000000..d5d8515e078424 --- /dev/null +++ b/fe/src/main/java/org/apache/doris/analysis/ColumnDef.java @@ -0,0 +1,187 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.apache.doris.analysis; + +import com.google.common.base.Preconditions; +import org.apache.doris.catalog.AggregateType; +import org.apache.doris.catalog.Column; +import org.apache.doris.catalog.PrimitiveType; +import org.apache.doris.catalog.ScalarType; +import org.apache.doris.catalog.Type; +import org.apache.doris.common.AnalysisException; +import org.apache.doris.common.FeNameFormat; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +// Column definition which is generated by SQL syntax parser +// Syntax: +// name type [key] [agg_type] [NULL | NOT NULL] [DEFAULT default_value] [comment] +// Example: +// id bigint key NOT NULL DEFAULT "-1" "user id" +// pv bigint sum NULL DEFAULT "-1" "page visit" +public class ColumnDef { + private static final Logger LOG = LogManager.getLogger(ColumnDef.class); + private static final String HLL_EMPTY_SET = "0"; + + // parameter initialized in constructor + private String name; + private TypeDef typeDef; + private AggregateType aggregateType; + private boolean isKey; + private boolean isAllowNull; + private String defaultValue; + private String comment; + + public ColumnDef(String name, TypeDef typeDef) { + this.name = name; + this.typeDef = typeDef; + this.comment = ""; + } + + public ColumnDef(String name, TypeDef typeDef, + boolean isKey, AggregateType aggregateType, + boolean isAllowNull, String defaultValue, + String comment) { + this.name = name; + this.typeDef = typeDef; + this.isKey = isKey; + this.aggregateType = aggregateType; + this.isAllowNull = isAllowNull; + this.defaultValue = defaultValue; + this.comment = comment; + } + + public boolean isAllowNull() { return isAllowNull; } + public String getDefaultValue() { return defaultValue; } + public String getName() { return name; } + public AggregateType getAggregateType() { return aggregateType; } + public void setAggregateType(AggregateType aggregateType, boolean xxx) { this.aggregateType = aggregateType; } + public boolean isKey() { return isKey; } + public void setIsKey(boolean isKey) { this.isKey = isKey; } + public TypeDef getTypeDef() { return typeDef; } + public Type getType() { return typeDef.getType(); } + + public void analyze(boolean isOlap) throws AnalysisException { + if (name == null || typeDef == null) { + throw new AnalysisException("No column name or column type in column definition."); + } + FeNameFormat.checkColumnName(name); + typeDef.analyze(null); + + Type type = typeDef.getType(); + if (aggregateType != null) { + // check if aggregate type is valid + if (!aggregateType.checkCompatibility(type.getPrimitiveType())) { + throw new AnalysisException(String.format("Aggregate type %s is not compatible with primitive type %s", + toString(), type.toSql())); + } + } + + if (type.getPrimitiveType() == PrimitiveType.FLOAT || type.getPrimitiveType() == PrimitiveType.DOUBLE) { + if (isOlap && isKey) { + throw new AnalysisException("Float or double can not used as a key, use decimal instead."); + } + } + + if (type.getPrimitiveType() == PrimitiveType.HLL) { + if (defaultValue != null) { + throw new AnalysisException("Hll can not set default value"); + } + defaultValue = HLL_EMPTY_SET; + } + + if (defaultValue != null) { + validateDefaultValue(type, defaultValue); + } + } + + public static void validateDefaultValue(Type type, String defaultValue) throws AnalysisException { + Preconditions.checkNotNull(defaultValue); + Preconditions.checkArgument(type.isScalarType()); + ScalarType scalarType = (ScalarType) type; + + // check if default value is valid. + // if not, some literal constructor will throw AnalysisException + PrimitiveType primitiveType = scalarType.getPrimitiveType(); + switch (primitiveType) { + case TINYINT: + case SMALLINT: + case INT: + case BIGINT: + IntLiteral intLiteral = new IntLiteral(defaultValue, type); + break; + case LARGEINT: + LargeIntLiteral largeIntLiteral = new LargeIntLiteral(defaultValue); + largeIntLiteral.analyze(null); + break; + case FLOAT: + FloatLiteral floatLiteral = new FloatLiteral(defaultValue); + if (floatLiteral.getType() == Type.DOUBLE) { + throw new AnalysisException("Default value will loose precision: " + defaultValue); + } + case DOUBLE: + FloatLiteral doubleLiteral = new FloatLiteral(defaultValue); + break; + case DECIMAL: + DecimalLiteral decimalLiteral = new DecimalLiteral(defaultValue); + decimalLiteral.checkPrecisionAndScale(scalarType.getScalarPrecision(), scalarType.getScalarScale()); + break; + case DATE: + case DATETIME: + DateLiteral dateLiteral = new DateLiteral(defaultValue, type); + break; + case CHAR: + case VARCHAR: + case HLL: + if (defaultValue.length() > scalarType.getLength()) { + throw new AnalysisException("Default value is too long: " + defaultValue); + } + break; + default: + throw new AnalysisException("Unsupported type: " + type); + } + } + + public String toSql() { + StringBuilder sb = new StringBuilder(); + sb.append("`").append(name).append("` "); + sb.append(typeDef.toSql()).append(" "); + + if (aggregateType != null) { + sb.append(aggregateType.name()).append(" "); + } + + if (!isAllowNull) { + sb.append("NOT NULL "); + } + + if (defaultValue != null) { + sb.append("DEFAULT \"").append(defaultValue).append("\" "); + } + sb.append("COMMENT \"").append(comment).append("\""); + + return sb.toString(); + } + + public Column toColumn() { + return new Column(name, typeDef.getType(), isKey, aggregateType, isAllowNull, defaultValue, comment); + } + + @Override + public String toString() { return toSql(); } +} diff --git a/fe/src/main/java/org/apache/doris/analysis/CreateTableAsSelectStmt.java b/fe/src/main/java/org/apache/doris/analysis/CreateTableAsSelectStmt.java index ec7fd7675640e8..4f2bd24905c50a 100644 --- a/fe/src/main/java/org/apache/doris/analysis/CreateTableAsSelectStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/CreateTableAsSelectStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.Table; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.DdlException; @@ -71,19 +71,13 @@ public void analyze(Analyzer analyzer) throws UserException, AnalysisException { ErrorReport.report(ErrorCode.ERR_COL_NUMBER_NOT_MATCH); } for (int i = 0; i < columnNames.size(); ++i) { - createTableStmt - .addColumn( - new Column( - columnNames.get(i), - ColumnType.createType(tmpStmt.getResultExprs().get(i).getType().getPrimitiveType()))); + createTableStmt.addColumnDef(new ColumnDef( + columnNames.get(i), new TypeDef(tmpStmt.getResultExprs().get(i).getType()))); } } else { for (int i = 0; i < tmpStmt.getColLabels().size(); ++i) { - createTableStmt - .addColumn( - new Column( - tmpStmt.getColLabels().get(i), - ColumnType.createType(tmpStmt.getResultExprs().get(i).getType().getPrimitiveType()))); + createTableStmt.addColumnDef(new ColumnDef( + tmpStmt.getColLabels().get(i), new TypeDef(tmpStmt.getResultExprs().get(i).getType()))); } } diff --git a/fe/src/main/java/org/apache/doris/analysis/CreateTableStmt.java b/fe/src/main/java/org/apache/doris/analysis/CreateTableStmt.java index 1cdfab8190270f..b2626bb877c64c 100644 --- a/fe/src/main/java/org/apache/doris/analysis/CreateTableStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/CreateTableStmt.java @@ -28,6 +28,7 @@ import org.apache.doris.common.ErrorReport; import org.apache.doris.common.FeMetaVersion; import org.apache.doris.common.FeNameFormat; +import org.apache.doris.common.NotImplementedException; import org.apache.doris.common.UserException; import org.apache.doris.common.io.Text; import org.apache.doris.common.io.Writable; @@ -52,7 +53,7 @@ import java.util.Map; import java.util.Set; -public class CreateTableStmt extends DdlStmt implements Writable { +public class CreateTableStmt extends DdlStmt { private static final Logger LOG = LogManager.getLogger(CreateTableStmt.class); private static final String DEFAULT_ENGINE_NAME = "olap"; @@ -60,7 +61,7 @@ public class CreateTableStmt extends DdlStmt implements Writable { private boolean ifNotExists; private boolean isExternal; private TableName tableName; - private List columns; + private List columnDefs; private KeysDesc keysDesc; private PartitionDesc partitionDesc; private DistributionDesc distributionDesc; @@ -70,6 +71,9 @@ public class CreateTableStmt extends DdlStmt implements Writable { private static Set engineNames; + // set in analyze + private List columns = Lists.newArrayList(); + static { engineNames = Sets.newHashSet(); engineNames.add("olap"); @@ -85,13 +89,13 @@ public class CreateTableStmt extends DdlStmt implements Writable { public CreateTableStmt() { // for persist tableName = new TableName(); - columns = Lists.newArrayList(); + columnDefs = Lists.newArrayList(); } public CreateTableStmt(boolean ifNotExists, boolean isExternal, TableName tableName, - List columnDefinitions, + List columnDefinitions, String engineName, KeysDesc keysDesc, PartitionDesc partitionDesc, @@ -100,9 +104,9 @@ public CreateTableStmt(boolean ifNotExists, Map extProperties) { this.tableName = tableName; if (columnDefinitions == null) { - this.columns = Lists.newArrayList(); + this.columnDefs = Lists.newArrayList(); } else { - this.columns = columnDefinitions; + this.columnDefs = columnDefinitions; } if (Strings.isNullOrEmpty(engineName)) { this.engineName = DEFAULT_ENGINE_NAME; @@ -121,9 +125,7 @@ public CreateTableStmt(boolean ifNotExists, this.tableSignature = -1; } - public void addColumn(Column col) { - columns.add(col); - } + public void addColumnDef(ColumnDef columnDef) { columnDefs.add(columnDef); } public boolean isSetIfNotExists() { return ifNotExists; @@ -209,25 +211,25 @@ public void analyze(Analyzer analyzer) throws AnalysisException, UserException { // olap table if (keysDesc == null) { List keysColumnNames = Lists.newArrayList(); - for (Column column : columns) { - if (column.getAggregationType() == null) { - keysColumnNames.add(column.getName()); + for (ColumnDef columnDef : columnDefs) { + if (columnDef.getAggregateType() == null) { + keysColumnNames.add(columnDef.getName()); } } keysDesc = new KeysDesc(KeysType.AGG_KEYS, keysColumnNames); } - keysDesc.analyze(columns); + keysDesc.analyze(columnDefs); for (int i = 0; i < keysDesc.keysColumnSize(); ++i) { - columns.get(i).setIsKey(true); + columnDefs.get(i).setIsKey(true); } if (keysDesc.getKeysType() != KeysType.AGG_KEYS) { AggregateType type = AggregateType.REPLACE; if (keysDesc.getKeysType() == KeysType.DUP_KEYS) { type = AggregateType.NONE; } - for (int i = keysDesc.keysColumnSize(); i < columns.size(); ++i) { - columns.get(i).setAggregationType(type, true); + for (int i = keysDesc.keysColumnSize(); i < columnDefs.size(); ++i) { + columnDefs.get(i).setAggregateType(type, true); } } } @@ -237,40 +239,36 @@ public void analyze(Analyzer analyzer) throws AnalysisException, UserException { throw new AnalysisException("Create " + engineName + " table should not contain keys desc"); } - for (Column column : columns) { - column.setIsKey(true); + for (ColumnDef columnDef : columnDefs) { + columnDef.setIsKey(true); } } // analyze column def - if (columns == null || columns.isEmpty()) { + if (columnDefs == null || columnDefs.isEmpty()) { ErrorReport.reportAnalysisException(ErrorCode.ERR_TABLE_MUST_HAVE_COLUMNS); } int rowLengthBytes = 0; boolean hasHll = false; Set columnSet = Sets.newTreeSet(String.CASE_INSENSITIVE_ORDER); - for (Column col : columns) { - // if engine is mysql, remove varchar limit - if (engineName.equals("mysql")) { - col.setVarcharLimit(false); - } - + for (ColumnDef columnDef : columnDefs) { if (engineName.equals("kudu")) { - KuduUtil.analyzeColumn(col, keysDesc); + // KuduUtil.analyzeColumn(columnDef, keysDesc); + throw new NotImplementedException(""); } else { - col.analyze(engineName.equals("olap")); + columnDef.analyze(engineName.equals("olap")); } - if (col.getType().isHllType()) { + if (columnDef.getType().isHllType()) { hasHll = true; } - if (!columnSet.add(col.getName())) { - ErrorReport.reportAnalysisException(ErrorCode.ERR_DUP_FIELDNAME, col.getName()); + if (!columnSet.add(columnDef.getName())) { + ErrorReport.reportAnalysisException(ErrorCode.ERR_DUP_FIELDNAME, columnDef.getName()); } - rowLengthBytes += col.getColumnType().getMemlayoutBytes(); + rowLengthBytes += columnDef.getType().getStorageLayoutBytes(); } if (rowLengthBytes > Config.max_layout_length_per_row) { @@ -294,7 +292,7 @@ public void analyze(Analyzer analyzer) throws AnalysisException, UserException { throw new AnalysisException("Only allow partitioned by one column"); } - rangePartitionDesc.analyze(columns, properties); + rangePartitionDesc.analyze(columnDefs, properties); } // analyze distribution @@ -312,6 +310,10 @@ public void analyze(Analyzer analyzer) throws AnalysisException, UserException { + " table should not contain partition or distribution desc"); } } + + for (ColumnDef columnDef : columnDefs) { + columns.add(columnDef.toColumn()); + } } private void analyzeEngineName() throws AnalysisException { @@ -340,9 +342,7 @@ private void analyzeEngineName() throws AnalysisException { } public static CreateTableStmt read(DataInput in) throws IOException { - CreateTableStmt stmt = new CreateTableStmt(); - stmt.readFields(in); - return stmt; + throw new RuntimeException("CreateTableStmt serialization is not supported anymore."); } @Override @@ -356,11 +356,11 @@ public String toSql() { sb.append("TABLE "); sb.append(tableName.toSql()).append(" (\n"); int idx = 0; - for (Column column : columns) { + for (ColumnDef columnDef : columnDefs) { if (idx != 0) { sb.append(",\n"); } - sb.append(" ").append(column.toSql()); + sb.append(" ").append(columnDef.toSql()); idx++; } sb.append("\n)"); @@ -411,107 +411,4 @@ public boolean needAuditEncryption() { } return false; } - - @Override - public void write(DataOutput out) throws IOException { - out.writeBoolean(ifNotExists); - tableName.write(out); - int count = columns.size(); - out.writeInt(count); - for (Column columnDefinition : columns) { - columnDefinition.write(out); - } - - if (keysDesc == null) { - out.writeBoolean(false); - } else { - out.writeBoolean(true); - keysDesc.write(out); - } - - if (partitionDesc == null) { - out.writeBoolean(false); - } else { - out.writeBoolean(true); - partitionDesc.write(out); - } - - if (distributionDesc == null) { - out.writeBoolean(false); - } else { - out.writeBoolean(true); - distributionDesc.write(out); - } - - if (properties == null) { - out.writeBoolean(false); - } else { - out.writeBoolean(true); - count = properties.size(); - out.writeInt(count); - for (Map.Entry prop : properties.entrySet()) { - Text.writeString(out, prop.getKey()); - Text.writeString(out, prop.getValue()); - } - } - - Text.writeString(out, engineName); - - out.writeInt(tableSignature); - } - - @Override - public void readFields(DataInput in) throws IOException { - ifNotExists = in.readBoolean(); - tableName.readFields(in); - - int count = in.readInt(); - for (int i = 0; i < count; i++) { - Column columnDefinition = new Column(); - columnDefinition.readFields(in); - columns.add(columnDefinition); - } - - if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_30) { - boolean has = in.readBoolean(); - if (has) { - keysDesc = KeysDesc.read(in); - } - } - - boolean has = in.readBoolean(); - if (has) { - partitionDesc = PartitionDesc.read(in); - } - - has = in.readBoolean(); - if (has) { - distributionDesc = DistributionDesc.read(in); - } - - has = in.readBoolean(); - if (has) { - count = in.readInt(); - properties = Maps.newHashMap(); - for (int i = 0; i < count; i++) { - String key = Text.readString(in); - String value = Text.readString(in); - properties.put(key, value); - } - } - - engineName = Text.readString(in); - if (Catalog.getCurrentCatalogJournalVersion() < FeMetaVersion.VERSION_30 - && engineName.equals("olap")) { - List keysColumnNames = Lists.newArrayList(); - for (Column column : columns) { - if (column.getAggregationType() == null) { - keysColumnNames.add(column.getName()); - } - } - keysDesc = new KeysDesc(KeysType.AGG_KEYS, keysColumnNames); - } - - tableSignature = in.readInt(); - } } diff --git a/fe/src/main/java/org/apache/doris/analysis/CreateViewStmt.java b/fe/src/main/java/org/apache/doris/analysis/CreateViewStmt.java index 7dff59100e62ab..4233214c8b378d 100644 --- a/fe/src/main/java/org/apache/doris/analysis/CreateViewStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/CreateViewStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; @@ -95,7 +95,7 @@ private void createColumnAndViewDefs(Analyzer analyzer) throws AnalysisException PrimitiveType type = viewDefStmt.getBaseTblResultExprs().get(i).getType().getPrimitiveType(); finalCols.add(new Column( columnNames.get(i), - ColumnType.createType(type))); + ScalarType.createType(type))); } } else { // TODO(zc): type @@ -103,7 +103,7 @@ private void createColumnAndViewDefs(Analyzer analyzer) throws AnalysisException PrimitiveType type = viewDefStmt.getBaseTblResultExprs().get(i).getType().getPrimitiveType(); finalCols.add(new Column( viewDefStmt.getColLabels().get(i), - ColumnType.createType(type))); + ScalarType.createType(type))); } } // Set for duplicate columns diff --git a/fe/src/main/java/org/apache/doris/analysis/DataDescription.java b/fe/src/main/java/org/apache/doris/analysis/DataDescription.java index de3673e233709f..1b98416e691c92 100644 --- a/fe/src/main/java/org/apache/doris/analysis/DataDescription.java +++ b/fe/src/main/java/org/apache/doris/analysis/DataDescription.java @@ -342,7 +342,7 @@ private static void validateDefaultValue(List args, Column column) throw } if (args.get(0) != null) { - Column.validateDefaultValue(column.getColumnType(), args.get(0)); + ColumnDef.validateDefaultValue(column.getOriginType(), args.get(0)); } } @@ -377,7 +377,7 @@ private static void validateReplaceValue(List args, Column column) throw } if (replaceValue != null) { - Column.validateDefaultValue(column.getColumnType(), replaceValue); + ColumnDef.validateDefaultValue(column.getOriginType(), replaceValue); } } diff --git a/fe/src/main/java/org/apache/doris/analysis/DescribeStmt.java b/fe/src/main/java/org/apache/doris/analysis/DescribeStmt.java index 2ae07d97726c56..d61e1f4ee1ccc2 100644 --- a/fe/src/main/java/org/apache/doris/analysis/DescribeStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/DescribeStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.Database; import org.apache.doris.catalog.MysqlTable; import org.apache.doris.catalog.OlapTable; @@ -51,23 +51,23 @@ public class DescribeStmt extends ShowStmt { private static final ShowResultSetMetaData DESC_OLAP_TABLE_ALL_META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("IndexName", ColumnType.createVarchar(20))) - .addColumn(new Column("Field", ColumnType.createVarchar(20))) - .addColumn(new Column("Type", ColumnType.createVarchar(20))) - .addColumn(new Column("Null", ColumnType.createVarchar(10))) - .addColumn(new Column("Key", ColumnType.createVarchar(10))) - .addColumn(new Column("Default", ColumnType.createVarchar(30))) - .addColumn(new Column("Extra", ColumnType.createVarchar(30))) + .addColumn(new Column("IndexName", ScalarType.createVarchar(20))) + .addColumn(new Column("Field", ScalarType.createVarchar(20))) + .addColumn(new Column("Type", ScalarType.createVarchar(20))) + .addColumn(new Column("Null", ScalarType.createVarchar(10))) + .addColumn(new Column("Key", ScalarType.createVarchar(10))) + .addColumn(new Column("Default", ScalarType.createVarchar(30))) + .addColumn(new Column("Extra", ScalarType.createVarchar(30))) .build(); private static final ShowResultSetMetaData DESC_MYSQL_TABLE_ALL_META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Host", ColumnType.createVarchar(30))) - .addColumn(new Column("Port", ColumnType.createVarchar(10))) - .addColumn(new Column("User", ColumnType.createVarchar(30))) - .addColumn(new Column("Password", ColumnType.createVarchar(30))) - .addColumn(new Column("Database", ColumnType.createVarchar(30))) - .addColumn(new Column("Table", ColumnType.createVarchar(30))) + .addColumn(new Column("Host", ScalarType.createVarchar(30))) + .addColumn(new Column("Port", ScalarType.createVarchar(10))) + .addColumn(new Column("User", ScalarType.createVarchar(30))) + .addColumn(new Column("Password", ScalarType.createVarchar(30))) + .addColumn(new Column("Database", ScalarType.createVarchar(30))) + .addColumn(new Column("Table", ScalarType.createVarchar(30))) .build(); // empty col num equals to DESC_OLAP_TABLE_ALL_META_DATA.size() @@ -159,7 +159,7 @@ public void analyze(Analyzer analyzer) throws AnalysisException, UserException { List row = Arrays.asList("", column.getName(), - column.getColumnType().toString(), + column.getOriginType().toString(), column.isAllowNull() ? "Yes" : "No", ((Boolean) column.isKey()).toString(), column.getDefaultValue() == null @@ -225,7 +225,7 @@ public ShowResultSetMetaData getMetaData() { } for (String col : result.getColumnNames()) { - builder.addColumn(new Column(col, ColumnType.createVarchar(30))); + builder.addColumn(new Column(col, ScalarType.createVarchar(30))); } return builder.build(); } else { diff --git a/fe/src/main/java/org/apache/doris/analysis/HelpStmt.java b/fe/src/main/java/org/apache/doris/analysis/HelpStmt.java index d208f016fcf861..c44687ac615ce3 100644 --- a/fe/src/main/java/org/apache/doris/analysis/HelpStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/HelpStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.qe.ShowResultSetMetaData; @@ -27,20 +27,20 @@ public class HelpStmt extends ShowStmt { private static final ShowResultSetMetaData TOPIC_META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("name", ColumnType.createVarchar(64))) - .addColumn(new Column("description", ColumnType.createVarchar(1000))) - .addColumn(new Column("example", ColumnType.createVarchar(1000))) + .addColumn(new Column("name", ScalarType.createVarchar(64))) + .addColumn(new Column("description", ScalarType.createVarchar(1000))) + .addColumn(new Column("example", ScalarType.createVarchar(1000))) .build(); private static final ShowResultSetMetaData CATEGORY_META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("source_category_name", ColumnType.createVarchar(64))) - .addColumn(new Column("name", ColumnType.createVarchar(64))) - .addColumn(new Column("is_it_category", ColumnType.createVarchar(1))) + .addColumn(new Column("source_category_name", ScalarType.createVarchar(64))) + .addColumn(new Column("name", ScalarType.createVarchar(64))) + .addColumn(new Column("is_it_category", ScalarType.createVarchar(1))) .build(); private static final ShowResultSetMetaData KEYWORD_META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("name", ColumnType.createVarchar(64))) - .addColumn(new Column("is_it_category", ColumnType.createVarchar(1))) + .addColumn(new Column("name", ScalarType.createVarchar(64))) + .addColumn(new Column("is_it_category", ScalarType.createVarchar(1))) .build(); private String mask; diff --git a/fe/src/main/java/org/apache/doris/analysis/KeysDesc.java b/fe/src/main/java/org/apache/doris/analysis/KeysDesc.java index 8ba558433b094e..d8a673e5cb9ee3 100644 --- a/fe/src/main/java/org/apache/doris/analysis/KeysDesc.java +++ b/fe/src/main/java/org/apache/doris/analysis/KeysDesc.java @@ -56,7 +56,7 @@ public boolean containsCol(String colName) { return keysColumnNames.contains(colName); } - public void analyze(List cols) throws AnalysisException { + public void analyze(List cols) throws AnalysisException { if (type == null) { throw new AnalysisException("Keys type is null."); } @@ -75,7 +75,7 @@ public void analyze(List cols) throws AnalysisException { throw new AnalysisException("Key columns should be a ordered prefix of the schema."); } - if (cols.get(i).getAggregationType() != null) { + if (cols.get(i).getAggregateType() != null) { throw new AnalysisException("Key column[" + name + "] should not specify aggregate type."); } } @@ -83,12 +83,12 @@ public void analyze(List cols) throws AnalysisException { // for olap table for (int i = keysColumnNames.size(); i < cols.size(); ++i) { if (type == KeysType.AGG_KEYS) { - if (cols.get(i).getAggregationType() == null) { + if (cols.get(i).getAggregateType() == null) { throw new AnalysisException(type.name() + " table should specify aggregate type for " + "non-key column[" + cols.get(i).getName() + "]"); } } else { - if (cols.get(i).getAggregationType() != null) { + if (cols.get(i).getAggregateType() != null) { throw new AnalysisException(type.name() + " table should not specify aggregate type for " + "non-key column[" + cols.get(i).getName() + "]"); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ModifyColumnClause.java b/fe/src/main/java/org/apache/doris/analysis/ModifyColumnClause.java index 4ef295fa5aedd0..9d8196e7ff502b 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ModifyColumnClause.java +++ b/fe/src/main/java/org/apache/doris/analysis/ModifyColumnClause.java @@ -26,16 +26,17 @@ // modify one column public class ModifyColumnClause extends AlterClause { - private Column col; + private ColumnDef columnDef; private ColumnPosition colPos; // which rollup is to be modify, if rollup is null, modify base table. private String rollupName; private Map properties; - public Column getCol() { - return col; - } + // set in analyze + private Column column; + + public Column getColumn() { return column; } public ColumnPosition getColPos() { return colPos; @@ -45,9 +46,9 @@ public String getRollupName() { return rollupName; } - public ModifyColumnClause(Column col, ColumnPosition colPos, String rollup, + public ModifyColumnClause(ColumnDef columnDef, ColumnPosition colPos, String rollup, Map properties) { - this.col = col; + this.columnDef = columnDef; this.colPos = colPos; this.rollupName = rollup; this.properties = properties; @@ -55,16 +56,18 @@ public ModifyColumnClause(Column col, ColumnPosition colPos, String rollup, @Override public void analyze(Analyzer analyzer) throws AnalysisException { - if (col == null) { + if (columnDef == null) { throw new AnalysisException("No column definition in modify column clause."); } - col.analyze(true); + columnDef.analyze(true); if (colPos != null) { colPos.analyze(); } if (Strings.isNullOrEmpty(rollupName)) { rollupName = null; } + + column = columnDef.toColumn(); } @Override @@ -75,7 +78,7 @@ public Map getProperties() { @Override public String toSql() { StringBuilder sb = new StringBuilder(); - sb.append("MODIFY COLUMN ").append(col.toSql()); + sb.append("MODIFY COLUMN ").append(columnDef.toSql()); if (colPos != null) { sb.append(" ").append(colPos); } diff --git a/fe/src/main/java/org/apache/doris/analysis/PartitionDesc.java b/fe/src/main/java/org/apache/doris/analysis/PartitionDesc.java index c0273281b8c361..3dda238854c9c3 100644 --- a/fe/src/main/java/org/apache/doris/analysis/PartitionDesc.java +++ b/fe/src/main/java/org/apache/doris/analysis/PartitionDesc.java @@ -40,7 +40,7 @@ public class PartitionDesc implements Writable { public PartitionDesc() { } - public void analyze(List cols, Map otherProperties) throws AnalysisException { + public void analyze(List columnDefs, Map otherProperties) throws AnalysisException { throw new NotImplementedException(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/RangePartitionDesc.java b/fe/src/main/java/org/apache/doris/analysis/RangePartitionDesc.java index 7c5784b67e679b..551babadcac638 100644 --- a/fe/src/main/java/org/apache/doris/analysis/RangePartitionDesc.java +++ b/fe/src/main/java/org/apache/doris/analysis/RangePartitionDesc.java @@ -67,7 +67,7 @@ public List getPartitionColNames() { } @Override - public void analyze(List cols, Map otherProperties) throws AnalysisException { + public void analyze(List columnDefs, Map otherProperties) throws AnalysisException { if (partitionColNames == null || partitionColNames.isEmpty()) { throw new AnalysisException("No partition columns."); } @@ -79,9 +79,9 @@ public void analyze(List cols, Map otherProperties) thro } boolean found = false; - for (Column col : cols) { - if (col.getName().equals(partitionCol)) { - if (!col.isKey()) { + for (ColumnDef columnDef : columnDefs) { + if (columnDef.getName().equals(partitionCol)) { + if (!columnDef.isKey()) { throw new AnalysisException("Only key column can be partition column"); } found = true; @@ -105,7 +105,7 @@ public void analyze(List cols, Map otherProperties) thro if (otherProperties != null) { givenProperties = Maps.newHashMap(otherProperties); } - desc.analyze(cols.size(), givenProperties); + desc.analyze(columnDefs.size(), givenProperties); } } diff --git a/fe/src/main/java/org/apache/doris/analysis/SelectStmt.java b/fe/src/main/java/org/apache/doris/analysis/SelectStmt.java index eb10ed6150b121..39cb97bf176bc0 100644 --- a/fe/src/main/java/org/apache/doris/analysis/SelectStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/SelectStmt.java @@ -694,7 +694,7 @@ private void expandStar(Analyzer analyzer, TableName tblName) throws AnalysisExc */ private void expandStar(TableName tblName, TupleDescriptor desc) throws AnalysisException { for (Column col : desc.getTable().getBaseSchema()) { - if (col.getColumnType().getType() == PrimitiveType.HLL && !fromInsert) { + if (col.getDataType() == PrimitiveType.HLL && !fromInsert) { throw new AnalysisException ( "hll only use in HLL_UNION_AGG or HLL_CARDINALITY , HLL_HASH and so on."); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowAlterStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowAlterStmt.java index 7199b1878fd774..d6868b3b9ae8a5 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowAlterStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowAlterStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.Database; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; @@ -147,7 +147,7 @@ public ShowResultSetMetaData getMetaData() { } for (String title : titleNames) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowAuthorStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowAuthorStmt.java index d2ba80ea3e7dc2..477efd694d274f 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowAuthorStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowAuthorStmt.java @@ -18,16 +18,16 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; // Used to test show executor. public class ShowAuthorStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Name", ColumnType.createVarchar(30))) - .addColumn(new Column("Location", ColumnType.createVarchar(30))) - .addColumn(new Column("Comment", ColumnType.createVarchar(30))) + .addColumn(new Column("Name", ScalarType.createVarchar(30))) + .addColumn(new Column("Location", ScalarType.createVarchar(30))) + .addColumn(new Column("Comment", ScalarType.createVarchar(30))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowBackendsStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowBackendsStmt.java index 6197336f3e6b6b..fc6365dc6995e2 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowBackendsStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowBackendsStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -50,7 +50,7 @@ public ShowResultSetMetaData getMetaData() { if (title.equals("HostName")) { continue; } - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowBackupStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowBackupStmt.java index 529a63e45e992a..34dce9cd0441af 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowBackupStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowBackupStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -70,7 +70,7 @@ public void analyze(Analyzer analyzer) throws UserException { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String title : TITLE_NAMES) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowBrokerStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowBrokerStmt.java index cdef10a4248a16..610a212a392e15 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowBrokerStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowBrokerStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -31,8 +31,8 @@ public class ShowBrokerStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Broker", ColumnType.createVarchar(20))) - .addColumn(new Column("Instances", ColumnType.createVarchar(200))) + .addColumn(new Column("Broker", ScalarType.createVarchar(20))) + .addColumn(new Column("Instances", ScalarType.createVarchar(200))) .build(); public ShowBrokerStmt() { diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowCharsetStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowCharsetStmt.java index 3533a11b62dc91..07e78fdf9cec8b 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowCharsetStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowCharsetStmt.java @@ -18,16 +18,16 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; public class ShowCharsetStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Charset", ColumnType.createVarchar(20))) - .addColumn(new Column("Description", ColumnType.createVarchar(20))) - .addColumn(new Column("Default collation", ColumnType.createVarchar(20))) - .addColumn(new Column("Maxlen", ColumnType.createVarchar(20))) + .addColumn(new Column("Charset", ScalarType.createVarchar(20))) + .addColumn(new Column("Description", ScalarType.createVarchar(20))) + .addColumn(new Column("Default collation", ScalarType.createVarchar(20))) + .addColumn(new Column("Maxlen", ScalarType.createVarchar(20))) .build(); private String pattern; diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowClusterStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowClusterStmt.java index 2c977cdd58cd04..0339c4f5ac4603 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowClusterStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowClusterStmt.java @@ -20,7 +20,7 @@ import org.apache.doris.analysis.CompoundPredicate.Operator; import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -46,7 +46,7 @@ public ShowResultSetMetaData getMetaData() { titleNames = TITLE_NAMES; for (String title : titleNames) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowCollationStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowCollationStmt.java index 821eac31a9f74f..938517cd587c49 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowCollationStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowCollationStmt.java @@ -18,19 +18,19 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.qe.ShowResultSetMetaData; public class ShowCollationStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Collation", ColumnType.createVarchar(20))) - .addColumn(new Column("Charset", ColumnType.createVarchar(20))) - .addColumn(new Column("Id", ColumnType.createType(PrimitiveType.BIGINT))) - .addColumn(new Column("Default", ColumnType.createVarchar(20))) - .addColumn(new Column("Compiled", ColumnType.createVarchar(20))) - .addColumn(new Column("Sortlen", ColumnType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("Collation", ScalarType.createVarchar(20))) + .addColumn(new Column("Charset", ScalarType.createVarchar(20))) + .addColumn(new Column("Id", ScalarType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("Default", ScalarType.createVarchar(20))) + .addColumn(new Column("Compiled", ScalarType.createVarchar(20))) + .addColumn(new Column("Sortlen", ScalarType.createType(PrimitiveType.BIGINT))) .build(); private String pattern; diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowColumnStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowColumnStmt.java index 4d295ee5af548a..80d90c1d29c0dd 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowColumnStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowColumnStmt.java @@ -18,8 +18,8 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; import org.apache.doris.catalog.InfoSchemaDb; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.qe.ShowResultSetMetaData; @@ -31,25 +31,25 @@ public class ShowColumnStmt extends ShowStmt { private static final TableName TABLE_NAME = new TableName(InfoSchemaDb.DATABASE_NAME, "COLUMNS"); private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Field", ColumnType.createVarchar(20))) - .addColumn(new Column("Type", ColumnType.createVarchar(20))) - .addColumn(new Column("Null", ColumnType.createVarchar(20))) - .addColumn(new Column("Key", ColumnType.createVarchar(20))) - .addColumn(new Column("Default", ColumnType.createVarchar(20))) - .addColumn(new Column("Extra", ColumnType.createVarchar(20))) + .addColumn(new Column("Field", ScalarType.createVarchar(20))) + .addColumn(new Column("Type", ScalarType.createVarchar(20))) + .addColumn(new Column("Null", ScalarType.createVarchar(20))) + .addColumn(new Column("Key", ScalarType.createVarchar(20))) + .addColumn(new Column("Default", ScalarType.createVarchar(20))) + .addColumn(new Column("Extra", ScalarType.createVarchar(20))) .build(); private static final ShowResultSetMetaData META_DATA_VERBOSE = ShowResultSetMetaData.builder() - .addColumn(new Column("Field", ColumnType.createVarchar(20))) - .addColumn(new Column("Type", ColumnType.createVarchar(20))) - .addColumn(new Column("Collation", ColumnType.createVarchar(20))) - .addColumn(new Column("Null", ColumnType.createVarchar(20))) - .addColumn(new Column("Key", ColumnType.createVarchar(20))) - .addColumn(new Column("Default", ColumnType.createVarchar(20))) - .addColumn(new Column("Extra", ColumnType.createVarchar(20))) - .addColumn(new Column("Privileges", ColumnType.createVarchar(20))) - .addColumn(new Column("Comment", ColumnType.createVarchar(20))) + .addColumn(new Column("Field", ScalarType.createVarchar(20))) + .addColumn(new Column("Type", ScalarType.createVarchar(20))) + .addColumn(new Column("Collation", ScalarType.createVarchar(20))) + .addColumn(new Column("Null", ScalarType.createVarchar(20))) + .addColumn(new Column("Key", ScalarType.createVarchar(20))) + .addColumn(new Column("Default", ScalarType.createVarchar(20))) + .addColumn(new Column("Extra", ScalarType.createVarchar(20))) + .addColumn(new Column("Privileges", ScalarType.createVarchar(20))) + .addColumn(new Column("Comment", ScalarType.createVarchar(20))) .build(); private ShowResultSetMetaData metaData; diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowCreateDbStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowCreateDbStmt.java index 2cab4dc5c8c926..99daec405083a9 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowCreateDbStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowCreateDbStmt.java @@ -20,7 +20,7 @@ import org.apache.doris.analysis.CompoundPredicate.Operator; import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; @@ -40,8 +40,8 @@ public class ShowCreateDbStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Database", ColumnType.createVarchar(20))) - .addColumn(new Column("Create Database", ColumnType.createVarchar(30))) + .addColumn(new Column("Database", ScalarType.createVarchar(20))) + .addColumn(new Column("Create Database", ScalarType.createVarchar(30))) .build(); private String db; diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowCreateTableStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowCreateTableStmt.java index 330550de3b80c1..5a8148eefe1afb 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowCreateTableStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowCreateTableStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -31,16 +31,16 @@ public class ShowCreateTableStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Table", ColumnType.createVarchar(20))) - .addColumn(new Column("Create Table", ColumnType.createVarchar(30))) + .addColumn(new Column("Table", ScalarType.createVarchar(20))) + .addColumn(new Column("Create Table", ScalarType.createVarchar(30))) .build(); private static final ShowResultSetMetaData VIEW_META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("View", ColumnType.createVarchar(20))) - .addColumn(new Column("Create View", ColumnType.createVarchar(30))) - .addColumn(new Column("character_set_client", ColumnType.createVarchar(30))) - .addColumn(new Column("collation_connection", ColumnType.createVarchar(30))) + .addColumn(new Column("View", ScalarType.createVarchar(20))) + .addColumn(new Column("Create View", ScalarType.createVarchar(30))) + .addColumn(new Column("character_set_client", ScalarType.createVarchar(30))) + .addColumn(new Column("collation_connection", ScalarType.createVarchar(30))) .build(); private TableName tbl; diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowDataStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowDataStmt.java index 4d2695ff63fe90..16ba1c701e8c4b 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowDataStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowDataStmt.java @@ -19,13 +19,13 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; import org.apache.doris.catalog.Database; import org.apache.doris.catalog.MaterializedIndex; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.Partition; import org.apache.doris.catalog.Replica; import org.apache.doris.catalog.Replica.ReplicaState; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.Table; import org.apache.doris.catalog.Table.TableType; import org.apache.doris.catalog.Tablet; @@ -54,15 +54,15 @@ public class ShowDataStmt extends ShowStmt { private static final ShowResultSetMetaData SHOW_TABLE_DATA_META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("TableName", ColumnType.createVarchar(20))) - .addColumn(new Column("Size", ColumnType.createVarchar(30))) + .addColumn(new Column("TableName", ScalarType.createVarchar(20))) + .addColumn(new Column("Size", ScalarType.createVarchar(30))) .build(); private static final ShowResultSetMetaData SHOW_INDEX_DATA_META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("TableName", ColumnType.createVarchar(20))) - .addColumn(new Column("IndexName", ColumnType.createVarchar(20))) - .addColumn(new Column("Size", ColumnType.createVarchar(30))) + .addColumn(new Column("TableName", ScalarType.createVarchar(20))) + .addColumn(new Column("IndexName", ScalarType.createVarchar(20))) + .addColumn(new Column("Size", ScalarType.createVarchar(30))) .build(); private String dbName; diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowDbStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowDbStmt.java index 6f01f08e0cb163..15ea4f140e60be 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowDbStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowDbStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.InfoSchemaDb; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.UserException; @@ -31,7 +31,7 @@ public class ShowDbStmt extends ShowStmt { private static final String DB_COL = "Database"; private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column(DB_COL, ColumnType.createVarchar(20))) + .addColumn(new Column(DB_COL, ScalarType.createVarchar(20))) .build(); private String pattern; diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowDeleteStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowDeleteStmt.java index 24896432e363b5..679f376f5fdf93 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowDeleteStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowDeleteStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; @@ -59,7 +59,7 @@ public void analyze(Analyzer analyzer) throws AnalysisException, UserException { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String title : DeleteInfoProcDir.TITLE_NAMES_FOR_USER) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowEnginesStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowEnginesStmt.java index 6a0c63a5a4dbff..f6ff28a671c93e 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowEnginesStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowEnginesStmt.java @@ -18,18 +18,18 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; public class ShowEnginesStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Engine", ColumnType.createVarchar(64))) - .addColumn(new Column("Support", ColumnType.createVarchar(8))) - .addColumn(new Column("Comment", ColumnType.createVarchar(80))) - .addColumn(new Column("Transactions", ColumnType.createVarchar(3))) - .addColumn(new Column("XA", ColumnType.createVarchar(3))) - .addColumn(new Column("Savepoints", ColumnType.createVarchar(3))) + .addColumn(new Column("Engine", ScalarType.createVarchar(64))) + .addColumn(new Column("Support", ScalarType.createVarchar(8))) + .addColumn(new Column("Comment", ScalarType.createVarchar(80))) + .addColumn(new Column("Transactions", ScalarType.createVarchar(3))) + .addColumn(new Column("XA", ScalarType.createVarchar(3))) + .addColumn(new Column("Savepoints", ScalarType.createVarchar(3))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowEventsStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowEventsStmt.java index ae76a4cd19df7e..4e47ac79dec5f0 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowEventsStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowEventsStmt.java @@ -18,28 +18,28 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; // Show Events statement public class ShowEventsStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Db", ColumnType.createVarchar(20))) - .addColumn(new Column("Name", ColumnType.createVarchar(30))) - .addColumn(new Column("Definer", ColumnType.createVarchar(20))) - .addColumn(new Column("Time", ColumnType.createVarchar(20))) - .addColumn(new Column("Type", ColumnType.createVarchar(20))) - .addColumn(new Column("Execute at", ColumnType.createVarchar(20))) - .addColumn(new Column("Interval value", ColumnType.createVarchar(30))) - .addColumn(new Column("Interval field", ColumnType.createVarchar(30))) - .addColumn(new Column("Status", ColumnType.createVarchar(30))) - .addColumn(new Column("Ends", ColumnType.createVarchar(30))) - .addColumn(new Column("Status", ColumnType.createVarchar(30))) - .addColumn(new Column("Originator", ColumnType.createVarchar(30))) - .addColumn(new Column("character_set_client", ColumnType.createVarchar(30))) - .addColumn(new Column("collation_connection", ColumnType.createVarchar(30))) - .addColumn(new Column("Database Collation", ColumnType.createVarchar(30))) + .addColumn(new Column("Db", ScalarType.createVarchar(20))) + .addColumn(new Column("Name", ScalarType.createVarchar(30))) + .addColumn(new Column("Definer", ScalarType.createVarchar(20))) + .addColumn(new Column("Time", ScalarType.createVarchar(20))) + .addColumn(new Column("Type", ScalarType.createVarchar(20))) + .addColumn(new Column("Execute at", ScalarType.createVarchar(20))) + .addColumn(new Column("Interval value", ScalarType.createVarchar(30))) + .addColumn(new Column("Interval field", ScalarType.createVarchar(30))) + .addColumn(new Column("Status", ScalarType.createVarchar(30))) + .addColumn(new Column("Ends", ScalarType.createVarchar(30))) + .addColumn(new Column("Status", ScalarType.createVarchar(30))) + .addColumn(new Column("Originator", ScalarType.createVarchar(30))) + .addColumn(new Column("character_set_client", ScalarType.createVarchar(30))) + .addColumn(new Column("collation_connection", ScalarType.createVarchar(30))) + .addColumn(new Column("Database Collation", ScalarType.createVarchar(30))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowExportStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowExportStmt.java index 8b3729b891a75e..ecd9d1e9687e76 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowExportStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowExportStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.analysis.BinaryPredicate.Operator; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; @@ -266,7 +266,7 @@ public String toString() { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String title : ExportProcNode.TITLE_NAMES) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowFrontendsStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowFrontendsStmt.java index c20f5c9e5dae7f..52c84fd5e58f2f 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowFrontendsStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowFrontendsStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -46,7 +46,7 @@ public void analyze(Analyzer analyzer) throws AnalysisException { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String title : FrontendsProcNode.TITLE_NAMES) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowGrantsStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowGrantsStmt.java index 3bdfa51cd69736..fffb28030b0f32 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowGrantsStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowGrantsStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -47,7 +47,7 @@ public class ShowGrantsStmt extends ShowStmt { static { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String col : AuthProcDir.TITLE_NAMES) { - builder.addColumn(new Column(col, ColumnType.createVarchar(100))); + builder.addColumn(new Column(col, ScalarType.createVarchar(100))); } META_DATA = builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowKeysStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowKeysStmt.java index d3354245c51d75..7cef39850354d9 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowKeysStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowKeysStmt.java @@ -18,25 +18,25 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; // SHOW KEYS FROM TABLE public class ShowKeysStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Table", ColumnType.createVarchar(64))) - .addColumn(new Column("Non_unique", ColumnType.createVarchar(10))) - .addColumn(new Column("Key_name", ColumnType.createVarchar(80))) - .addColumn(new Column("Seq_in_index", ColumnType.createVarchar(64))) - .addColumn(new Column("Column_name", ColumnType.createVarchar(80))) - .addColumn(new Column("Collation", ColumnType.createVarchar(80))) - .addColumn(new Column("Cardinality", ColumnType.createVarchar(80))) - .addColumn(new Column("Sub_part", ColumnType.createVarchar(80))) - .addColumn(new Column("Packed", ColumnType.createVarchar(80))) - .addColumn(new Column("Null", ColumnType.createVarchar(80))) - .addColumn(new Column("Index_type", ColumnType.createVarchar(80))) - .addColumn(new Column("Comment", ColumnType.createVarchar(80))) + .addColumn(new Column("Table", ScalarType.createVarchar(64))) + .addColumn(new Column("Non_unique", ScalarType.createVarchar(10))) + .addColumn(new Column("Key_name", ScalarType.createVarchar(80))) + .addColumn(new Column("Seq_in_index", ScalarType.createVarchar(64))) + .addColumn(new Column("Column_name", ScalarType.createVarchar(80))) + .addColumn(new Column("Collation", ScalarType.createVarchar(80))) + .addColumn(new Column("Cardinality", ScalarType.createVarchar(80))) + .addColumn(new Column("Sub_part", ScalarType.createVarchar(80))) + .addColumn(new Column("Packed", ScalarType.createVarchar(80))) + .addColumn(new Column("Null", ScalarType.createVarchar(80))) + .addColumn(new Column("Index_type", ScalarType.createVarchar(80))) + .addColumn(new Column("Comment", ScalarType.createVarchar(80))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowLoadStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowLoadStmt.java index 1c1328485b34c3..4ba64d25876947 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowLoadStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowLoadStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.analysis.BinaryPredicate.Operator; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; @@ -271,7 +271,7 @@ public String toString() { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String title : LoadProcDir.TITLE_NAMES) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowLoadWarningsStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowLoadWarningsStmt.java index cbcfaa7e7992fa..b1f3e99beaf2cb 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowLoadWarningsStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowLoadWarningsStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; @@ -37,9 +37,9 @@ public class ShowLoadWarningsStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("JobId", ColumnType.createVarchar(15))) - .addColumn(new Column("Label", ColumnType.createVarchar(15))) - .addColumn(new Column("ErrorMsgDetail", ColumnType.createVarchar(100))) + .addColumn(new Column("JobId", ScalarType.createVarchar(15))) + .addColumn(new Column("Label", ScalarType.createVarchar(15))) + .addColumn(new Column("ErrorMsgDetail", ScalarType.createVarchar(100))) .build(); private String dbName; diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowMigrationsStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowMigrationsStmt.java index bd2db0cfac03b4..03b10c78e5bfcc 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowMigrationsStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowMigrationsStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -45,7 +45,7 @@ public ShowResultSetMetaData getMetaData() { titleNames = TITLE_NAMES; for (String title : titleNames) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowOpenTableStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowOpenTableStmt.java index 95f84dbd79c8a5..7c7dd8a9253a7f 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowOpenTableStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowOpenTableStmt.java @@ -18,17 +18,17 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; // SHOW OPEN TABLES public class ShowOpenTableStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Database", ColumnType.createVarchar(64))) - .addColumn(new Column("Table", ColumnType.createVarchar(10))) - .addColumn(new Column("In_use", ColumnType.createVarchar(80))) - .addColumn(new Column("Name_locked", ColumnType.createVarchar(64))) + .addColumn(new Column("Database", ScalarType.createVarchar(64))) + .addColumn(new Column("Table", ScalarType.createVarchar(10))) + .addColumn(new Column("In_use", ScalarType.createVarchar(80))) + .addColumn(new Column("Name_locked", ScalarType.createVarchar(64))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowPartitionsStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowPartitionsStmt.java index d21fe6a673eedc..8184fa4a94838c 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowPartitionsStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowPartitionsStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.Database; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.Table; @@ -134,7 +134,7 @@ public ShowResultSetMetaData getMetaData() { } for (String col : result.getColumnNames()) { - builder.addColumn(new Column(col, ColumnType.createVarchar(30))); + builder.addColumn(new Column(col, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowPluginsStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowPluginsStmt.java index a72e08ab63b8f5..de7e1ee3988d48 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowPluginsStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowPluginsStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; // Show plugins statement. @@ -26,11 +26,11 @@ public class ShowPluginsStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Name", ColumnType.createVarchar(64))) - .addColumn(new Column("Status", ColumnType.createVarchar(10))) - .addColumn(new Column("Type", ColumnType.createVarchar(80))) - .addColumn(new Column("Library", ColumnType.createVarchar(64))) - .addColumn(new Column("License", ColumnType.createVarchar(80))) + .addColumn(new Column("Name", ScalarType.createVarchar(64))) + .addColumn(new Column("Status", ScalarType.createVarchar(10))) + .addColumn(new Column("Type", ScalarType.createVarchar(80))) + .addColumn(new Column("Library", ScalarType.createVarchar(64))) + .addColumn(new Column("License", ScalarType.createVarchar(80))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowProcStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowProcStmt.java index a3ccd93812c77f..10a5657d379f49 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowProcStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowProcStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -75,7 +75,7 @@ public ShowResultSetMetaData getMetaData() { } for (String col : result.getColumnNames()) { - builder.addColumn(new Column(col, ColumnType.createVarchar(30))); + builder.addColumn(new Column(col, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowProcedureStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowProcedureStmt.java index 455f15a1629925..db7684591fd752 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowProcedureStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowProcedureStmt.java @@ -18,24 +18,24 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; // SHOW PROCEDURE STATUS public class ShowProcedureStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Db", ColumnType.createVarchar(64))) - .addColumn(new Column("Name", ColumnType.createVarchar(10))) - .addColumn(new Column("Type", ColumnType.createVarchar(80))) - .addColumn(new Column("Definer", ColumnType.createVarchar(64))) - .addColumn(new Column("Modified", ColumnType.createVarchar(80))) - .addColumn(new Column("Created", ColumnType.createVarchar(80))) - .addColumn(new Column("Security_type", ColumnType.createVarchar(80))) - .addColumn(new Column("Comment", ColumnType.createVarchar(80))) - .addColumn(new Column("character_set_client", ColumnType.createVarchar(80))) - .addColumn(new Column("collation_connection", ColumnType.createVarchar(80))) - .addColumn(new Column("Database Collation", ColumnType.createVarchar(80))) + .addColumn(new Column("Db", ScalarType.createVarchar(64))) + .addColumn(new Column("Name", ScalarType.createVarchar(10))) + .addColumn(new Column("Type", ScalarType.createVarchar(80))) + .addColumn(new Column("Definer", ScalarType.createVarchar(64))) + .addColumn(new Column("Modified", ScalarType.createVarchar(80))) + .addColumn(new Column("Created", ScalarType.createVarchar(80))) + .addColumn(new Column("Security_type", ScalarType.createVarchar(80))) + .addColumn(new Column("Comment", ScalarType.createVarchar(80))) + .addColumn(new Column("character_set_client", ScalarType.createVarchar(80))) + .addColumn(new Column("collation_connection", ScalarType.createVarchar(80))) + .addColumn(new Column("Database Collation", ScalarType.createVarchar(80))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowProcesslistStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowProcesslistStmt.java index 5ef0e5ccaa374e..4b592f7d123f1d 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowProcesslistStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowProcesslistStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.qe.ShowResultSetMetaData; @@ -27,15 +27,15 @@ public class ShowProcesslistStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Id", ColumnType.createType(PrimitiveType.BIGINT))) - .addColumn(new Column("User", ColumnType.createVarchar(16))) - .addColumn(new Column("Host", ColumnType.createVarchar(16))) - .addColumn(new Column("Cluster", ColumnType.createVarchar(16))) - .addColumn(new Column("Db", ColumnType.createVarchar(16))) - .addColumn(new Column("Command", ColumnType.createVarchar(16))) - .addColumn(new Column("Time", ColumnType.createType(PrimitiveType.INT))) - .addColumn(new Column("State", ColumnType.createVarchar(64))) - .addColumn(new Column("Info", ColumnType.createVarchar(16))) + .addColumn(new Column("Id", ScalarType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("User", ScalarType.createVarchar(16))) + .addColumn(new Column("Host", ScalarType.createVarchar(16))) + .addColumn(new Column("Cluster", ScalarType.createVarchar(16))) + .addColumn(new Column("Db", ScalarType.createVarchar(16))) + .addColumn(new Column("Command", ScalarType.createVarchar(16))) + .addColumn(new Column("Time", ScalarType.createType(PrimitiveType.INT))) + .addColumn(new Column("State", ScalarType.createVarchar(64))) + .addColumn(new Column("Info", ScalarType.createVarchar(16))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowRepositoriesStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowRepositoriesStmt.java index 86e45c2b333f96..95bff25821963a 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowRepositoriesStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowRepositoriesStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; import com.google.common.collect.ImmutableList; @@ -37,7 +37,7 @@ public ShowRepositoriesStmt() { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String title : TITLE_NAMES) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowRestoreStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowRestoreStmt.java index 161d38a9c91b1b..fb8881aa795e1b 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowRestoreStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowRestoreStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -79,7 +79,7 @@ public void analyze(Analyzer analyzer) throws UserException { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String title : TITLE_NAMES) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowRolesStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowRolesStmt.java index 1648192dcbf521..fd586592fb765d 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowRolesStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowRolesStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -32,11 +32,11 @@ public class ShowRolesStmt extends ShowStmt { static { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); - builder.addColumn(new Column("Name", ColumnType.createVarchar(100))); - builder.addColumn(new Column("Users", ColumnType.createVarchar(100))); - builder.addColumn(new Column("GlobalPrivs", ColumnType.createVarchar(300))); - builder.addColumn(new Column("DatabasePrivs", ColumnType.createVarchar(300))); - builder.addColumn(new Column("TablePrivs", ColumnType.createVarchar(300))); + builder.addColumn(new Column("Name", ScalarType.createVarchar(100))); + builder.addColumn(new Column("Users", ScalarType.createVarchar(100))); + builder.addColumn(new Column("GlobalPrivs", ScalarType.createVarchar(300))); + builder.addColumn(new Column("DatabasePrivs", ScalarType.createVarchar(300))); + builder.addColumn(new Column("TablePrivs", ScalarType.createVarchar(300))); META_DATA = builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowRollupStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowRollupStmt.java index 23b4fbc4252241..77dcac40f8e8e9 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowRollupStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowRollupStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; @@ -33,9 +33,9 @@ public class ShowRollupStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Table", ColumnType.createVarchar(20))) - .addColumn(new Column("RollupHandler", ColumnType.createVarchar(30))) - .addColumn(new Column("Columns", ColumnType.createVarchar(50))) + .addColumn(new Column("Table", ScalarType.createVarchar(20))) + .addColumn(new Column("RollupHandler", ScalarType.createVarchar(30))) + .addColumn(new Column("Columns", ScalarType.createVarchar(50))) .build(); private TableName tbl; private String db; diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowSnapshotStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowSnapshotStmt.java index 13b0f890fd691e..037c7e527a743a 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowSnapshotStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowSnapshotStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.analysis.CompoundPredicate.Operator; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.UserException; import org.apache.doris.qe.ShowResultSetMetaData; @@ -139,11 +139,11 @@ public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); if (!Strings.isNullOrEmpty(snapshotName) && !Strings.isNullOrEmpty(timestamp)) { for (String title : SNAPSHOT_DETAIL) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } } else { for (String title : SNAPSHOT_ALL) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } } return builder.build(); diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowStatusStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowStatusStmt.java index 787836fbe08438..a6276a88d4ee30 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowStatusStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowStatusStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; // Show Status statement @@ -26,8 +26,8 @@ public class ShowStatusStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Variable_name", ColumnType.createVarchar(20))) - .addColumn(new Column("Value", ColumnType.createVarchar(20))) + .addColumn(new Column("Variable_name", ScalarType.createVarchar(20))) + .addColumn(new Column("Value", ScalarType.createVarchar(20))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowTableStatusStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowTableStatusStmt.java index abff3d12b580dc..4dff43c881a0c0 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowTableStatusStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowTableStatusStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.InfoSchemaDb; import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.cluster.ClusterNamespace; @@ -38,24 +38,24 @@ public class ShowTableStatusStmt extends ShowStmt { private static final TableName TABLE_NAME = new TableName(InfoSchemaDb.DATABASE_NAME, "tables"); private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Name", ColumnType.createVarchar(64))) - .addColumn(new Column("Engine", ColumnType.createVarchar(10))) - .addColumn(new Column("Version", ColumnType.createType(PrimitiveType.BIGINT))) - .addColumn(new Column("Row_format", ColumnType.createVarchar(64))) - .addColumn(new Column("Rows", ColumnType.createType(PrimitiveType.BIGINT))) - .addColumn(new Column("Avg_row_length", ColumnType.createType(PrimitiveType.BIGINT))) - .addColumn(new Column("Data_length", ColumnType.createType(PrimitiveType.BIGINT))) - .addColumn(new Column("Max_data_length", ColumnType.createType(PrimitiveType.BIGINT))) - .addColumn(new Column("Index_length", ColumnType.createType(PrimitiveType.BIGINT))) - .addColumn(new Column("Data_free", ColumnType.createType(PrimitiveType.BIGINT))) - .addColumn(new Column("Auto_increment", ColumnType.createType(PrimitiveType.BIGINT))) - .addColumn(new Column("Create_time", ColumnType.createType(PrimitiveType.DATETIME))) - .addColumn(new Column("Update_time", ColumnType.createType(PrimitiveType.DATETIME))) - .addColumn(new Column("Check_time", ColumnType.createType(PrimitiveType.DATETIME))) - .addColumn(new Column("Collation", ColumnType.createVarchar(64))) - .addColumn(new Column("Checksum", ColumnType.createType(PrimitiveType.BIGINT))) - .addColumn(new Column("Create_options", ColumnType.createVarchar(64))) - .addColumn(new Column("Comment", ColumnType.createVarchar(64))) + .addColumn(new Column("Name", ScalarType.createVarchar(64))) + .addColumn(new Column("Engine", ScalarType.createVarchar(10))) + .addColumn(new Column("Version", ScalarType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("Row_format", ScalarType.createVarchar(64))) + .addColumn(new Column("Rows", ScalarType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("Avg_row_length", ScalarType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("Data_length", ScalarType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("Max_data_length", ScalarType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("Index_length", ScalarType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("Data_free", ScalarType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("Auto_increment", ScalarType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("Create_time", ScalarType.createType(PrimitiveType.DATETIME))) + .addColumn(new Column("Update_time", ScalarType.createType(PrimitiveType.DATETIME))) + .addColumn(new Column("Check_time", ScalarType.createType(PrimitiveType.DATETIME))) + .addColumn(new Column("Collation", ScalarType.createVarchar(64))) + .addColumn(new Column("Checksum", ScalarType.createType(PrimitiveType.BIGINT))) + .addColumn(new Column("Create_options", ScalarType.createVarchar(64))) + .addColumn(new Column("Comment", ScalarType.createVarchar(64))) .build(); private String db; diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowTableStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowTableStmt.java index ae767cf6d3a10e..f81dc9d0d619b9 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowTableStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowTableStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.InfoSchemaDb; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; @@ -143,9 +143,9 @@ public String toString() { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); builder.addColumn( - new Column(NAME_COL_PREFIX + ClusterNamespace.getNameFromFullName(db), ColumnType.createVarchar(20))); + new Column(NAME_COL_PREFIX + ClusterNamespace.getNameFromFullName(db), ScalarType.createVarchar(20))); if (isVerbose) { - builder.addColumn(new Column(TYPE_COL, ColumnType.createVarchar(20))); + builder.addColumn(new Column(TYPE_COL, ScalarType.createVarchar(20))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowTabletStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowTabletStmt.java index 049760b2fcb648..74f57861107ae5 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowTabletStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowTabletStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.ErrorCode; @@ -103,19 +103,19 @@ public String toSql() { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); if (isShowSingleTablet) { - builder.addColumn(new Column("DbName", ColumnType.createVarchar(30))); - builder.addColumn(new Column("TableName", ColumnType.createVarchar(30))); - builder.addColumn(new Column("PartitionName", ColumnType.createVarchar(30))); - builder.addColumn(new Column("IndexName", ColumnType.createVarchar(30))); - builder.addColumn(new Column("DbId", ColumnType.createVarchar(30))); - builder.addColumn(new Column("TableId", ColumnType.createVarchar(30))); - builder.addColumn(new Column("PartitionId", ColumnType.createVarchar(30))); - builder.addColumn(new Column("IndexId", ColumnType.createVarchar(30))); - builder.addColumn(new Column("IsSync", ColumnType.createVarchar(30))); - builder.addColumn(new Column("DetailCmd", ColumnType.createVarchar(30))); + builder.addColumn(new Column("DbName", ScalarType.createVarchar(30))); + builder.addColumn(new Column("TableName", ScalarType.createVarchar(30))); + builder.addColumn(new Column("PartitionName", ScalarType.createVarchar(30))); + builder.addColumn(new Column("IndexName", ScalarType.createVarchar(30))); + builder.addColumn(new Column("DbId", ScalarType.createVarchar(30))); + builder.addColumn(new Column("TableId", ScalarType.createVarchar(30))); + builder.addColumn(new Column("PartitionId", ScalarType.createVarchar(30))); + builder.addColumn(new Column("IndexId", ScalarType.createVarchar(30))); + builder.addColumn(new Column("IsSync", ScalarType.createVarchar(30))); + builder.addColumn(new Column("DetailCmd", ScalarType.createVarchar(30))); } else { for (String title : TabletsProcDir.TITLE_NAMES) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } } return builder.build(); diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowTriggersStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowTriggersStmt.java index fefddf7b2d2809..e903d2387ee075 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowTriggersStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowTriggersStmt.java @@ -18,23 +18,23 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; public class ShowTriggersStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Trigger", ColumnType.createVarchar(64))) - .addColumn(new Column("Event", ColumnType.createVarchar(10))) - .addColumn(new Column("Table", ColumnType.createVarchar(80))) - .addColumn(new Column("Statement", ColumnType.createVarchar(64))) - .addColumn(new Column("Timing", ColumnType.createVarchar(80))) - .addColumn(new Column("Created", ColumnType.createVarchar(80))) - .addColumn(new Column("sql_mode", ColumnType.createVarchar(80))) - .addColumn(new Column("Definer", ColumnType.createVarchar(80))) - .addColumn(new Column("character_set_client", ColumnType.createVarchar(80))) - .addColumn(new Column("collation_connection", ColumnType.createVarchar(80))) - .addColumn(new Column("Database Collation", ColumnType.createVarchar(80))) + .addColumn(new Column("Trigger", ScalarType.createVarchar(64))) + .addColumn(new Column("Event", ScalarType.createVarchar(10))) + .addColumn(new Column("Table", ScalarType.createVarchar(80))) + .addColumn(new Column("Statement", ScalarType.createVarchar(64))) + .addColumn(new Column("Timing", ScalarType.createVarchar(80))) + .addColumn(new Column("Created", ScalarType.createVarchar(80))) + .addColumn(new Column("sql_mode", ScalarType.createVarchar(80))) + .addColumn(new Column("Definer", ScalarType.createVarchar(80))) + .addColumn(new Column("character_set_client", ScalarType.createVarchar(80))) + .addColumn(new Column("collation_connection", ScalarType.createVarchar(80))) + .addColumn(new Column("Database Collation", ScalarType.createVarchar(80))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowUserPropertyStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowUserPropertyStmt.java index 92a5d34123d3c2..c96eef6c8e9ea1 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowUserPropertyStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowUserPropertyStmt.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.CaseSensibility; @@ -95,7 +95,7 @@ public List> getRows() throws AnalysisException { public ShowResultSetMetaData getMetaData() { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String col : UserPropertyProcNode.TITLE_NAMES) { - builder.addColumn(new Column(col, ColumnType.createVarchar(30))); + builder.addColumn(new Column(col, ScalarType.createVarchar(30))); } return builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowUserStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowUserStmt.java index 776742edfb3087..eb29eb7a9f9a31 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowUserStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowUserStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.proc.AuthProcDir; import org.apache.doris.qe.ShowResultSetMetaData; @@ -29,7 +29,7 @@ public class ShowUserStmt extends ShowStmt { static { ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder(); for (String title : AuthProcDir.TITLE_NAMES) { - builder.addColumn(new Column(title, ColumnType.createVarchar(30))); + builder.addColumn(new Column(title, ScalarType.createVarchar(30))); } META_DATA = builder.build(); } diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowVariablesStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowVariablesStmt.java index afcf4acab7b9b7..b78a884a43f4fe 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowVariablesStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowVariablesStmt.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.InfoSchemaDb; import org.apache.doris.qe.ShowResultSetMetaData; @@ -34,8 +34,8 @@ public class ShowVariablesStmt extends ShowStmt { private static final String VALUE_COL = "Value"; private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column(NAME_COL, ColumnType.createVarchar(20))) - .addColumn(new Column(VALUE_COL, ColumnType.createVarchar(20))) + .addColumn(new Column(NAME_COL, ScalarType.createVarchar(20))) + .addColumn(new Column(VALUE_COL, ScalarType.createVarchar(20))) .build(); private SetType type; diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowWarningStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowWarningStmt.java index 95be7a21c5fa42..7de4525ac2d007 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowWarningStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowWarningStmt.java @@ -18,16 +18,16 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; // Show Warning stmt public class ShowWarningStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("Level", ColumnType.createVarchar(20))) - .addColumn(new Column("Code", ColumnType.createVarchar(20))) - .addColumn(new Column("Message", ColumnType.createVarchar(20))) + .addColumn(new Column("Level", ScalarType.createVarchar(20))) + .addColumn(new Column("Code", ScalarType.createVarchar(20))) + .addColumn(new Column("Message", ScalarType.createVarchar(20))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/ShowWhiteListStmt.java b/fe/src/main/java/org/apache/doris/analysis/ShowWhiteListStmt.java index 3972715a0e61d2..43609d235cf8a8 100644 --- a/fe/src/main/java/org/apache/doris/analysis/ShowWhiteListStmt.java +++ b/fe/src/main/java/org/apache/doris/analysis/ShowWhiteListStmt.java @@ -18,14 +18,14 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.qe.ShowResultSetMetaData; public class ShowWhiteListStmt extends ShowStmt { private static final ShowResultSetMetaData META_DATA = ShowResultSetMetaData.builder() - .addColumn(new Column("user_name", ColumnType.createVarchar(20))) - .addColumn(new Column("white_list", ColumnType.createVarchar(1000))) + .addColumn(new Column("user_name", ScalarType.createVarchar(20))) + .addColumn(new Column("white_list", ScalarType.createVarchar(1000))) .build(); @Override diff --git a/fe/src/main/java/org/apache/doris/analysis/TypeDef.java b/fe/src/main/java/org/apache/doris/analysis/TypeDef.java index f6a513050d9b49..13c486d39da870 100644 --- a/fe/src/main/java/org/apache/doris/analysis/TypeDef.java +++ b/fe/src/main/java/org/apache/doris/analysis/TypeDef.java @@ -35,6 +35,18 @@ public TypeDef(Type parsedType) { this.parsedType = parsedType; } + public static TypeDef create(PrimitiveType type) { + return new TypeDef(ScalarType.createType(type)); + } + public static TypeDef createDecimal(int precision, int scale) { + return new TypeDef(ScalarType.createDecimalType(precision, scale)); + } + public static TypeDef createVarchar(int len) { + return new TypeDef(ScalarType.createVarchar(len)); + } + public static TypeDef createChar(int len) { + return new TypeDef(ScalarType.createChar(len)); + } @Override public void analyze(Analyzer analyzer) throws AnalysisException { if (isAnalyzed) { @@ -80,7 +92,7 @@ private void analyzeScalarType(ScalarType scalarType) } int len = scalarType.getLength(); // len is decided by child, when it is -1. - if (len < -1) { + if (len <= 0) { throw new AnalysisException(name + " size must be > 0: " + len); } if (scalarType.getLength() > maxLen) { @@ -92,18 +104,25 @@ private void analyzeScalarType(ScalarType scalarType) case DECIMAL: { int precision = scalarType.decimalPrecision(); int scale = scalarType.decimalScale(); - if (precision > ScalarType.MAX_PRECISION) { - throw new AnalysisException("Decimal precision must be <= " + - ScalarType.MAX_PRECISION + ": " + precision); + // precision: [1, 27] + if (precision < 1 || precision > 27) { + throw new AnalysisException("Precision of decimal must between 1 and 27." + + " Precision was set to: " + precision + "."); } - if (precision == 0) { - throw new AnalysisException("Decimal precision must be > 0: " + precision); + // scale: [0, 9] + if (scale < 0 || scale > 9) { + throw new AnalysisException("Scale of decimal must between 0 and 9." + + " Scale was set to: " + scale + "."); } - if (scale > precision) { - throw new AnalysisException("Decimal scale (" + scale + ") must be <= " + - "precision (" + precision + ")"); + // scale < precision + if (scale >= precision) { + throw new AnalysisException("Scale of decimal must be smaller than precision." + + " Scale is " + scale + " and precision is " + precision); } + break; } + case INVALID_TYPE: + throw new AnalysisException("Invalid type."); default: break; } } diff --git a/fe/src/main/java/org/apache/doris/backup/BackupJob_D.java b/fe/src/main/java/org/apache/doris/backup/BackupJob_D.java index c642efb25215bd..24308d127e4be1 100644 --- a/fe/src/main/java/org/apache/doris/backup/BackupJob_D.java +++ b/fe/src/main/java/org/apache/doris/backup/BackupJob_D.java @@ -408,7 +408,8 @@ private void getTableMeta(String dbName, Table table, Map readables) th } public static CreateTableStmt readCreateTableStmt(String filePath) throws IOException { - List stmts = null; - try { - stmts = read(filePath, CreateTableStmt.class); - } catch (IOException e) { - LOG.warn("failed to read CreateTableStmt: " + filePath, e); - throw e; - } - Preconditions.checkState(stmts.size() == 1); - return stmts.get(0); + throw new RuntimeException("Don't support CreateTableStmt serialization anymore."); } public static List readAlterTableStmt(String filePath) throws IOException { diff --git a/fe/src/main/java/org/apache/doris/backup/RestoreJob_D.java b/fe/src/main/java/org/apache/doris/backup/RestoreJob_D.java index aa19481f7d56b3..17a309026f2a96 100644 --- a/fe/src/main/java/org/apache/doris/backup/RestoreJob_D.java +++ b/fe/src/main/java/org/apache/doris/backup/RestoreJob_D.java @@ -699,8 +699,7 @@ public void write(DataOutput out) throws IOException { int size = tableToCreateTableStmt.size(); out.writeInt(size); for (Map.Entry entry : tableToCreateTableStmt.entrySet()) { - Text.writeString(out, entry.getKey()); - entry.getValue().write(out); + throw new RuntimeException("Don't support CreateTableStmt serialization anymore"); } } diff --git a/fe/src/main/java/org/apache/doris/catalog/Column.java b/fe/src/main/java/org/apache/doris/catalog/Column.java index 4a6637031b2881..e63aec3025b3fd 100644 --- a/fe/src/main/java/org/apache/doris/catalog/Column.java +++ b/fe/src/main/java/org/apache/doris/catalog/Column.java @@ -17,32 +17,20 @@ package org.apache.doris.catalog; -import org.apache.doris.analysis.DateLiteral; -import org.apache.doris.analysis.DecimalLiteral; -import org.apache.doris.analysis.FloatLiteral; -import org.apache.doris.analysis.IntLiteral; -import org.apache.doris.analysis.LargeIntLiteral; -import org.apache.doris.common.AnalysisException; +import com.google.common.base.Strings; import org.apache.doris.common.DdlException; import org.apache.doris.common.FeMetaVersion; -import org.apache.doris.common.FeNameFormat; import org.apache.doris.common.io.Text; import org.apache.doris.common.io.Writable; import org.apache.doris.thrift.TColumn; import org.apache.doris.thrift.TColumnType; - -import com.google.common.base.Preconditions; -import com.google.common.base.Strings; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; - - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - /** * This class represents the column-related metadata. */ @@ -50,7 +38,7 @@ public class Column implements Writable { private static final Logger LOG = LogManager.getLogger(Column.class); private static final String HLL_EMPTY_SET = "0"; private String name; - private ColumnType columnType; + private Type type; private AggregateType aggregationType; private boolean isAggregationTypeImplicit; private boolean isKey; @@ -62,40 +50,39 @@ public class Column implements Writable { public Column() { this.name = ""; - this.columnType = new ColumnType(); + this.type = Type.NULL; this.isAggregationTypeImplicit = false; this.isKey = false; this.stats = new ColumnStats(); } public Column(String name, PrimitiveType dataType) { - this(name, new ColumnType(dataType, -1, -1, -1), false, null, false, null, ""); + this(name, ScalarType.createType(dataType), false, null, false, null, ""); } public Column(String name, PrimitiveType dataType, boolean isAllowNull) { - this(name, new ColumnType(dataType, -1, -1, -1), - false, null, isAllowNull, null, ""); + this(name, ScalarType.createType(dataType), false, null, isAllowNull, null, ""); } - public Column(String name, ColumnType columnType) { - this(name, columnType, false, null, false, null, ""); + public Column(String name, Type type) { + this(name, type, false, null, false, null, ""); } - public Column(String name, ColumnType columnType, boolean isKey, AggregateType aggregateType, String defaultValue, + public Column(String name, Type type, boolean isKey, AggregateType aggregateType, String defaultValue, String comment) { - this(name, columnType, isKey, aggregateType, false, defaultValue, comment); + this(name, type, isKey, aggregateType, false, defaultValue, comment); } - public Column(String name, ColumnType columnType, boolean isKey, AggregateType aggregateType, boolean isAllowNull, + public Column(String name, Type type, boolean isKey, AggregateType aggregateType, boolean isAllowNull, String defaultValue, String comment) { this.name = name; if (this.name == null) { this.name = ""; } - this.columnType = columnType; - if (this.columnType == null) { - this.columnType = new ColumnType(); + this.type = type; + if (this.type == null) { + this.type = Type.NULL; } this.aggregationType = aggregateType; @@ -110,7 +97,7 @@ public Column(String name, ColumnType columnType, boolean isKey, AggregateType a public Column(Column column) { this.name = column.getName(); - this.columnType = column.getColumnType(); + this.type = column.type; this.aggregationType = column.getAggregationType(); this.isAggregationTypeImplicit = column.isAggregationTypeImplicit(); this.isKey = column.isKey(); @@ -124,11 +111,6 @@ public void setName(String newName) { this.name = newName; } - public void setVarcharLimit(boolean value) { - if (this.columnType.getType() == PrimitiveType.VARCHAR) { - this.columnType.setVarcharLimit(value); - } - } public String getName() { return this.name; } @@ -141,33 +123,15 @@ public boolean isKey() { return this.isKey; } - public ColumnType getColumnType() { - return this.columnType; - } - - public PrimitiveType getDataType() { - return this.columnType.getType(); - } - - public Type getType() { - return ScalarType.createType(columnType.getType()); - } + public PrimitiveType getDataType() { return type.getPrimitiveType(); } - public Type getOriginType() { - return columnType.getTypeDesc(); - } + public Type getType() { return ScalarType.createType(type.getPrimitiveType()); } - public int getStrLen() { - return this.columnType.getLen(); - } - - public int getPrecision() { - return this.columnType.getPrecision(); - } + public Type getOriginType() { return type; } - public int getScale() { - return this.columnType.getScale(); - } + public int getStrLen() { return ((ScalarType) type).getLength(); } + public int getPrecision() { return ((ScalarType) type).getScalarPrecision(); } + public int getScale() { return ((ScalarType) type).getScalarScale(); } public AggregateType getAggregationType() { return this.aggregationType; @@ -206,90 +170,10 @@ public String getComment() { return comment; } - public void analyze(boolean isOlap) throws AnalysisException { - if (name == null || columnType == null) { - throw new AnalysisException("No column name or column type in column definition."); - } - - FeNameFormat.checkColumnName(name); - - columnType.analyze(); - - if (aggregationType != null) { - // check if aggregate type is valid - if (!aggregationType.checkCompatibility(columnType.getType())) { - throw new AnalysisException(String.format("Aggregate type %s is not compatible with primitive type %s", - toString(), columnType.toSql())); - } - } - - if (columnType.getType() == PrimitiveType.FLOAT || columnType.getType() == PrimitiveType.DOUBLE) { - if (isOlap && isKey) { - throw new AnalysisException("Float or double can not used as a key, use decimal instead."); - } - } - - if (columnType.getType() == PrimitiveType.HLL) { - if (defaultValue != null) { - throw new AnalysisException("Hll can not set default value"); - } - defaultValue = HLL_EMPTY_SET; - } - - if (defaultValue != null) { - validateDefaultValue(columnType, defaultValue); - } - } - - public static void validateDefaultValue(ColumnType columnType, String defaultValue) throws AnalysisException { - Preconditions.checkNotNull(defaultValue); - - // check if default value is valid. - // if not, some literal constructor will throw AnalysisException - PrimitiveType type = columnType.getType(); - switch (type) { - case TINYINT: - case SMALLINT: - case INT: - case BIGINT: - IntLiteral intLiteral = new IntLiteral(defaultValue, Type.fromPrimitiveType(type)); - break; - case LARGEINT: - LargeIntLiteral largeIntLiteral = new LargeIntLiteral(defaultValue); - largeIntLiteral.analyze(null); - break; - case FLOAT: - FloatLiteral floatLiteral = new FloatLiteral(defaultValue); - if (floatLiteral.getType() == Type.DOUBLE) { - throw new AnalysisException("Default value will loose precision: " + defaultValue); - } - case DOUBLE: - FloatLiteral doubleLiteral = new FloatLiteral(defaultValue); - break; - case DECIMAL: - DecimalLiteral decimalLiteral = new DecimalLiteral(defaultValue); - decimalLiteral.checkPrecisionAndScale(columnType.getPrecision(), columnType.getScale()); - break; - case DATE: - case DATETIME: - DateLiteral dateLiteral = new DateLiteral(defaultValue, Type.fromPrimitiveType(type)); - break; - case CHAR: - case VARCHAR: - case HLL: - if (defaultValue.length() > columnType.getLen()) { - throw new AnalysisException("Default value is too long: " + defaultValue); - } - break; - default: - throw new AnalysisException("Unsupported type: " + columnType); - } - } - public int getOlapColumnIndexSize() { PrimitiveType type = this.getDataType(); if (type == PrimitiveType.CHAR) { - return columnType.getLen(); + return getStrLen(); } else { return type.getOlapColumnIndexSize(); } @@ -322,7 +206,7 @@ public void checkSchemaChangeAllowed(Column other) throws DdlException { throw new DdlException("Dest column name is empty"); } - if (!this.columnType.isSchemaChangeAllowed(other.columnType)) { + if (!ColumnType.isSchemaChangeAllowed(type, other.type)) { throw new DdlException("Cannot change " + getDataType() + " to " + other.getDataType()); } @@ -364,7 +248,7 @@ public void checkSchemaChangeAllowed(Column other) throws DdlException { public String toSql() { StringBuilder sb = new StringBuilder(); sb.append("`").append(name).append("` "); - sb.append(columnType.toSql()).append(" "); + sb.append(type.toSql()).append(" "); if (aggregationType != null && !isAggregationTypeImplicit) { sb.append(aggregationType.name()).append(" "); } @@ -438,7 +322,7 @@ public boolean equals(Object obj) { @Override public void write(DataOutput out) throws IOException { Text.writeString(out, name); - columnType.write(out); + ColumnType.write(out, type); if (null == aggregationType) { out.writeBoolean(false); } else { @@ -464,8 +348,7 @@ public void write(DataOutput out) throws IOException { @Override public void readFields(DataInput in) throws IOException { name = Text.readString(in); - columnType = new ColumnType(); - columnType.readFields(in); + type = ColumnType.read(in); boolean notNull = in.readBoolean(); if (notNull) { aggregationType = AggregateType.valueOf(Text.readString(in)); diff --git a/fe/src/main/java/org/apache/doris/catalog/ColumnType.java b/fe/src/main/java/org/apache/doris/catalog/ColumnType.java index 870b1ce5f31e8f..a40a5c92f09ad7 100644 --- a/fe/src/main/java/org/apache/doris/catalog/ColumnType.java +++ b/fe/src/main/java/org/apache/doris/catalog/ColumnType.java @@ -17,11 +17,9 @@ package org.apache.doris.catalog; -import org.apache.doris.common.AnalysisException; +import com.google.common.base.Preconditions; import org.apache.doris.common.FeMetaVersion; import org.apache.doris.common.io.Text; -import org.apache.doris.common.io.Writable; -import org.apache.doris.thrift.TColumnType; import java.io.DataInput; import java.io.DataOutput; @@ -32,8 +30,7 @@ * 1. 对于decimal,character这种有一些附加信息的 * 2. 如果在未来需要增加嵌套类型,那么这个ColumnType就是必须的了 */ -public class ColumnType implements Writable { - private static final int VAR_CHAR_UPPER_LIMIT = 65533; +public abstract class ColumnType { private static Boolean[][] schemaChangeMatrix; static { @@ -41,11 +38,7 @@ public class ColumnType implements Writable { for (int i = 0; i < schemaChangeMatrix.length; i++) { for (int j = 0; j < schemaChangeMatrix[i].length; j++) { - if (i == j) { - schemaChangeMatrix[i][j] = true; - } else { - schemaChangeMatrix[i][j] = false; - } + schemaChangeMatrix[i][j] = i == j; } } @@ -73,343 +66,31 @@ public class ColumnType implements Writable { schemaChangeMatrix[PrimitiveType.DATE.ordinal()][PrimitiveType.DATETIME.ordinal()] = true; } - private PrimitiveType type; - - // Unused if type is always the same length. - private int len; - - // Used for decimal(precision, scale) - // precision: maximum number of digits - // scale: the number of digits to the right of the decimal point - private int precision; - private int scale; - // used for limiting varchar size - private boolean varcharLimit = true; - - private volatile Type typeDesc; - - public ColumnType() { - this.type = PrimitiveType.NULL_TYPE; - } - - public ColumnType(PrimitiveType type) { - this(type, -1, -1, -1); - } - - public ColumnType(PrimitiveType type, int len, int precision, int scale) { - this.type = type; - this.len = len; - this.precision = precision; - this.scale = scale; - if (this.type == null) { - this.type = PrimitiveType.NULL_TYPE; - } - } - - // This is used for built-in function to create intermediate type - public static ColumnType createInterType(PrimitiveType type) { - switch (type) { - case BOOLEAN: - case TINYINT: - case SMALLINT: - case INT: - case BIGINT: - case LARGEINT: - case FLOAT: - case DOUBLE: - case DATE: - case DATETIME: - return createType(type); - case DECIMAL: - return createDecimal(27, 9); - case CHAR: - case VARCHAR: - return createVarchar(64); - case HLL: - return createHll(); - default: - return null; - } - } - - public static ColumnType createType(PrimitiveType type) { - return new ColumnType(type); - } - - public static ColumnType createVarchar(int len) { - ColumnType type = new ColumnType(PrimitiveType.VARCHAR); - type.len = len; - return type; - } - - public static ColumnType createHll() { - ColumnType type = new ColumnType(PrimitiveType.HLL); - type.len = ScalarType.MAX_HLL_LENGTH; - return type; - } - - // Create varchar type - public static ColumnType createChar(int len) { - ColumnType type = new ColumnType(PrimitiveType.CHAR); - type.len = len; - return type; - } - - public static ColumnType createDecimal(int precision, int scale) { - ColumnType type = new ColumnType(PrimitiveType.DECIMAL); - type.precision = precision; - type.scale = scale; - return type; - } - - public PrimitiveType getType() { - return type; - } - - public Type getTypeDesc() { - if (typeDesc != null) { - return typeDesc; - } - switch (type) { - case VARCHAR: - typeDesc = ScalarType.createVarcharType(len); - break; - case CHAR: - typeDesc = ScalarType.createCharType(len); - break; - case DECIMAL: - typeDesc = ScalarType.createDecimalType(precision, scale); - break; - default: - typeDesc = ScalarType.createType(type); - break; - } - return typeDesc; - } - - public int getLen() { - return len; - } - - public void setLen(int len) { - this.len = len; - } - - public void setPrecision(int precision) { - this.precision = precision; - } - - public void setVarcharLimit(boolean value) { - this.varcharLimit = value; + static boolean isSchemaChangeAllowed(Type lhs, Type rhs) { + return schemaChangeMatrix[lhs.getPrimitiveType().ordinal()][rhs.getPrimitiveType().ordinal()]; } - public int getPrecision() { - return precision; + public static void write(DataOutput out, Type type) throws IOException { + Preconditions.checkArgument(type.isScalarType(), "only support scalar type serialization"); + ScalarType scalarType = (ScalarType) type; + Text.writeString(out, scalarType.getPrimitiveType().name()); + out.writeInt(scalarType.getScalarScale()); + out.writeInt(scalarType.getScalarPrecision()); + out.writeInt(scalarType.getLength()); + // Actually, varcharLimit need not to write here, write true to back compatible + out.writeBoolean(true); } - public int getScale() { - return scale; - } - - public void setScale(int scale) { - this.scale = scale; - } - - public boolean isString() { - return type == PrimitiveType.CHAR || type == PrimitiveType.VARCHAR || type == PrimitiveType.HLL; - } - - public int getMemlayoutBytes() { - switch (type) { - case BOOLEAN: - return 0; - case TINYINT: - return 1; - case SMALLINT: - return 2; - case INT: - return 4; - case BIGINT: - return 8; - case LARGEINT: - return 16; - case FLOAT: - return 4; - case DOUBLE: - return 12; - case DATE: - return 3; - case DATETIME: - return 8; - case DECIMAL: - return 40; - case CHAR: - case VARCHAR: - return len; - case HLL: - return 16385; - default: - return 0; - } - } - - public void analyze() throws AnalysisException { - if (type == PrimitiveType.INVALID_TYPE) { - throw new AnalysisException("Invalid type."); - } - - // check parameter valid - switch (type) { - case CHAR: - if (len <= 0 || len > 255) { - throw new AnalysisException("Char size must between 1~255." - + " Size was set to: " + len + "."); - } - break; - case VARCHAR: - if (varcharLimit) { - if (len <= 0 || len > VAR_CHAR_UPPER_LIMIT) { - throw new AnalysisException("when engine=olap, varchar size must between 1~65533." - + " Size was set to: " + len + "."); - } - } else { - if (len <= 0) { - throw new AnalysisException("When engine=mysql, varchar size must be great than 1."); - } - } - break; - case HLL: - if (len <= 0 || len > 65533) { - throw new AnalysisException("Hll size must between 1~65533." - + " Size was set to: " + len + "."); - } - break; - case DECIMAL: - // precision: [1, 27] - if (precision < 1 || precision > 27) { - throw new AnalysisException("Precision of decimal must between 1 and 27." - + " Precision was set to: " + precision + "."); - } - // scale: [0, 9] - if (scale < 0 || scale > 9) { - throw new AnalysisException("Scale of decimal must between 0 and 9." - + " Scale was set to: " + scale + "."); - } - // scale < precision - if (scale >= precision) { - throw new AnalysisException("Scale of decimal must be smaller than precision." - + " Scale is " + scale + " and precision is " + precision); - } - break; - default: - // do nothing - } - } - - - public boolean isSchemaChangeAllowed(ColumnType other) { - return schemaChangeMatrix[type.ordinal()][other.type.ordinal()]; - } - - public String toSql() { - StringBuilder stringBuilder = new StringBuilder(); - switch (type) { - case CHAR: - stringBuilder.append("char").append("(").append(len).append(")"); - break; - case VARCHAR: - stringBuilder.append("varchar").append("(").append(len).append(")"); - break; - case DECIMAL: - stringBuilder.append("decimal").append("(").append(precision).append(", ").append(scale).append(")"); - break; - case BOOLEAN: - stringBuilder.append("tinyint(1)"); - break; - case TINYINT: - stringBuilder.append("tinyint(4)"); - break; - case SMALLINT: - stringBuilder.append("smallint(6)"); - break; - case INT: - stringBuilder.append("int(11)"); - break; - case BIGINT: - stringBuilder.append("bigint(20)"); - break; - case LARGEINT: - stringBuilder.append("largeint(40)"); - break; - case FLOAT: - case DOUBLE: - case DATE: - case DATETIME: - case HLL: - stringBuilder.append(type.toString().toLowerCase()); - break; - default: - stringBuilder.append("unknown"); - break; - } - return stringBuilder.toString(); - } - - public TColumnType toThrift() { - TColumnType thrift = new TColumnType(); - thrift.type = type.toThrift(); - if (type == PrimitiveType.CHAR || type == PrimitiveType.VARCHAR || type == PrimitiveType.HLL) { - thrift.setLen(len); - } - if (type == PrimitiveType.DECIMAL) { - thrift.setPrecision(precision); - thrift.setScale(scale); - } - return thrift; - } - - @Override - public boolean equals(Object o) { - if (!(o instanceof ColumnType)) { - return false; - } - ColumnType other = (ColumnType) o; - if (type != other.type) { - return false; - } - if (type == PrimitiveType.DECIMAL) { - return scale == other.scale && precision == other.precision; - } else if (type == PrimitiveType.CHAR) { - return len == other.len; - } else { - return true; - } - } - - @Override - public String toString() { - return toSql(); - } - - @Override - public void write(DataOutput out) throws IOException { - Text.writeString(out, type.name()); - out.writeInt(scale); - out.writeInt(precision); - out.writeInt(len); - out.writeBoolean(varcharLimit); - } - - @Override - public void readFields(DataInput in) throws IOException { - type = PrimitiveType.valueOf(Text.readString(in)); - scale = in.readInt(); - precision = in.readInt(); - len = in.readInt(); + public static Type read(DataInput in) throws IOException { + PrimitiveType primitiveType = PrimitiveType.valueOf(Text.readString(in)); + int scale = in.readInt(); + int precision = in.readInt(); + int len = in.readInt(); if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_22) { - varcharLimit = in.readBoolean(); + // Useless, just for back compatible + in.readBoolean(); } + return ScalarType.createType(primitiveType, len, precision, scale); } - } diff --git a/fe/src/main/java/org/apache/doris/catalog/EsTable.java b/fe/src/main/java/org/apache/doris/catalog/EsTable.java index ae95ba0136e4da..d6d703ea14e4e3 100644 --- a/fe/src/main/java/org/apache/doris/catalog/EsTable.java +++ b/fe/src/main/java/org/apache/doris/catalog/EsTable.java @@ -114,20 +114,6 @@ public TTableDescriptor toThrift() { tTableDescriptor.setEsTable(tEsTable); return tTableDescriptor; } - - @Override - public CreateTableStmt toCreateTableStmt(String dbName) { - Map properties = Maps.newHashMap(); - properties.put(HOSTS, hosts); - properties.put(USER, userName); - properties.put(PASSWORD, passwd); - properties.put(INDEX, indexName); - properties.put(TYPE, mappingType); - - CreateTableStmt stmt = new CreateTableStmt(false, true, new TableName(dbName, name), baseSchema, - type.name(), null, null, null, properties, null); - return stmt; - } @Override public int getSignature(int signatureVersion) { diff --git a/fe/src/main/java/org/apache/doris/catalog/MysqlTable.java b/fe/src/main/java/org/apache/doris/catalog/MysqlTable.java index 96af2104e80337..2c52a4300e393f 100644 --- a/fe/src/main/java/org/apache/doris/catalog/MysqlTable.java +++ b/fe/src/main/java/org/apache/doris/catalog/MysqlTable.java @@ -152,22 +152,6 @@ public TTableDescriptor toThrift() { return tTableDescriptor; } - @Override - public CreateTableStmt toCreateTableStmt(String dbName) { - Map properties = Maps.newHashMap(); - properties.put(MYSQL_HOST, host); - properties.put(MYSQL_PORT, port); - properties.put(MYSQL_USER, userName); - properties.put(MYSQL_PASSWORD, passwd); - properties.put(MYSQL_DATABASE, mysqlDatabaseName); - properties.put(MYSQL_TABLE, mysqlTableName); - - CreateTableStmt stmt = new CreateTableStmt(false, true, new TableName(dbName, name), baseSchema, - type.name(), null, null, null, properties, null); - - return stmt; - } - @Override public int getSignature(int signatureVersion) { Adler32 adler32 = new Adler32(); diff --git a/fe/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/src/main/java/org/apache/doris/catalog/OlapTable.java index d2483f1e8f6fab..96c13738bd258f 100644 --- a/fe/src/main/java/org/apache/doris/catalog/OlapTable.java +++ b/fe/src/main/java/org/apache/doris/catalog/OlapTable.java @@ -604,58 +604,7 @@ public AlterTableStmt toAddPartitionStmt(String dbName, String partitionName) { @Override public CreateTableStmt toCreateTableStmt(String dbName) { - Map properties = Maps.newHashMap(); - - // partition - PartitionDesc partitionDesc = null; - if (partitionInfo.getType() == PartitionType.RANGE) { - RangePartitionInfo rangePartitionInfo = (RangePartitionInfo) partitionInfo; - List partitionColumns = rangePartitionInfo.getPartitionColumns(); - List partitionColNames = Lists.newArrayList(); - for (Column partCol : partitionColumns) { - partitionColNames.add(partCol.getName()); - } - - List singlePartitionDescs = Lists.newArrayList(); - partitionDesc = new RangePartitionDesc(partitionColNames, singlePartitionDescs); - } else { - Short replicationNum = partitionInfo.getReplicationNum(nameToPartition.get(name).getId()); - properties.put(PropertyAnalyzer.PROPERTIES_REPLICATION_NUM, replicationNum.toString()); - // and partition version info here for non-partitioned table - Partition partition = getPartition(name); - Preconditions.checkNotNull(partition); - long version = partition.getVisibleVersion(); - long versionHash = partition.getVisibleVersionHash(); - String versionProp = Joiner.on(",").join(version, versionHash); - properties.put(PropertyAnalyzer.PROPERTIES_VERSION_INFO, versionProp); - } - - // keys - List keysColumnNames = Lists.newArrayList(); - for (Column column : baseSchema) { - if (column.isKey()) { - keysColumnNames.add(column.getName()); - } - } - KeysDesc keysDesc = new KeysDesc(keysType, keysColumnNames); - - // distribution - DistributionDesc distributionDesc = defaultDistributionInfo.toDistributionDesc(); - - // other properties - properties.put(PropertyAnalyzer.PROPERTIES_SHORT_KEY, indexIdToShortKeyColumnCount.get(id).toString()); - properties.put(PropertyAnalyzer.PROPERTIES_STORAGE_TYPE, indexIdToStorageType.get(id).name()); - if (bfColumns != null) { - String bfCols = Joiner.on(",").join(bfColumns); - properties.put(PropertyAnalyzer.PROPERTIES_BF_COLUMNS, bfCols); - properties.put(PropertyAnalyzer.PROPERTIES_BF_FPP, String.valueOf(bfFpp)); - } - properties.put(PropertyAnalyzer.PROPERTIES_SCHEMA_VERSION, indexIdToSchemaVersion.get(id).toString()); - - CreateTableStmt stmt = new CreateTableStmt(false, false, new TableName(dbName, name), baseSchema, - type.name(), keysDesc, partitionDesc, distributionDesc, - properties, null); - return stmt; + throw new RuntimeException("Don't support anymore"); } public int getSignature(int signatureVersion, List partNames) { diff --git a/fe/src/main/java/org/apache/doris/catalog/ScalarType.java b/fe/src/main/java/org/apache/doris/catalog/ScalarType.java index 0b79a0a47f2f44..607fa7f9edb9db 100644 --- a/fe/src/main/java/org/apache/doris/catalog/ScalarType.java +++ b/fe/src/main/java/org/apache/doris/catalog/ScalarType.java @@ -17,6 +17,7 @@ package org.apache.doris.catalog; +import org.apache.doris.thrift.TColumnType; import org.apache.doris.thrift.TScalarType; import org.apache.doris.thrift.TTypeDesc; import org.apache.doris.thrift.TTypeNode; @@ -77,6 +78,19 @@ protected ScalarType(PrimitiveType type) { this.type = type; } + public static ScalarType createType(PrimitiveType type, int len, int precision, int scale) { + switch (type) { + case CHAR: + return createCharType(len); + case VARCHAR: + return createVarcharType(len); + case DECIMAL: + return createDecimalType(precision, scale); + default: + return createType(type); + } + } + public static ScalarType createType(PrimitiveType type) { switch (type) { case INVALID_TYPE: @@ -165,6 +179,12 @@ public static ScalarType createCharType(int len) { return type; } + public static ScalarType createChar(int len) { + ScalarType type = new ScalarType(PrimitiveType.CHAR); + type.len = len; + return type; + } + public static ScalarType createDecimalType() { return DEFAULT_DECIMAL; } @@ -199,6 +219,13 @@ public static ScalarType createVarcharType(int len) { return type; } + public static ScalarType createVarchar(int len) { + // length checked in analysis + ScalarType type = new ScalarType(PrimitiveType.VARCHAR); + type.len = len; + return type; + } + public static ScalarType createVarcharType() { return DEFAULT_VARCHAR; } @@ -232,17 +259,41 @@ public String toString() { @Override public String toSql(int depth) { - if (depth >= MAX_NESTING_DEPTH) return "..."; - switch(type) { - case BINARY: return type.toString(); - case VARCHAR: + StringBuilder stringBuilder = new StringBuilder(); + switch (type) { case CHAR: - case HLL: - return type.toString() + "(" + len + ")"; + stringBuilder.append("char").append("(").append(len).append(")"); + break; + case VARCHAR: + stringBuilder.append("varchar").append("(").append(len).append(")"); + break; case DECIMAL: - return String.format("%s(%s,%s)", type.toString(), precision, scale); - default: return type.toString(); + stringBuilder.append("decimal").append("(").append(precision).append(", ").append(scale).append(")"); + break; + case BOOLEAN: + return "tinyint(1)"; + case TINYINT: + return "tinyint(4)"; + case SMALLINT: + return "smallint(6)"; + case INT: + return "int(11)"; + case BIGINT: + return "bigint(20)"; + case LARGEINT: + return "largeint(40)"; + case FLOAT: + case DOUBLE: + case DATE: + case DATETIME: + case HLL: + stringBuilder.append(type.toString().toLowerCase()); + break; + default: + stringBuilder.append("unknown"); + break; } + return stringBuilder.toString(); } @Override @@ -307,6 +358,10 @@ public int decimalScale() { public int ordinal() { return type.ordinal(); } public int getLength() { return len; } + // add scalar infix to override with getPrecision + public int getScalarScale() { return scale; } + public int getScalarPrecision() { return precision; } + @Override public boolean isWildcardDecimal() { return type == PrimitiveType.DECIMAL && precision == -1 && scale == -1; @@ -603,4 +658,53 @@ public static boolean isImplicitlyCastable( public static boolean canCastTo(ScalarType type, ScalarType targetType) { return PrimitiveType.isImplicitCast(type.getPrimitiveType(), targetType.getPrimitiveType()); } + + @Override + public int getStorageLayoutBytes() { + switch (type) { + case BOOLEAN: + return 0; + case TINYINT: + return 1; + case SMALLINT: + return 2; + case INT: + return 4; + case BIGINT: + return 8; + case LARGEINT: + return 16; + case FLOAT: + return 4; + case DOUBLE: + return 12; + case DATE: + return 3; + case DATETIME: + return 8; + case DECIMAL: + return 40; + case CHAR: + case VARCHAR: + return len; + case HLL: + return 16385; + default: + return 0; + } + } + + @Override + public TColumnType toColumnTypeThrift() { + TColumnType thrift = new TColumnType(); + thrift.type = type.toThrift(); + if (type == PrimitiveType.CHAR || type == PrimitiveType.VARCHAR || type == PrimitiveType.HLL) { + thrift.setLen(len); + } + if (type == PrimitiveType.DECIMAL) { + thrift.setPrecision(precision); + thrift.setScale(scale); + } + return thrift; + } } diff --git a/fe/src/main/java/org/apache/doris/catalog/SchemaTable.java b/fe/src/main/java/org/apache/doris/catalog/SchemaTable.java index 4b92183e3042ff..fbfb5f53212bd8 100644 --- a/fe/src/main/java/org/apache/doris/catalog/SchemaTable.java +++ b/fe/src/main/java/org/apache/doris/catalog/SchemaTable.java @@ -49,342 +49,342 @@ public class SchemaTable extends Table { // // AUTHORS // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("Name", ColumnType.createCharType(50), pos++)); -// columns.add(new Column("Location", ColumnType.createCharType(50), pos++)); -// columns.add(new Column("Comment", ColumnType.createCharType(50), pos++)); +// columns.add(new Column("Name", ScalarType.createCharType(50), pos++)); +// columns.add(new Column("Location", ScalarType.createCharType(50), pos++)); +// columns.add(new Column("Comment", ScalarType.createCharType(50), pos++)); // tableMap.put("authors", columns); // // COLUMNS // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("TABLE_CATALOG", ColumnType.createCharType(FN_REFLEN), pos++)); -// columns.add(new Column("TABLE_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TABLE_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("COLUMN_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_CATALOG", ScalarType.createCharType(FN_REFLEN), pos++)); +// columns.add(new Column("TABLE_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("COLUMN_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("ORDINAL_POSITION", ColumnType.createType(PrimitiveType.BIGINT), pos++)); +// new Column("ORDINAL_POSITION", ScalarType.createType(PrimitiveType.BIGINT), pos++)); // columns.add( -// new Column("COLUMN_DEFAULT", ColumnType.createCharType(MAX_FIELD_VARCHARLENGTH), pos++)); -// columns.add(new Column("IS_NULLABLE", ColumnType.createCharType(3), pos++)); -// columns.add(new Column("DATA_TYPE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("COLUMN_DEFAULT", ScalarType.createCharType(MAX_FIELD_VARCHARLENGTH), pos++)); +// columns.add(new Column("IS_NULLABLE", ScalarType.createCharType(3), pos++)); +// columns.add(new Column("DATA_TYPE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("CHARACTER_MAXIMUM_LENGTH", ColumnType.createType(PrimitiveType.BIGINT), +// new Column("CHARACTER_MAXIMUM_LENGTH", ScalarType.createType(PrimitiveType.BIGINT), // pos++)); // columns.add( -// new Column("CHARACTER_OCTET_LENGTH", ColumnType.createType(PrimitiveType.BIGINT), pos++)); +// new Column("CHARACTER_OCTET_LENGTH", ScalarType.createType(PrimitiveType.BIGINT), pos++)); // columns.add( -// new Column("NUMERIC_PRECISION", ColumnType.createType(PrimitiveType.BIGINT), pos++)); +// new Column("NUMERIC_PRECISION", ScalarType.createType(PrimitiveType.BIGINT), pos++)); // columns.add( -// new Column("NUMERIC_SCALE", ColumnType.createType(PrimitiveType.BIGINT), pos++)); +// new Column("NUMERIC_SCALE", ScalarType.createType(PrimitiveType.BIGINT), pos++)); // columns.add( -// new Column("CHARACTER_SET_NAME", ColumnType.createCharType(MY_CS_NAME_SIZE), pos++)); +// new Column("CHARACTER_SET_NAME", ScalarType.createCharType(MY_CS_NAME_SIZE), pos++)); // columns.add( -// new Column("COLLATION_NAME", ColumnType.createCharType(MY_CS_NAME_SIZE), pos++)); -// columns.add(new Column("COLUMN_TYPE", ColumnType.createCharType(65535), pos++)); -// columns.add(new Column("COLUMN_KEY", ColumnType.createCharType(3), pos++)); -// columns.add(new Column("EXTRA", ColumnType.createCharType(27), pos++)); -// columns.add(new Column("PRIVILEGES", ColumnType.createCharType(80), pos++)); -// columns.add(new Column("COLUMN_COMMENT", ColumnType.createCharType(255), pos++)); +// new Column("COLLATION_NAME", ScalarType.createCharType(MY_CS_NAME_SIZE), pos++)); +// columns.add(new Column("COLUMN_TYPE", ScalarType.createCharType(65535), pos++)); +// columns.add(new Column("COLUMN_KEY", ScalarType.createCharType(3), pos++)); +// columns.add(new Column("EXTRA", ScalarType.createCharType(27), pos++)); +// columns.add(new Column("PRIVILEGES", ScalarType.createCharType(80), pos++)); +// columns.add(new Column("COLUMN_COMMENT", ScalarType.createCharType(255), pos++)); // tableMap.put("columns", columns); // // create table // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("Catalog", ColumnType.createCharType(FN_REFLEN), pos++)); -// columns.add(new Column("Schema", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("Table", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("Create Table", ColumnType.createCharType(65535), pos++)); +// columns.add(new Column("Catalog", ScalarType.createCharType(FN_REFLEN), pos++)); +// columns.add(new Column("Schema", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("Table", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("Create Table", ScalarType.createCharType(65535), pos++)); // tableMap.put("create_table", columns); // // ENGINES // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("ENGINE", ColumnType.createCharType(64), pos++)); -// columns.add(new Column("SUPPORT", ColumnType.createCharType(8), pos++)); -// columns.add(new Column("COMMENT", ColumnType.createCharType(80), pos++)); -// columns.add(new Column("TRANSACTIONS", ColumnType.createCharType(3), pos++)); -// columns.add(new Column("XA", ColumnType.createCharType(3), pos++)); -// columns.add(new Column("SAVEPOINTS", ColumnType.createCharType(3), pos++)); +// columns.add(new Column("ENGINE", ScalarType.createCharType(64), pos++)); +// columns.add(new Column("SUPPORT", ScalarType.createCharType(8), pos++)); +// columns.add(new Column("COMMENT", ScalarType.createCharType(80), pos++)); +// columns.add(new Column("TRANSACTIONS", ScalarType.createCharType(3), pos++)); +// columns.add(new Column("XA", ScalarType.createCharType(3), pos++)); +// columns.add(new Column("SAVEPOINTS", ScalarType.createCharType(3), pos++)); // tableMap.put("engines", columns); // // EVENTS // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("EVENT_CATALOG", ColumnType.createCharType(FN_REFLEN), pos++)); -// columns.add(new Column("EVENT_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("EVENT_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("DEFINER", ColumnType.createCharType(77), pos++)); -// columns.add(new Column("TIME_ZONE", ColumnType.createCharType(64), pos++)); -// columns.add(new Column("EVENT_BODY", ColumnType.createCharType(8), pos++)); -// columns.add(new Column("EVENT_DEFINITION", ColumnType.createCharType(65535), pos++)); -// columns.add(new Column("EVENT_TYPE", ColumnType.createCharType(9), pos++)); -// columns.add( -// new Column("EXECUTE_AT", ColumnType.createType(PrimitiveType.TIMESTAMP), pos++)); -// columns.add(new Column("INTERVAL_VALUE", ColumnType.createCharType(256), pos++)); -// columns.add(new Column("INTERVAL_FIELD", ColumnType.createCharType(18), pos++)); -// columns.add(new Column("SQL_MODE", ColumnType.createCharType(32 * 256), pos++)); -// columns.add(new Column("STARTS", ColumnType.createType(PrimitiveType.TIMESTAMP), pos++)); -// columns.add(new Column("ENDS", ColumnType.createType(PrimitiveType.TIMESTAMP), pos++)); -// columns.add(new Column("STATUS", ColumnType.createCharType(18), pos++)); -// columns.add(new Column("ON_COMPLETION", ColumnType.createCharType(12), pos++)); -// columns.add(new Column("CREATED", ColumnType.createType(PrimitiveType.TIMESTAMP), pos++)); -// columns.add( -// new Column("LAST_ALTERED", ColumnType.createType(PrimitiveType.TIMESTAMP), pos++)); -// columns.add( -// new Column("LAST_EXECUTED", ColumnType.createType(PrimitiveType.TIMESTAMP), pos++)); -// columns.add(new Column("EVENT_COMMENT", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("ORIGINATOR", ColumnType.createType(PrimitiveType.BIGINT), pos++)); -// columns.add( -// new Column("CHARACTER_SET_CLIENT", ColumnType.createCharType(MY_CS_NAME_SIZE), pos++)); -// columns.add( -// new Column("COLLATION_CONNECTION", ColumnType.createCharType(MY_CS_NAME_SIZE), pos++)); -// columns.add( -// new Column("DATABASE_COLLATION", ColumnType.createCharType(MY_CS_NAME_SIZE), pos++)); +// columns.add(new Column("EVENT_CATALOG", ScalarType.createCharType(FN_REFLEN), pos++)); +// columns.add(new Column("EVENT_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("EVENT_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("DEFINER", ScalarType.createCharType(77), pos++)); +// columns.add(new Column("TIME_ZONE", ScalarType.createCharType(64), pos++)); +// columns.add(new Column("EVENT_BODY", ScalarType.createCharType(8), pos++)); +// columns.add(new Column("EVENT_DEFINITION", ScalarType.createCharType(65535), pos++)); +// columns.add(new Column("EVENT_TYPE", ScalarType.createCharType(9), pos++)); +// columns.add( +// new Column("EXECUTE_AT", ScalarType.createType(PrimitiveType.TIMESTAMP), pos++)); +// columns.add(new Column("INTERVAL_VALUE", ScalarType.createCharType(256), pos++)); +// columns.add(new Column("INTERVAL_FIELD", ScalarType.createCharType(18), pos++)); +// columns.add(new Column("SQL_MODE", ScalarType.createCharType(32 * 256), pos++)); +// columns.add(new Column("STARTS", ScalarType.createType(PrimitiveType.TIMESTAMP), pos++)); +// columns.add(new Column("ENDS", ScalarType.createType(PrimitiveType.TIMESTAMP), pos++)); +// columns.add(new Column("STATUS", ScalarType.createCharType(18), pos++)); +// columns.add(new Column("ON_COMPLETION", ScalarType.createCharType(12), pos++)); +// columns.add(new Column("CREATED", ScalarType.createType(PrimitiveType.TIMESTAMP), pos++)); +// columns.add( +// new Column("LAST_ALTERED", ScalarType.createType(PrimitiveType.TIMESTAMP), pos++)); +// columns.add( +// new Column("LAST_EXECUTED", ScalarType.createType(PrimitiveType.TIMESTAMP), pos++)); +// columns.add(new Column("EVENT_COMMENT", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("ORIGINATOR", ScalarType.createType(PrimitiveType.BIGINT), pos++)); +// columns.add( +// new Column("CHARACTER_SET_CLIENT", ScalarType.createCharType(MY_CS_NAME_SIZE), pos++)); +// columns.add( +// new Column("COLLATION_CONNECTION", ScalarType.createCharType(MY_CS_NAME_SIZE), pos++)); +// columns.add( +// new Column("DATABASE_COLLATION", ScalarType.createCharType(MY_CS_NAME_SIZE), pos++)); // tableMap.put("events", columns); // // // OPEN_TABLES // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("Database", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("Table", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("In_use", ColumnType.createType(PrimitiveType.BIGINT), pos++)); -// columns.add(new Column("Name_locked", ColumnType.createType(PrimitiveType.BIGINT), pos++)); +// columns.add(new Column("Database", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("Table", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("In_use", ScalarType.createType(PrimitiveType.BIGINT), pos++)); +// columns.add(new Column("Name_locked", ScalarType.createType(PrimitiveType.BIGINT), pos++)); // tableMap.put("open_tables", columns); // // TABLE_NAMES // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("TABLE_CATALOG", ColumnType.createCharType(FN_REFLEN), pos++)); -// columns.add(new Column("TABLE_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TABLE_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TABLE_TYPE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_CATALOG", ScalarType.createCharType(FN_REFLEN), pos++)); +// columns.add(new Column("TABLE_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_TYPE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // tableMap.put("table_names", columns); // // PLUGINS // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("PLUGIN_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("PLUGIN_VERSION", ColumnType.createCharType(20), pos++)); -// columns.add(new Column("PLUGIN_STATUS", ColumnType.createCharType(10), pos++)); -// columns.add(new Column("PLUGIN_TYPE", ColumnType.createCharType(80), pos++)); -// columns.add(new Column("PLUGIN_TYPE_VERSION", ColumnType.createCharType(20), pos++)); -// columns.add(new Column("PLUGIN_LIBRARY", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("PLUGIN_LIBRARY_VERSION", ColumnType.createCharType(20), pos++)); -// columns.add(new Column("PLUGIN_AUTHOR", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("PLUGIN_DESCRIPTION", ColumnType.createCharType(65535), pos++)); -// columns.add(new Column("PLUGIN_LICENSE", ColumnType.createCharType(80), pos++)); +// columns.add(new Column("PLUGIN_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("PLUGIN_VERSION", ScalarType.createCharType(20), pos++)); +// columns.add(new Column("PLUGIN_STATUS", ScalarType.createCharType(10), pos++)); +// columns.add(new Column("PLUGIN_TYPE", ScalarType.createCharType(80), pos++)); +// columns.add(new Column("PLUGIN_TYPE_VERSION", ScalarType.createCharType(20), pos++)); +// columns.add(new Column("PLUGIN_LIBRARY", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("PLUGIN_LIBRARY_VERSION", ScalarType.createCharType(20), pos++)); +// columns.add(new Column("PLUGIN_AUTHOR", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("PLUGIN_DESCRIPTION", ScalarType.createCharType(65535), pos++)); +// columns.add(new Column("PLUGIN_LICENSE", ScalarType.createCharType(80), pos++)); // tableMap.put("plugins", columns); // // PROCESSLIST // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("ID", ColumnType.createType(PrimitiveType.BIGINT), pos++)); -// columns.add(new Column("USER", ColumnType.createCharType(16), pos++)); -// columns.add(new Column("HOST", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("DB", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("COMMAND", ColumnType.createCharType(16), pos++)); -// columns.add(new Column("TIME", ColumnType.createType(PrimitiveType.INT), pos++)); -// columns.add(new Column("STATE", ColumnType.createCharType(64), pos++)); -// columns.add(new Column("INFO", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("ID", ScalarType.createType(PrimitiveType.BIGINT), pos++)); +// columns.add(new Column("USER", ScalarType.createCharType(16), pos++)); +// columns.add(new Column("HOST", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("DB", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("COMMAND", ScalarType.createCharType(16), pos++)); +// columns.add(new Column("TIME", ScalarType.createType(PrimitiveType.INT), pos++)); +// columns.add(new Column("STATE", ScalarType.createCharType(64), pos++)); +// columns.add(new Column("INFO", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // tableMap.put("processlist", columns); // // PROFILING // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("QUERY_ID", ColumnType.createType(PrimitiveType.INT), pos++)); -// columns.add(new Column("SEQ", ColumnType.createType(PrimitiveType.INT), pos++)); -// columns.add(new Column("STATE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("DURATION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("CPU_USER", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("CPU_SYSTEM", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("QUERY_ID", ScalarType.createType(PrimitiveType.INT), pos++)); +// columns.add(new Column("SEQ", ScalarType.createType(PrimitiveType.INT), pos++)); +// columns.add(new Column("STATE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("DURATION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("CPU_USER", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("CPU_SYSTEM", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("CONTEXT_VOLUNTARY", ColumnType.createType(PrimitiveType.INT), pos++)); +// new Column("CONTEXT_VOLUNTARY", ScalarType.createType(PrimitiveType.INT), pos++)); // columns.add( -// new Column("CONTEXT_INVOLUNTARY", ColumnType.createType(PrimitiveType.INT), pos++)); -// columns.add(new Column("BLOCK_OPS_IN", ColumnType.createType(PrimitiveType.INT), pos++)); -// columns.add(new Column("BLOCK_OPS_OUT", ColumnType.createType(PrimitiveType.INT), pos++)); -// columns.add(new Column("MESSAGES_SENT", ColumnType.createType(PrimitiveType.INT), pos++)); +// new Column("CONTEXT_INVOLUNTARY", ScalarType.createType(PrimitiveType.INT), pos++)); +// columns.add(new Column("BLOCK_OPS_IN", ScalarType.createType(PrimitiveType.INT), pos++)); +// columns.add(new Column("BLOCK_OPS_OUT", ScalarType.createType(PrimitiveType.INT), pos++)); +// columns.add(new Column("MESSAGES_SENT", ScalarType.createType(PrimitiveType.INT), pos++)); // columns.add( -// new Column("MESSAGES_RECEIVED", ColumnType.createType(PrimitiveType.INT), pos++)); +// new Column("MESSAGES_RECEIVED", ScalarType.createType(PrimitiveType.INT), pos++)); // columns.add( -// new Column("PAGE_FAULTS_MAJOR", ColumnType.createType(PrimitiveType.INT), pos++)); +// new Column("PAGE_FAULTS_MAJOR", ScalarType.createType(PrimitiveType.INT), pos++)); // columns.add( -// new Column("PAGE_FAULTS_MINOR", ColumnType.createType(PrimitiveType.INT), pos++)); -// columns.add(new Column("SWAPS", ColumnType.createType(PrimitiveType.INT), pos++)); -// columns.add(new Column("SOURCE_FUNCTION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("SOURCE_FILE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("SOURCE_LINE", ColumnType.createType(PrimitiveType.INT), pos++)); +// new Column("PAGE_FAULTS_MINOR", ScalarType.createType(PrimitiveType.INT), pos++)); +// columns.add(new Column("SWAPS", ScalarType.createType(PrimitiveType.INT), pos++)); +// columns.add(new Column("SOURCE_FUNCTION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("SOURCE_FILE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("SOURCE_LINE", ScalarType.createType(PrimitiveType.INT), pos++)); // tableMap.put("profiling", columns); // // TABLE PRIVILEGES // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("GRANTEE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TABLE_CATALOG", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TABLE_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TABLE_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("PRIVILEGE_TYPE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("IS_GRANTABLE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("GRANTEE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_CATALOG", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("PRIVILEGE_TYPE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("IS_GRANTABLE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // tableMap.put("table_privileges", columns); // // // TABLE CONSTRAINTS // pos = 0; // columns = new ArrayList(); // columns.add( -// new Column("CONSTRAINT_CATALOG", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("CONSTRAINT_CATALOG", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("CONSTRAINT_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("CONSTRAINT_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TABLE_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TABLE_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("CONSTRAINT_TYPE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("CONSTRAINT_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("CONSTRAINT_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("CONSTRAINT_TYPE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // tableMap.put("table_constraints", columns); // // // REFERENTIAL_CONSTRAINTS // pos = 0; // columns = new ArrayList(); // columns.add( -// new Column("CONSTRAINT_CATALOG", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("CONSTRAINT_CATALOG", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("CONSTRAINT_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("CONSTRAINT_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("CONSTRAINT_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("CONSTRAINT_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("UNIQUE_CONSTRAINT_CATALOG", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("UNIQUE_CONSTRAINT_CATALOG", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("UNIQUE_CONSTRAINT_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("UNIQUE_CONSTRAINT_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("UNIQUE_CONSTRAINT_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("MATCH_OPTION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("UPDATE_RULE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("DELETE_RULE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TABLE_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("UNIQUE_CONSTRAINT_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("MATCH_OPTION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("UPDATE_RULE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("DELETE_RULE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("REFERENCED_TABLE_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("REFERENCED_TABLE_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // tableMap.put("referential_constraints", columns); // // // VARIABLES // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("VARIABLE_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("VARIABLE_VALUE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("VARIABLE_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("VARIABLE_VALUE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // tableMap.put("variables", columns); // // // ROUNTINE // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("SPECIFIC_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("ROUTINE_CATALOG", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("ROUTINE_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("ROUTINE_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("ROUTINE_TYPE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("DTD_IDENTIFIER", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("ROUTINE_BODY", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("SPECIFIC_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("ROUTINE_CATALOG", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("ROUTINE_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("ROUTINE_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("ROUTINE_TYPE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("DTD_IDENTIFIER", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("ROUTINE_BODY", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("ROUTINE_DEFINITION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("EXTERNAL_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("ROUTINE_DEFINITION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("EXTERNAL_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("EXTERNAL_LANGUAGE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("PARAMETER_STYLE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("EXTERNAL_LANGUAGE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("PARAMETER_STYLE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("IS_DETERMINISTIC", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("SQL_DATA_ACCESS", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("SQL_PATH", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("SECURITY_TYPE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("CREATED", ColumnType.createType(PrimitiveType.TIMESTAMP), pos++)); +// new Column("IS_DETERMINISTIC", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("SQL_DATA_ACCESS", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("SQL_PATH", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("SECURITY_TYPE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("CREATED", ScalarType.createType(PrimitiveType.TIMESTAMP), pos++)); // columns.add( -// new Column("LAST_ALTERED", ColumnType.createType(PrimitiveType.TIMESTAMP), pos++)); -// columns.add(new Column("SQL_MODE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("ROUTINE_COMMENT", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("DEFINER", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("LAST_ALTERED", ScalarType.createType(PrimitiveType.TIMESTAMP), pos++)); +// columns.add(new Column("SQL_MODE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("ROUTINE_COMMENT", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("DEFINER", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("CHARACTER_SET_CLIENT", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("CHARACTER_SET_CLIENT", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("COLLATION_CONNECTION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("COLLATION_CONNECTION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("DATABASE_COLLATION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("DATABASE_COLLATION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // tableMap.put("routines", columns); // // // STATISTICS // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("TABLE_CATALOG", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TABLE_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TABLE_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("NON_UNIQUE", ColumnType.createType(PrimitiveType.BIGINT), pos++)); -// columns.add(new Column("INDEX_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("INDEX_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("SEQ_IN_INDEX", ColumnType.createType(PrimitiveType.BIGINT), pos++)); -// columns.add(new Column("COLUMN_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("COLLATION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("CARDINALITY", ColumnType.createType(PrimitiveType.BIGINT), pos++)); -// columns.add(new Column("SUB_PART", ColumnType.createType(PrimitiveType.BIGINT), pos++)); -// columns.add(new Column("PACKED", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("NULLABLE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("INDEX_TYPE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("COMMENT", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_CATALOG", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TABLE_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("NON_UNIQUE", ScalarType.createType(PrimitiveType.BIGINT), pos++)); +// columns.add(new Column("INDEX_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("INDEX_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("SEQ_IN_INDEX", ScalarType.createType(PrimitiveType.BIGINT), pos++)); +// columns.add(new Column("COLUMN_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("COLLATION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("CARDINALITY", ScalarType.createType(PrimitiveType.BIGINT), pos++)); +// columns.add(new Column("SUB_PART", ScalarType.createType(PrimitiveType.BIGINT), pos++)); +// columns.add(new Column("PACKED", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("NULLABLE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("INDEX_TYPE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("COMMENT", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // tableMap.put("statistics", columns); // // // STATUS // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("VARIABLE_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("VARIABLE_VALUE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("VARIABLE_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("VARIABLE_VALUE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // tableMap.put("status", columns); // // // TRIGGERS // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("TRIGGER_CATALOG", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TRIGGER_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("TRIGGER_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TRIGGER_CATALOG", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TRIGGER_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("TRIGGER_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("EVENT_MANIPULATION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("EVENT_MANIPULATION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("EVENT_OBJECT_CATALOG", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("EVENT_OBJECT_CATALOG", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("EVENT_OBJECT_SCHEMA", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("EVENT_OBJECT_SCHEMA", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("EVENT_OBJECT_TABLE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("ACTION_ORDER", ColumnType.createType(PrimitiveType.BIGINT), pos++)); +// new Column("EVENT_OBJECT_TABLE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("ACTION_ORDER", ScalarType.createType(PrimitiveType.BIGINT), pos++)); // columns.add( -// new Column("ACTION_CONDITION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("ACTION_CONDITION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("ACTION_STATEMENT", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("ACTION_STATEMENT", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("ACTION_ORIENTATION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("ACTION_TIMING", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("ACTION_ORIENTATION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("ACTION_TIMING", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("ACTION_REFERENCE_OLD_TABLE", ColumnType.createCharType(NAME_CHAR_LEN), +// new Column("ACTION_REFERENCE_OLD_TABLE", ScalarType.createCharType(NAME_CHAR_LEN), // pos++)); // columns.add( -// new Column("ACTION_REFERENCE_NEW_TABLE", ColumnType.createCharType(NAME_CHAR_LEN), +// new Column("ACTION_REFERENCE_NEW_TABLE", ScalarType.createCharType(NAME_CHAR_LEN), // pos++)); // columns.add( -// new Column("ACTION_REFERENCE_OLD_ROW", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("ACTION_REFERENCE_OLD_ROW", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("ACTION_REFERENCE_NEW_ROW", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("CREATED", ColumnType.createType(PrimitiveType.TIMESTAMP), pos++)); -// columns.add(new Column("SQL_MODE", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("DEFINER", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("ACTION_REFERENCE_NEW_ROW", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("CREATED", ScalarType.createType(PrimitiveType.TIMESTAMP), pos++)); +// columns.add(new Column("SQL_MODE", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("DEFINER", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("CHARACTER_SET_CLIENT", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("CHARACTER_SET_CLIENT", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("COLLATION_CONNECTION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("COLLATION_CONNECTION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("DATABASE_COLLATION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("DATABASE_COLLATION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // tableMap.put("triggers", columns); // // /* COLLATION */ // pos = 0; // columns = new ArrayList(); -// columns.add(new Column("COLLATION_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("COLLATION_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("CHARACTER_SET_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("ID", ColumnType.createType(PrimitiveType.BIGINT), pos++)); -// columns.add(new Column("IS_DEFAULT", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("IS_COMPILED", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("SORTLEN", ColumnType.createType(PrimitiveType.BIGINT), pos++)); +// new Column("CHARACTER_SET_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("ID", ScalarType.createType(PrimitiveType.BIGINT), pos++)); +// columns.add(new Column("IS_DEFAULT", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("IS_COMPILED", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("SORTLEN", ScalarType.createType(PrimitiveType.BIGINT), pos++)); // tableMap.put("collations", columns); // /* CHARSETS */ // pos = 0; // columns = new ArrayList(); // columns.add( -// new Column("CHARACTER_SET_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); +// new Column("CHARACTER_SET_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); // columns.add( -// new Column("DEFAULT_COLLATE_NAME", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("DESCRIPTION", ColumnType.createCharType(NAME_CHAR_LEN), pos++)); -// columns.add(new Column("MAXLEN", ColumnType.createType(PrimitiveType.BIGINT), pos++)); +// new Column("DEFAULT_COLLATE_NAME", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("DESCRIPTION", ScalarType.createCharType(NAME_CHAR_LEN), pos++)); +// columns.add(new Column("MAXLEN", ScalarType.createType(PrimitiveType.BIGINT), pos++)); // tableMap.put("character_sets", columns); // } @@ -423,194 +423,194 @@ public static Builder builder() { "tables", TableType.SCHEMA, builder() - .column("TABLE_CATALOG", ColumnType.createVarchar(FN_REFLEN)) - .column("TABLE_SCHEMA", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("TABLE_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("TABLE_TYPE", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("ENGINE", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("VERSION", ColumnType.createType(PrimitiveType.BIGINT)) - .column("ROW_FORMAT", ColumnType.createVarchar(10)) - .column("TABLE_ROWS", ColumnType.createType(PrimitiveType.BIGINT)) - .column("AVG_ROW_LENGTH", ColumnType.createType(PrimitiveType.BIGINT)) - .column("DATA_LENGTH", ColumnType.createType(PrimitiveType.BIGINT)) - .column("MAX_DATA_LENGTH", ColumnType.createType(PrimitiveType.BIGINT)) - .column("INDEX_LENGTH", ColumnType.createType(PrimitiveType.BIGINT)) - .column("DATA_FREE", ColumnType.createType(PrimitiveType.BIGINT)) - .column("AUTO_INCREMENT", ColumnType.createType(PrimitiveType.BIGINT)) - .column("CREATE_TIME", ColumnType.createType(PrimitiveType.DATETIME)) - .column("UPDATE_TIME", ColumnType.createType(PrimitiveType.DATETIME)) - .column("CHECK_TIME", ColumnType.createType(PrimitiveType.DATETIME)) - .column("TABLE_COLLATION", ColumnType.createVarchar(MY_CS_NAME_SIZE)) - .column("CHECKSUM", ColumnType.createType(PrimitiveType.BIGINT)) - .column("CREATE_OPTIONS", ColumnType.createVarchar(255)) - .column("TABLE_COMMENT", ColumnType.createVarchar(2048)) + .column("TABLE_CATALOG", ScalarType.createVarchar(FN_REFLEN)) + .column("TABLE_SCHEMA", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("TABLE_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("TABLE_TYPE", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("ENGINE", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("VERSION", ScalarType.createType(PrimitiveType.BIGINT)) + .column("ROW_FORMAT", ScalarType.createVarchar(10)) + .column("TABLE_ROWS", ScalarType.createType(PrimitiveType.BIGINT)) + .column("AVG_ROW_LENGTH", ScalarType.createType(PrimitiveType.BIGINT)) + .column("DATA_LENGTH", ScalarType.createType(PrimitiveType.BIGINT)) + .column("MAX_DATA_LENGTH", ScalarType.createType(PrimitiveType.BIGINT)) + .column("INDEX_LENGTH", ScalarType.createType(PrimitiveType.BIGINT)) + .column("DATA_FREE", ScalarType.createType(PrimitiveType.BIGINT)) + .column("AUTO_INCREMENT", ScalarType.createType(PrimitiveType.BIGINT)) + .column("CREATE_TIME", ScalarType.createType(PrimitiveType.DATETIME)) + .column("UPDATE_TIME", ScalarType.createType(PrimitiveType.DATETIME)) + .column("CHECK_TIME", ScalarType.createType(PrimitiveType.DATETIME)) + .column("TABLE_COLLATION", ScalarType.createVarchar(MY_CS_NAME_SIZE)) + .column("CHECKSUM", ScalarType.createType(PrimitiveType.BIGINT)) + .column("CREATE_OPTIONS", ScalarType.createVarchar(255)) + .column("TABLE_COMMENT", ScalarType.createVarchar(2048)) .build())) .put("table_privileges", new SchemaTable( SystemIdGenerator.getNextId(), "table_privileges", TableType.SCHEMA, builder() - .column("GRANTEE", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("TABLE_CATALOG", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("TABLE_SCHEMA", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("TABLE_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("PRIVILEGE_TYPE", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("IS_GRANTABLE", ColumnType.createVarchar(NAME_CHAR_LEN)) + .column("GRANTEE", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("TABLE_CATALOG", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("TABLE_SCHEMA", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("TABLE_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("PRIVILEGE_TYPE", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("IS_GRANTABLE", ScalarType.createVarchar(NAME_CHAR_LEN)) .build())) .put("referential_constraints", new SchemaTable( SystemIdGenerator.getNextId(), "referential_constraints", TableType.SCHEMA, builder() - .column("CONSTRAINT_CATALOG", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("CONSTRAINT_SCHEMA", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("CONSTRAINT_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("UNIQUE_CONSTRAINT_CATALOG", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("UNIQUE_CONSTRAINT_SCHEMA", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("UNIQUE_CONSTRAINT_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("MATCH_OPTION", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("UPDATE_RULE", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("DELETE_RULE", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("TABLE_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("REFERENCED_TABLE_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) + .column("CONSTRAINT_CATALOG", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("CONSTRAINT_SCHEMA", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("CONSTRAINT_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("UNIQUE_CONSTRAINT_CATALOG", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("UNIQUE_CONSTRAINT_SCHEMA", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("UNIQUE_CONSTRAINT_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("MATCH_OPTION", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("UPDATE_RULE", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("DELETE_RULE", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("TABLE_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("REFERENCED_TABLE_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) .build())) .put("key_column_usage", new SchemaTable( SystemIdGenerator.getNextId(), "key_column_usage", TableType.SCHEMA, builder() - .column("CONSTRAINT_CATALOG", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("CONSTRAINT_SCHEMA", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("CONSTRAINT_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("TABLE_CATALOG", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("TABLE_SCHEMA", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("TABLE_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("COLUMN_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("ORDINAL_POSITION", ColumnType.createType(PrimitiveType.BIGINT)) + .column("CONSTRAINT_CATALOG", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("CONSTRAINT_SCHEMA", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("CONSTRAINT_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("TABLE_CATALOG", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("TABLE_SCHEMA", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("TABLE_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("COLUMN_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("ORDINAL_POSITION", ScalarType.createType(PrimitiveType.BIGINT)) .column("POSITION_IN_UNIQUE_CONSTRAINT", - ColumnType.createType(PrimitiveType.BIGINT)) - .column("REFERENCED_TABLE_SCHEMA", ColumnType.createVarchar(64)) - .column("REFERENCED_TABLE_NAME", ColumnType.createVarchar(64)) - .column("REFERENCED_COLUMN_NAME", ColumnType.createVarchar(64)) + ScalarType.createType(PrimitiveType.BIGINT)) + .column("REFERENCED_TABLE_SCHEMA", ScalarType.createVarchar(64)) + .column("REFERENCED_TABLE_NAME", ScalarType.createVarchar(64)) + .column("REFERENCED_COLUMN_NAME", ScalarType.createVarchar(64)) .build())) .put("routines", new SchemaTable( SystemIdGenerator.getNextId(), "routines", TableType.SCHEMA, builder() - .column("SPECIFIC_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("ROUTINE_CATALOG", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("ROUTINE_SCHEMA", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("ROUTINE_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("ROUTINE_TYPE", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("DTD_IDENTIFIER", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("ROUTINE_BODY", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("ROUTINE_DEFINITION", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("EXTERNAL_NAME", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("EXTERNAL_LANGUAGE", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("PARAMETER_STYLE", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("IS_DETERMINISTIC", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("SQL_DATA_ACCESS", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("SQL_PATH", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("SECURITY_TYPE", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("CREATED", ColumnType.createType(PrimitiveType.DATETIME)) - .column("LAST_ALTERED", ColumnType.createType(PrimitiveType.DATETIME)) - .column("SQL_MODE", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("ROUTINE_COMMENT", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("DEFINER", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("CHARACTER_SET_CLIENT", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("COLLATION_CONNECTION", ColumnType.createVarchar(NAME_CHAR_LEN)) - .column("DATABASE_COLLATION", ColumnType.createVarchar(NAME_CHAR_LEN)) + .column("SPECIFIC_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("ROUTINE_CATALOG", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("ROUTINE_SCHEMA", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("ROUTINE_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("ROUTINE_TYPE", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("DTD_IDENTIFIER", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("ROUTINE_BODY", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("ROUTINE_DEFINITION", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("EXTERNAL_NAME", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("EXTERNAL_LANGUAGE", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("PARAMETER_STYLE", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("IS_DETERMINISTIC", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("SQL_DATA_ACCESS", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("SQL_PATH", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("SECURITY_TYPE", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("CREATED", ScalarType.createType(PrimitiveType.DATETIME)) + .column("LAST_ALTERED", ScalarType.createType(PrimitiveType.DATETIME)) + .column("SQL_MODE", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("ROUTINE_COMMENT", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("DEFINER", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("CHARACTER_SET_CLIENT", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("COLLATION_CONNECTION", ScalarType.createVarchar(NAME_CHAR_LEN)) + .column("DATABASE_COLLATION", ScalarType.createVarchar(NAME_CHAR_LEN)) .build())) .put("schemata", new SchemaTable( SystemIdGenerator.getNextId(), "schemata", TableType.SCHEMA, builder() - .column("CATALOG_NAME", ColumnType.createVarchar(512)) - .column("SCHEMA_NAME", ColumnType.createVarchar(32)) - .column("DEFAULT_CHARACTER_SET_NAME", ColumnType.createVarchar(32)) - .column("DEFAULT_COLLATION_NAME", ColumnType.createVarchar(32)) - .column("SQL_PATH", ColumnType.createVarchar(512)) + .column("CATALOG_NAME", ScalarType.createVarchar(512)) + .column("SCHEMA_NAME", ScalarType.createVarchar(32)) + .column("DEFAULT_CHARACTER_SET_NAME", ScalarType.createVarchar(32)) + .column("DEFAULT_COLLATION_NAME", ScalarType.createVarchar(32)) + .column("SQL_PATH", ScalarType.createVarchar(512)) .build())) .put("session_variables", new SchemaTable( SystemIdGenerator.getNextId(), "session_variables", TableType.SCHEMA, builder() - .column("VARIABLE_NAME", ColumnType.createVarchar(64)) - .column("VARIABLE_VALUE", ColumnType.createVarchar(1024)) + .column("VARIABLE_NAME", ScalarType.createVarchar(64)) + .column("VARIABLE_VALUE", ScalarType.createVarchar(1024)) .build())) .put("global_variables", new SchemaTable( SystemIdGenerator.getNextId(), "global_variables", TableType.SCHEMA, builder() - .column("VARIABLE_NAME", ColumnType.createVarchar(64)) - .column("VARIABLE_VALUE", ColumnType.createVarchar(1024)) + .column("VARIABLE_NAME", ScalarType.createVarchar(64)) + .column("VARIABLE_VALUE", ScalarType.createVarchar(1024)) .build())) .put("columns", new SchemaTable( SystemIdGenerator.getNextId(), "columns", TableType.SCHEMA, builder() - .column("TABLE_CATALOG", ColumnType.createVarchar(512)) - .column("TABLE_SCHEMA", ColumnType.createVarchar(64)) - .column("TABLE_NAME", ColumnType.createVarchar(64)) - .column("COLUMN_NAME", ColumnType.createVarchar(64)) - .column("ORDINAL_POSITION", ColumnType.createType(PrimitiveType.BIGINT)) - .column("COLUMN_DEFAULT", ColumnType.createVarchar(1024)) - .column("IS_NULLABLE", ColumnType.createVarchar(3)) - .column("DATA_TYPE", ColumnType.createVarchar(64)) + .column("TABLE_CATALOG", ScalarType.createVarchar(512)) + .column("TABLE_SCHEMA", ScalarType.createVarchar(64)) + .column("TABLE_NAME", ScalarType.createVarchar(64)) + .column("COLUMN_NAME", ScalarType.createVarchar(64)) + .column("ORDINAL_POSITION", ScalarType.createType(PrimitiveType.BIGINT)) + .column("COLUMN_DEFAULT", ScalarType.createVarchar(1024)) + .column("IS_NULLABLE", ScalarType.createVarchar(3)) + .column("DATA_TYPE", ScalarType.createVarchar(64)) .column("CHARACTER_MAXIMUM_LENGTH", - ColumnType.createType(PrimitiveType.BIGINT)) + ScalarType.createType(PrimitiveType.BIGINT)) .column("CHARACTER_OCTET_LENGTH", - ColumnType.createType(PrimitiveType.BIGINT)) - .column("NUMERIC_PRECISION", ColumnType.createType(PrimitiveType.BIGINT)) - .column("NUMERIC_SCALE", ColumnType.createType(PrimitiveType.BIGINT)) - .column("CHARACTER_SET_NAME", ColumnType.createVarchar(32)) - .column("COLLATION_NAME", ColumnType.createVarchar(32)) - .column("COLUMN_TYPE", ColumnType.createVarchar(32)) - .column("COLUMN_KEY", ColumnType.createVarchar(3)) - .column("EXTRA", ColumnType.createVarchar(27)) - .column("PRIVILEGES", ColumnType.createVarchar(80)) - .column("COLUMN_COMMENT", ColumnType.createVarchar(255)) - .column("COLUMN_SIZE", ColumnType.createType(PrimitiveType.BIGINT)) - .column("DECIMAL_DIGITS", ColumnType.createType(PrimitiveType.BIGINT)) + ScalarType.createType(PrimitiveType.BIGINT)) + .column("NUMERIC_PRECISION", ScalarType.createType(PrimitiveType.BIGINT)) + .column("NUMERIC_SCALE", ScalarType.createType(PrimitiveType.BIGINT)) + .column("CHARACTER_SET_NAME", ScalarType.createVarchar(32)) + .column("COLLATION_NAME", ScalarType.createVarchar(32)) + .column("COLUMN_TYPE", ScalarType.createVarchar(32)) + .column("COLUMN_KEY", ScalarType.createVarchar(3)) + .column("EXTRA", ScalarType.createVarchar(27)) + .column("PRIVILEGES", ScalarType.createVarchar(80)) + .column("COLUMN_COMMENT", ScalarType.createVarchar(255)) + .column("COLUMN_SIZE", ScalarType.createType(PrimitiveType.BIGINT)) + .column("DECIMAL_DIGITS", ScalarType.createType(PrimitiveType.BIGINT)) .build())) .put("character_sets", new SchemaTable( SystemIdGenerator.getNextId(), "character_sets", TableType.SCHEMA, builder() - .column("CHARACTER_SET_NAME", ColumnType.createVarchar(512)) - .column("DEFAULT_COLLATE_NAME", ColumnType.createVarchar(64)) - .column("DESCRIPTION", ColumnType.createVarchar(64)) - .column("MAXLEN", ColumnType.createType(PrimitiveType.BIGINT)) + .column("CHARACTER_SET_NAME", ScalarType.createVarchar(512)) + .column("DEFAULT_COLLATE_NAME", ScalarType.createVarchar(64)) + .column("DESCRIPTION", ScalarType.createVarchar(64)) + .column("MAXLEN", ScalarType.createType(PrimitiveType.BIGINT)) .build())) .put("collations", new SchemaTable( SystemIdGenerator.getNextId(), "collations", TableType.SCHEMA, builder() - .column("COLLATION_NAME", ColumnType.createVarchar(512)) - .column("CHARACTER_SET_NAME", ColumnType.createVarchar(64)) - .column("ID", ColumnType.createType(PrimitiveType.BIGINT)) - .column("IS_DEFAULT", ColumnType.createVarchar(64)) - .column("IS_COMPILED", ColumnType.createVarchar(64)) - .column("SORTLEN", ColumnType.createType(PrimitiveType.BIGINT)) + .column("COLLATION_NAME", ScalarType.createVarchar(512)) + .column("CHARACTER_SET_NAME", ScalarType.createVarchar(64)) + .column("ID", ScalarType.createType(PrimitiveType.BIGINT)) + .column("IS_DEFAULT", ScalarType.createVarchar(64)) + .column("IS_COMPILED", ScalarType.createVarchar(64)) + .column("SORTLEN", ScalarType.createType(PrimitiveType.BIGINT)) .build())) .put("table_constraints", new SchemaTable( SystemIdGenerator.getNextId(), "table_constraints", TableType.SCHEMA, builder() - .column("CONSTRAINT_CATALOG", ColumnType.createVarchar(512)) - .column("CONSTRAINT_SCHEMA", ColumnType.createVarchar(64)) - .column("CONSTRAINT_NAME", ColumnType.createVarchar(64)) - .column("TABLE_SCHEMA", ColumnType.createVarchar(64)) - .column("TABLE_NAME", ColumnType.createVarchar(64)) - .column("CONSTRAINT_TYPE", ColumnType.createVarchar(64)) + .column("CONSTRAINT_CATALOG", ScalarType.createVarchar(512)) + .column("CONSTRAINT_SCHEMA", ScalarType.createVarchar(64)) + .column("CONSTRAINT_NAME", ScalarType.createVarchar(64)) + .column("TABLE_SCHEMA", ScalarType.createVarchar(64)) + .column("TABLE_NAME", ScalarType.createVarchar(64)) + .column("CONSTRAINT_TYPE", ScalarType.createVarchar(64)) .build())) .put("engines", new SchemaTable( @@ -618,12 +618,12 @@ public static Builder builder() { "engines", TableType.SCHEMA, builder() - .column("ENGINE", ColumnType.createVarchar(64)) - .column("SUPPORT", ColumnType.createVarchar(8)) - .column("COMMENT", ColumnType.createVarchar(80)) - .column("TRANSACTIONS", ColumnType.createVarchar(3)) - .column("XA", ColumnType.createVarchar(3)) - .column("SAVEPOINTS", ColumnType.createVarchar(3)) + .column("ENGINE", ScalarType.createVarchar(64)) + .column("SUPPORT", ScalarType.createVarchar(8)) + .column("COMMENT", ScalarType.createVarchar(80)) + .column("TRANSACTIONS", ScalarType.createVarchar(3)) + .column("XA", ScalarType.createVarchar(3)) + .column("SAVEPOINTS", ScalarType.createVarchar(3)) .build())) .build(); @@ -634,8 +634,8 @@ public Builder() { columns = Lists.newArrayList(); } - public Builder column(String name, ColumnType type) { - columns.add(new Column(name, type.getType(), true)); + public Builder column(String name, ScalarType type) { + columns.add(new Column(name, type.getPrimitiveType(), true)); return this; } diff --git a/fe/src/main/java/org/apache/doris/catalog/Type.java b/fe/src/main/java/org/apache/doris/catalog/Type.java index 32332f0324b3a1..43f98b3b4f4741 100644 --- a/fe/src/main/java/org/apache/doris/catalog/Type.java +++ b/fe/src/main/java/org/apache/doris/catalog/Type.java @@ -18,6 +18,8 @@ package org.apache.doris.catalog; import org.apache.doris.common.Pair; +import org.apache.doris.thrift.TColumn; +import org.apache.doris.thrift.TColumnType; import org.apache.doris.thrift.TPrimitiveType; import org.apache.doris.thrift.TScalarType; import org.apache.doris.thrift.TStructField; @@ -290,6 +292,10 @@ public TTypeDesc toThrift() { return container; } + public TColumnType toColumnTypeThrift() { + return null; + } + /** * Subclasses should override this method to add themselves to the thrift container. */ @@ -918,4 +924,8 @@ public Type getNumResultType() { } } + + public int getStorageLayoutBytes() { + return 0; + } } diff --git a/fe/src/main/java/org/apache/doris/common/proc/IndexSchemaProcNode.java b/fe/src/main/java/org/apache/doris/common/proc/IndexSchemaProcNode.java index b2d7f0e5b26fe3..724bddd42f2e70 100644 --- a/fe/src/main/java/org/apache/doris/common/proc/IndexSchemaProcNode.java +++ b/fe/src/main/java/org/apache/doris/common/proc/IndexSchemaProcNode.java @@ -67,7 +67,7 @@ public ProcResult fetchResult() throws AnalysisException { String extraStr = StringUtils.join(extras, ","); List rowList = Arrays.asList(column.getName(), - column.getColumnType().toString(), + column.getOriginType().toString(), column.isAllowNull() ? "Yes" : "No", ((Boolean) column.isKey()).toString(), column.getDefaultValue() == null diff --git a/fe/src/main/java/org/apache/doris/common/util/KuduUtil.java b/fe/src/main/java/org/apache/doris/common/util/KuduUtil.java index 0919433d2b9c8c..7652db26cdaa6a 100644 --- a/fe/src/main/java/org/apache/doris/common/util/KuduUtil.java +++ b/fe/src/main/java/org/apache/doris/common/util/KuduUtil.java @@ -17,6 +17,7 @@ package org.apache.doris.common.util; +import org.apache.doris.analysis.ColumnDef; import org.apache.doris.analysis.DistributionDesc; import org.apache.doris.analysis.HashDistributionDesc; import org.apache.doris.analysis.KeysDesc; @@ -289,7 +290,7 @@ public static void analyzeColumn(Column col, KeysDesc keysDesc) throws AnalysisE } if (col.getDefaultValue() != null) { - Column.validateDefaultValue(col.getColumnType(), col.getDefaultValue()); + ColumnDef.validateDefaultValue(col.getOriginType(), col.getDefaultValue()); } if (keysDesc.containsCol(col.getName())) { diff --git a/fe/src/main/java/org/apache/doris/load/Load.java b/fe/src/main/java/org/apache/doris/load/Load.java index 79a5e9149bff41..929e0b0c1ac8e9 100644 --- a/fe/src/main/java/org/apache/doris/load/Load.java +++ b/fe/src/main/java/org/apache/doris/load/Load.java @@ -718,7 +718,7 @@ private void createSource(Database db, DataDescription dataDescription, // check hll for (Column column : tableSchema) { - if (column.getColumnType().getType() == PrimitiveType.HLL) { + if (column.getDataType() == PrimitiveType.HLL) { if (assignColumnToFunction != null && !assignColumnToFunction.containsKey(column.getName())) { throw new DdlException("Hll column is not assigned. column:" + column.getName()); } diff --git a/fe/src/main/java/org/apache/doris/planner/CsvScanNode.java b/fe/src/main/java/org/apache/doris/planner/CsvScanNode.java index 71939f646af878..1cbc8e3dca6a3b 100644 --- a/fe/src/main/java/org/apache/doris/planner/CsvScanNode.java +++ b/fe/src/main/java/org/apache/doris/planner/CsvScanNode.java @@ -139,8 +139,7 @@ public void finalize(Analyzer analyzer) throws UserException { } for (String columnName : columnNames) { Column column = table.getColumn(columnName); - ColumnType columnType = column.getColumnType(); - columnTypeMapping.put(columnName, columnType.toThrift()); + columnTypeMapping.put(columnName, column.getOriginType().toColumnTypeThrift()); if (columns.contains(columnName)) { continue; diff --git a/fe/src/main/java/org/apache/doris/planner/OlapRewriteNode.java b/fe/src/main/java/org/apache/doris/planner/OlapRewriteNode.java index 850dd5b4259471..414b79c79df5a9 100644 --- a/fe/src/main/java/org/apache/doris/planner/OlapRewriteNode.java +++ b/fe/src/main/java/org/apache/doris/planner/OlapRewriteNode.java @@ -90,7 +90,7 @@ protected void toThrift(TPlanNode msg) { msg.node_type = TPlanNodeType.OLAP_REWRITE_NODE; TOlapRewriteNode tnode = new TOlapRewriteNode(); for (Column column : table.getBaseSchema()) { - tnode.addToColumn_types(column.getColumnType().toThrift()); + tnode.addToColumn_types(column.getOriginType().toColumnTypeThrift()); } for (Expr expr : newResultExprs) { tnode.addToColumns(expr.treeToThrift()); diff --git a/fe/src/main/java/org/apache/doris/qe/ShowExecutor.java b/fe/src/main/java/org/apache/doris/qe/ShowExecutor.java index ca3be123712e5e..ad011d5c4a36a2 100644 --- a/fe/src/main/java/org/apache/doris/qe/ShowExecutor.java +++ b/fe/src/main/java/org/apache/doris/qe/ShowExecutor.java @@ -519,7 +519,7 @@ private void handleShowColumn() throws AnalysisException { continue; } final String columnName = col.getName(); - final String columnType = col.getColumnType().toString(); + final String columnType = col.getType().toString(); final String isAllowNull = col.isAllowNull() ? "YES" : "NO"; final String isKey = col.isKey() ? "YES" : "NO"; final String defaultValue = col.getDefaultValue(); diff --git a/fe/src/main/java/org/apache/doris/qe/ShowResultSet.java b/fe/src/main/java/org/apache/doris/qe/ShowResultSet.java index 77b2ff20d6c1b0..4d54acdcd72995 100644 --- a/fe/src/main/java/org/apache/doris/qe/ShowResultSet.java +++ b/fe/src/main/java/org/apache/doris/qe/ShowResultSet.java @@ -21,8 +21,8 @@ import java.util.List; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; import org.apache.doris.catalog.PrimitiveType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.thrift.TColumnDefinition; import org.apache.doris.thrift.TShowResultSet; import org.apache.doris.thrift.TShowResultSetMetaData; @@ -53,8 +53,8 @@ public ShowResultSet(TShowResultSet resultSet) { for (int i = 0; i < resultSet.getMetaData().getColumnsSize(); i ++) { TColumnDefinition definition = (TColumnDefinition) resultSet.getMetaData().getColumns().get(i); columns.add(new Column( - definition.getColumnName(), - new ColumnType(PrimitiveType.fromThrift(definition.getColumnType().getType()))) + definition.getColumnName(), + ScalarType.createType(PrimitiveType.fromThrift(definition.getColumnType().getType()))) ); } this.metaData = new ShowResultSetMetaData(columns); @@ -104,10 +104,8 @@ public TShowResultSet tothrift() { set.metaData = new TShowResultSetMetaData(); for (int i = 0; i < metaData.getColumnCount(); i ++) { Column definition = metaData.getColumn(i); - set.metaData.addToColumns( - new TColumnDefinition( - definition.getName(), - definition.getColumnType().toThrift()) + set.metaData.addToColumns(new TColumnDefinition( + definition.getName(), definition.getOriginType().toColumnTypeThrift()) ); } diff --git a/fe/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/src/main/java/org/apache/doris/qe/StmtExecutor.java index bf250169ba0d51..dcf27cb4b437fe 100644 --- a/fe/src/main/java/org/apache/doris/qe/StmtExecutor.java +++ b/fe/src/main/java/org/apache/doris/qe/StmtExecutor.java @@ -42,7 +42,7 @@ import org.apache.doris.analysis.UseStmt; import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.Database; import org.apache.doris.catalog.Table.TableType; import org.apache.doris.catalog.Type; @@ -668,7 +668,7 @@ private void sendMetaData(ShowResultSetMetaData metaData) throws IOException { for (Column col : metaData.getColumns()) { serializer.reset(); // TODO(zhaochun): only support varchar type - serializer.writeField(col.getName(), col.getColumnType().getType()); + serializer.writeField(col.getName(), col.getType().getPrimitiveType()); context.getMysqlChannel().sendOnePacket(serializer.toByteBuffer()); } // send EOF @@ -735,7 +735,7 @@ private void handleShow() throws IOException, AnalysisException, DdlException { private void handleExplainStmt(String result) throws IOException { ShowResultSetMetaData metaData = ShowResultSetMetaData.builder() - .addColumn(new Column("Explain String", ColumnType.createVarchar(20))) + .addColumn(new Column("Explain String", ScalarType.createVarchar(20))) .build(); sendMetaData(metaData); diff --git a/fe/src/main/java/org/apache/doris/service/FrontendServiceImpl.java b/fe/src/main/java/org/apache/doris/service/FrontendServiceImpl.java index 72ca0f9c4eb258..47b4d70808e7fd 100644 --- a/fe/src/main/java/org/apache/doris/service/FrontendServiceImpl.java +++ b/fe/src/main/java/org/apache/doris/service/FrontendServiceImpl.java @@ -265,15 +265,15 @@ public TDescribeTableResult describeTable(TDescribeTableParams params) throws TE if (table != null) { for (Column column : table.getBaseSchema()) { final TColumnDesc desc = new TColumnDesc(column.getName(), column.getDataType().toThrift()); - final Integer precision = column.getColumnType().getTypeDesc().getPrecision(); + final Integer precision = column.getOriginType().getPrecision(); if (precision != null) { desc.setColumnPrecision(precision); } - final Integer columnLength = column.getColumnType().getTypeDesc().getColumnSize(); + final Integer columnLength = column.getOriginType().getColumnSize(); if (columnLength != null) { desc.setColumnLength(columnLength); } - final Integer decimalDigits = column.getColumnType().getTypeDesc().getDecimalDigits(); + final Integer decimalDigits = column.getOriginType().getDecimalDigits(); if (decimalDigits != null) { desc.setColumnScale(decimalDigits); } diff --git a/fe/src/test/java/org/apache/doris/alter/SchemaChangeJobTest.java b/fe/src/test/java/org/apache/doris/alter/SchemaChangeJobTest.java index 5d6bff4d792f96..55770e6b29c826 100644 --- a/fe/src/test/java/org/apache/doris/alter/SchemaChangeJobTest.java +++ b/fe/src/test/java/org/apache/doris/alter/SchemaChangeJobTest.java @@ -25,6 +25,9 @@ import java.util.List; import java.util.Set; +import org.apache.doris.analysis.ColumnDef; +import org.apache.doris.analysis.TypeDef; +import org.apache.doris.catalog.ScalarType; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -39,7 +42,6 @@ import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.CatalogTestUtil; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; import org.apache.doris.catalog.Database; import org.apache.doris.catalog.FakeCatalog; import org.apache.doris.catalog.FakeEditLog; @@ -80,7 +82,7 @@ public class SchemaChangeJobTest { private String transactionSource = "localfe"; private static Analyzer analyzer; - private static Column newCol = new Column("add_v", new ColumnType(PrimitiveType.INT), false, AggregateType.MAX, + private static ColumnDef newCol = new ColumnDef("add_v", new TypeDef(ScalarType.createType(PrimitiveType.INT)), false, AggregateType.MAX, false, "1", ""); private static AddColumnClause addColumnClause = new AddColumnClause(newCol, new ColumnPosition("v"), null, null); diff --git a/fe/src/test/java/org/apache/doris/analysis/AddColumnClauseTest.java b/fe/src/test/java/org/apache/doris/analysis/AddColumnClauseTest.java index 04e49ff7312de5..410903e8754e77 100644 --- a/fe/src/test/java/org/apache/doris/analysis/AddColumnClauseTest.java +++ b/fe/src/test/java/org/apache/doris/analysis/AddColumnClauseTest.java @@ -17,13 +17,15 @@ package org.apache.doris.analysis; +import org.apache.doris.catalog.Column; +import org.apache.doris.catalog.PrimitiveType; +import org.apache.doris.catalog.ScalarType; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.apache.doris.catalog.AggregateType; -import org.apache.doris.catalog.Column; import org.apache.doris.common.AnalysisException; public class AddColumnClauseTest { @@ -36,13 +38,15 @@ public static void setUp() { @Test public void testNormal() throws AnalysisException { - Column definition = EasyMock.createMock(Column.class); + Column column = new Column("testCol", ScalarType.createType(PrimitiveType.INT)); + ColumnDef definition = EasyMock.createMock(ColumnDef.class); definition.analyze(true); EasyMock.expectLastCall().anyTimes(); EasyMock.expect(definition.toSql()).andReturn("`testCol` INT").anyTimes(); EasyMock.expect(definition.getDefaultValue()).andReturn("").anyTimes(); - EasyMock.expect(definition.getAggregationType()).andReturn(null).anyTimes(); + EasyMock.expect(definition.getAggregateType()).andReturn(null).anyTimes(); EasyMock.expect(definition.isAllowNull()).andReturn(false).anyTimes(); + EasyMock.expect(definition.toColumn()).andReturn(column).anyTimes(); EasyMock.replay(definition); AddColumnClause clause = new AddColumnClause(definition, null, null, null); @@ -60,8 +64,7 @@ public void testNormal() throws AnalysisException { clause = new AddColumnClause(definition, new ColumnPosition("testCol2"), "testRollup", null); clause.analyze(analyzer); Assert.assertEquals("ADD COLUMN `testCol` INT AFTER `testCol2` IN `testRollup`", clause.toString()); - Assert.assertEquals(definition, clause.getCol()); - Assert.assertEquals(null, clause.getProperties()); + Assert.assertNull(clause.getProperties()); Assert.assertEquals(new ColumnPosition("testCol2").toString(), clause.getColPos().toSql()); Assert.assertEquals("testRollup", clause.getRollupName()); } @@ -75,12 +78,12 @@ public void testNoColDef() throws AnalysisException { @Test(expected = AnalysisException.class) public void testNoDefault() throws AnalysisException { - Column definition = EasyMock.createMock(Column.class); + ColumnDef definition = EasyMock.createMock(ColumnDef.class); definition.analyze(true); EasyMock.expectLastCall().anyTimes(); EasyMock.expect(definition.toSql()).andReturn("`testCol` INT").anyTimes(); EasyMock.expect(definition.getDefaultValue()).andReturn(null).anyTimes(); - EasyMock.expect(definition.getAggregationType()).andReturn(null).anyTimes(); + EasyMock.expect(definition.getAggregateType()).andReturn(null).anyTimes(); EasyMock.expect(definition.getName()).andReturn("testCol").anyTimes(); EasyMock.expect(definition.isAllowNull()).andReturn(false).anyTimes(); EasyMock.replay(definition); @@ -91,12 +94,12 @@ public void testNoDefault() throws AnalysisException { @Test(expected = AnalysisException.class) public void testAggPos() throws AnalysisException { - Column definition = EasyMock.createMock(Column.class); + ColumnDef definition = EasyMock.createMock(ColumnDef.class); definition.analyze(true); EasyMock.expectLastCall().anyTimes(); EasyMock.expect(definition.toSql()).andReturn("`testCol` INT").anyTimes(); EasyMock.expect(definition.getDefaultValue()).andReturn(null).anyTimes(); - EasyMock.expect(definition.getAggregationType()).andReturn(AggregateType.SUM).anyTimes(); + EasyMock.expect(definition.getAggregateType()).andReturn(AggregateType.SUM).anyTimes(); EasyMock.expect(definition.getName()).andReturn("testCol").anyTimes(); EasyMock.expect(definition.isAllowNull()).andReturn(false).anyTimes(); EasyMock.replay(definition); @@ -107,12 +110,12 @@ public void testAggPos() throws AnalysisException { @Test(expected = AnalysisException.class) public void testAddValueToFirst() throws AnalysisException { - Column definition = EasyMock.createMock(Column.class); + ColumnDef definition = EasyMock.createMock(ColumnDef.class); definition.analyze(true); EasyMock.expectLastCall().anyTimes(); EasyMock.expect(definition.toSql()).andReturn("`testCol` INT").anyTimes(); EasyMock.expect(definition.getDefaultValue()).andReturn("2").anyTimes(); - EasyMock.expect(definition.getAggregationType()).andReturn(AggregateType.SUM).anyTimes(); + EasyMock.expect(definition.getAggregateType()).andReturn(AggregateType.SUM).anyTimes(); EasyMock.expect(definition.getName()).andReturn("testCol").anyTimes(); EasyMock.expect(definition.isAllowNull()).andReturn(false).anyTimes(); EasyMock.replay(definition); diff --git a/fe/src/test/java/org/apache/doris/analysis/AddColumnsClauseTest.java b/fe/src/test/java/org/apache/doris/analysis/AddColumnsClauseTest.java index 7e2f1f33ae58e3..88c305cd6994ce 100644 --- a/fe/src/test/java/org/apache/doris/analysis/AddColumnsClauseTest.java +++ b/fe/src/test/java/org/apache/doris/analysis/AddColumnsClauseTest.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.common.AnalysisException; @@ -40,11 +40,11 @@ public static void setUp() { @Test public void testNormal() throws AnalysisException { - List columns = Lists.newArrayList(); - Column definition = new Column("col1", ColumnType.createType(PrimitiveType.INT), - true, null, "0", ""); + List columns = Lists.newArrayList(); + ColumnDef definition = new ColumnDef("col1", new TypeDef(ScalarType.createType(PrimitiveType.INT)), + true, null, false,"0", ""); columns.add(definition); - definition = new Column("col2", ColumnType.createType(PrimitiveType.INT), true, null, "0", ""); + definition = new ColumnDef("col2", new TypeDef(ScalarType.createType(PrimitiveType.INT)), true, null, false, "0", ""); columns.add(definition); AddColumnsClause clause = new AddColumnsClause(columns, null, null); clause.analyze(analyzer); @@ -66,15 +66,14 @@ public void testNormal() throws AnalysisException { clause.toString()); Assert.assertNull(clause.getProperties()); Assert.assertEquals("testTable", clause.getRollupName()); - Assert.assertEquals(columns, clause.getColumns()); } @Test(expected = AnalysisException.class) public void testNoDefault() throws AnalysisException { - List columns = Lists.newArrayList(); - Column definition = new Column("col1", ColumnType.createType(PrimitiveType.INT)); + List columns = Lists.newArrayList(); + ColumnDef definition = new ColumnDef("col1", new TypeDef(ScalarType.createType(PrimitiveType.INT))); columns.add(definition); - definition = new Column("col2", ColumnType.createType(PrimitiveType.INT)); + definition = new ColumnDef("col2", new TypeDef(ScalarType.createType(PrimitiveType.INT))); columns.add(definition); AddColumnsClause clause = new AddColumnsClause(columns, null, null); diff --git a/fe/src/test/java/org/apache/doris/analysis/ColumnTest.java b/fe/src/test/java/org/apache/doris/analysis/ColumnDefTest.java similarity index 69% rename from fe/src/test/java/org/apache/doris/analysis/ColumnTest.java rename to fe/src/test/java/org/apache/doris/analysis/ColumnDefTest.java index 6349399fecbeb8..0c71473dfc06aa 100644 --- a/fe/src/test/java/org/apache/doris/analysis/ColumnTest.java +++ b/fe/src/test/java/org/apache/doris/analysis/ColumnDefTest.java @@ -22,59 +22,58 @@ import org.junit.Test; import org.apache.doris.catalog.AggregateType; -import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.common.AnalysisException; -public class ColumnTest { - private ColumnType intCol; - private ColumnType stringCol; - private ColumnType floatCol; +public class ColumnDefTest { + private TypeDef intCol; + private TypeDef stringCol; + private TypeDef floatCol; @Before public void setUp() { - intCol = ColumnType.createType(PrimitiveType.INT); - stringCol = ColumnType.createChar(10); - floatCol = ColumnType.createType(PrimitiveType.FLOAT); + intCol = new TypeDef(ScalarType.createType(PrimitiveType.INT)); + stringCol = new TypeDef(ScalarType.createChar(10)); + floatCol = new TypeDef(ScalarType.createType(PrimitiveType.FLOAT)); } @Test public void testNormal() throws AnalysisException { - Column column = new Column("col", intCol); + ColumnDef column = new ColumnDef("col", intCol); column.analyze(true); Assert.assertEquals("`col` int(11) NOT NULL COMMENT \"\"", column.toString()); Assert.assertEquals("col", column.getName()); - Assert.assertEquals(PrimitiveType.INT, column.getColumnType().getType()); - Assert.assertNull(column.getAggregationType()); + Assert.assertEquals(PrimitiveType.INT, column.getType().getPrimitiveType()); + Assert.assertNull(column.getAggregateType()); Assert.assertNull(column.getDefaultValue()); // default - column = new Column("col", intCol, true, null, "10", ""); + column = new ColumnDef("col", intCol, true, null, false, "10", ""); column.analyze(true); - Assert.assertNull(column.getAggregationType()); + Assert.assertNull(column.getAggregateType()); Assert.assertEquals("10", column.getDefaultValue()); Assert.assertEquals("`col` int(11) NOT NULL DEFAULT \"10\" COMMENT \"\"", column.toSql()); // agg - column = new Column("col", floatCol, false, AggregateType.SUM, "10", ""); + column = new ColumnDef("col", floatCol, false, AggregateType.SUM, false, "10", ""); column.analyze(true); Assert.assertEquals("10", column.getDefaultValue()); - Assert.assertEquals(AggregateType.SUM, column.getAggregationType()); + Assert.assertEquals(AggregateType.SUM, column.getAggregateType()); Assert.assertEquals("`col` float SUM NOT NULL DEFAULT \"10\" COMMENT \"\"", column.toSql()); } @Test(expected = AnalysisException.class) public void testFloatKey() throws AnalysisException { - Column column = new Column("col", floatCol); + ColumnDef column = new ColumnDef("col", floatCol); column.setIsKey(true); column.analyze(true); } @Test(expected = AnalysisException.class) public void testStrSum() throws AnalysisException { - Column column = new Column("col", stringCol, false, AggregateType.SUM, null, ""); + ColumnDef column = new ColumnDef("col", stringCol, false, AggregateType.SUM, true, null, ""); column.analyze(true); } diff --git a/fe/src/test/java/org/apache/doris/analysis/CreateTableStmtTest.java b/fe/src/test/java/org/apache/doris/analysis/CreateTableStmtTest.java index d2669b50ac5be0..2cbb1c3251b567 100644 --- a/fe/src/test/java/org/apache/doris/analysis/CreateTableStmtTest.java +++ b/fe/src/test/java/org/apache/doris/analysis/CreateTableStmtTest.java @@ -18,7 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.KeysType; import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.common.AnalysisException; @@ -47,8 +47,8 @@ public class CreateTableStmtTest { // used to get default db private TableName tblName; private TableName tblNameNoDb; - private List cols; - private List invalidCols; + private List cols; + private List invalidCols; private List colsName; private List invalidColsName; private Analyzer analyzer; @@ -74,16 +74,16 @@ public void setUp() { tblNameNoDb = new TableName("", "table1"); // col cols = Lists.newArrayList(); - cols.add(new Column("col1", ColumnType.createType(PrimitiveType.INT))); - cols.add(new Column("col2", ColumnType.createChar(10))); + cols.add(new ColumnDef("col1", new TypeDef(ScalarType.createType(PrimitiveType.INT)))); + cols.add(new ColumnDef("col2", new TypeDef(ScalarType.createChar(10)))); colsName = Lists.newArrayList(); colsName.add("col1"); colsName.add("col2"); // invalid col invalidCols = Lists.newArrayList(); - invalidCols.add(new Column("col1", ColumnType.createType(PrimitiveType.INT))); - invalidCols.add(new Column("col2", ColumnType.createChar(10))); - invalidCols.add(new Column("col2", ColumnType.createChar(10))); + invalidCols.add(new ColumnDef("col1", new TypeDef(ScalarType.createType(PrimitiveType.INT)))); + invalidCols.add(new ColumnDef("col2", new TypeDef(ScalarType.createChar(10)))); + invalidCols.add(new ColumnDef("col2", new TypeDef(ScalarType.createChar(10)))); invalidColsName = Lists.newArrayList(); invalidColsName.add("col1"); invalidColsName.add("col2"); @@ -132,7 +132,7 @@ public void testNoDb() throws UserException, AnalysisException { @Test(expected = AnalysisException.class) public void testEmptyCol() throws UserException, AnalysisException { // make defalut db return empty; - List emptyCols = Lists.newArrayList(); + List emptyCols = Lists.newArrayList(); CreateTableStmt stmt = new CreateTableStmt(false, false, tblNameNoDb, emptyCols, "olap", new KeysDesc(), null, new RandomDistributionDesc(10), null, null); diff --git a/fe/src/test/java/org/apache/doris/analysis/ModifyColumnClauseTest.java b/fe/src/test/java/org/apache/doris/analysis/ModifyColumnClauseTest.java index 8f6692e52d8753..b3bf9072e1c75b 100644 --- a/fe/src/test/java/org/apache/doris/analysis/ModifyColumnClauseTest.java +++ b/fe/src/test/java/org/apache/doris/analysis/ModifyColumnClauseTest.java @@ -17,6 +17,7 @@ package org.apache.doris.analysis; +import org.apache.doris.catalog.PrimitiveType; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.BeforeClass; @@ -35,16 +36,18 @@ public static void setUp() { @Test public void testNormal() throws AnalysisException { - Column definition = EasyMock.createMock(Column.class); + Column column = new Column("tsetCol", PrimitiveType.INT); + ColumnDef definition = EasyMock.createMock(ColumnDef.class); definition.analyze(true); EasyMock.expectLastCall().anyTimes(); EasyMock.expect(definition.toSql()).andReturn("`testCol` INT").anyTimes(); + EasyMock.expect(definition.toColumn()).andReturn(column).anyTimes(); EasyMock.replay(definition); ModifyColumnClause clause = new ModifyColumnClause(definition, null, null, null); clause.analyze(analyzer); Assert.assertEquals("MODIFY COLUMN `testCol` INT", clause.toString()); - Assert.assertEquals(definition, clause.getCol()); + Assert.assertEquals(column, clause.getColumn()); Assert.assertNull(clause.getProperties()); Assert.assertNull(clause.getColPos()); Assert.assertNull(clause.getRollupName()); diff --git a/fe/src/test/java/org/apache/doris/backup/CatalogMocker.java b/fe/src/test/java/org/apache/doris/backup/CatalogMocker.java index b29981a1add944..343b5b48d825d2 100644 --- a/fe/src/test/java/org/apache/doris/backup/CatalogMocker.java +++ b/fe/src/test/java/org/apache/doris/backup/CatalogMocker.java @@ -40,6 +40,7 @@ import org.apache.doris.catalog.RangePartitionInfo; import org.apache.doris.catalog.Replica; import org.apache.doris.catalog.Replica.ReplicaState; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.SinglePartitionInfo; import org.apache.doris.catalog.Tablet; import org.apache.doris.catalog.TabletMeta; @@ -143,14 +144,14 @@ public class CatalogMocker { public static List TEST_ROLLUP_SCHEMA = Lists.newArrayList(); static { - Column k1 = new Column("k1", new ColumnType(PrimitiveType.TINYINT, -1, -1, -1), true, null, "", "key1"); - Column k2 = new Column("k2", new ColumnType(PrimitiveType.SMALLINT, -1, -1, -1), true, null, "", "key2"); - Column k3 = new Column("k3", new ColumnType(PrimitiveType.INT, -1, -1, -1), true, null, "", "key3"); - Column k4 = new Column("k4", new ColumnType(PrimitiveType.BIGINT, -1, -1, -1), true, null, "", "key4"); - Column k5 = new Column("k5", new ColumnType(PrimitiveType.LARGEINT, -1, -1, -1), true, null, "", "key5"); - Column k6 = new Column("k6", new ColumnType(PrimitiveType.DATE, -1, -1, -1), true, null, "", "key6"); - Column k7 = new Column("k7", new ColumnType(PrimitiveType.DATETIME, -1, -1, -1), true, null, "", "key7"); - Column k8 = new Column("k8", new ColumnType(PrimitiveType.DECIMAL, -1, 10, 3), true, null, "", "key8"); + Column k1 = new Column("k1", ScalarType.createType(PrimitiveType.TINYINT), true, null, "", "key1"); + Column k2 = new Column("k2", ScalarType.createType(PrimitiveType.SMALLINT), true, null, "", "key2"); + Column k3 = new Column("k3", ScalarType.createType(PrimitiveType.INT), true, null, "", "key3"); + Column k4 = new Column("k4", ScalarType.createType(PrimitiveType.BIGINT), true, null, "", "key4"); + Column k5 = new Column("k5", ScalarType.createType(PrimitiveType.LARGEINT), true, null, "", "key5"); + Column k6 = new Column("k6", ScalarType.createType(PrimitiveType.DATE), true, null, "", "key6"); + Column k7 = new Column("k7", ScalarType.createType(PrimitiveType.DATETIME), true, null, "", "key7"); + Column k8 = new Column("k8", ScalarType.createDecimalType(10, 3), true, null, "", "key8"); k1.setIsKey(true); k2.setIsKey(true); k3.setIsKey(true); @@ -160,14 +161,14 @@ public class CatalogMocker { k7.setIsKey(true); k8.setIsKey(true); - Column v1 = new Column("v1", new - ColumnType(PrimitiveType.CHAR, 10, -1, -1), false, AggregateType.REPLACE, "none", " value1"); - Column v2 = new Column("v2", new - ColumnType(PrimitiveType.FLOAT, -1, -1, -1), false, AggregateType.MAX, "none", " value2"); - Column v3 = new Column("v3", new - ColumnType(PrimitiveType.DOUBLE, -1, -1, -1), false, AggregateType.MIN, "none", " value3"); - Column v4 = new Column("v4", new - ColumnType(PrimitiveType.INT, -1, -1, -1), false, AggregateType.SUM, "", " value4"); + Column v1 = new Column("v1", + ScalarType.createChar(10), false, AggregateType.REPLACE, "none", " value1"); + Column v2 = new Column("v2", + ScalarType.createType(PrimitiveType.FLOAT), false, AggregateType.MAX, "none", " value2"); + Column v3 = new Column("v3", + ScalarType.createType(PrimitiveType.DOUBLE), false, AggregateType.MIN, "none", " value3"); + Column v4 = new Column("v4", + ScalarType.createType(PrimitiveType.INT), false, AggregateType.SUM, "", " value4"); TEST_TBL_BASE_SCHEMA.add(k1); TEST_TBL_BASE_SCHEMA.add(k2); diff --git a/fe/src/test/java/org/apache/doris/catalog/CatalogTestUtil.java b/fe/src/test/java/org/apache/doris/catalog/CatalogTestUtil.java index 49852bdc60e2d2..350cbd0b204c09 100644 --- a/fe/src/test/java/org/apache/doris/catalog/CatalogTestUtil.java +++ b/fe/src/test/java/org/apache/doris/catalog/CatalogTestUtil.java @@ -192,7 +192,7 @@ public static Database createSimpleDb(long dbId, long tableId, long partitionId, temp = new Column("k2", PrimitiveType.INT); temp.setIsKey(true); columns.add(temp); - columns.add(new Column("v", new ColumnType(PrimitiveType.DOUBLE), false, AggregateType.SUM, "0", "")); + columns.add(new Column("v", ScalarType.createType(PrimitiveType.DOUBLE), false, AggregateType.SUM, "0", "")); List keysColumn = new ArrayList(); temp = new Column("k1", PrimitiveType.INT); @@ -235,7 +235,7 @@ public static void createPartitionedEsTable(Database db) throws DdlException { Column k2 = new Column("k2", PrimitiveType.INT); k2.setIsKey(true); columns.add(k2); - columns.add(new Column("v", new ColumnType(PrimitiveType.DOUBLE), false, AggregateType.SUM, "0", "")); + columns.add(new Column("v", ScalarType.createType(PrimitiveType.DOUBLE), false, AggregateType.SUM, "0", "")); // table List partitionColumns = Lists.newArrayList(); @@ -267,7 +267,7 @@ public static void createUnPartitionedEsTable(Database db) throws DdlException { Column k2 = new Column("k2", PrimitiveType.INT); k2.setIsKey(true); columns.add(k2); - columns.add(new Column("v", new ColumnType(PrimitiveType.DOUBLE), false, AggregateType.SUM, "0", "")); + columns.add(new Column("v", ScalarType.createType(PrimitiveType.DOUBLE), false, AggregateType.SUM, "0", "")); // table List partitionColumns = Lists.newArrayList(); diff --git a/fe/src/test/java/org/apache/doris/catalog/ColumnTest.java b/fe/src/test/java/org/apache/doris/catalog/ColumnTest.java index 8a0e6558c774bf..7603fd6addc272 100644 --- a/fe/src/test/java/org/apache/doris/catalog/ColumnTest.java +++ b/fe/src/test/java/org/apache/doris/catalog/ColumnTest.java @@ -61,18 +61,18 @@ public void testSerialization() throws Exception { DataOutputStream dos = new DataOutputStream(new FileOutputStream(file)); Column column1 = new Column("user", - new ColumnType(PrimitiveType.CHAR, 20, 1, 0), false, AggregateType.SUM, "", ""); + ScalarType.createChar(20), false, AggregateType.SUM, "", ""); column1.write(dos); Column column2 = new Column("age", - new ColumnType(PrimitiveType.INT, 30, 2, 1), false, AggregateType.REPLACE, "20", ""); + ScalarType.createType(PrimitiveType.INT), false, AggregateType.REPLACE, "20", ""); column2.write(dos); Column column3 = new Column("name", PrimitiveType.BIGINT); column3.setIsKey(true); column3.write(dos); - Column column4 = new Column("age", - new ColumnType(PrimitiveType.INT, 30, 2, 1), false, AggregateType.REPLACE, "20", + Column column4 = new Column("age", + ScalarType.createType(PrimitiveType.INT), false, AggregateType.REPLACE, "20", ""); column4.write(dos); @@ -88,7 +88,7 @@ public void testSerialization() throws Exception { Assert.assertEquals(AggregateType.SUM, rColumn1.getAggregationType()); Assert.assertEquals("", rColumn1.getDefaultValue()); Assert.assertEquals(0, rColumn1.getScale()); - Assert.assertEquals(1, rColumn1.getPrecision()); + Assert.assertEquals(0, rColumn1.getPrecision()); Assert.assertEquals(20, rColumn1.getStrLen()); Assert.assertFalse(rColumn1.isAllowNull()); @@ -98,10 +98,7 @@ public void testSerialization() throws Exception { Assert.assertEquals(PrimitiveType.INT, rColumn2.getDataType()); Assert.assertEquals(AggregateType.REPLACE, rColumn2.getAggregationType()); Assert.assertEquals("20", rColumn2.getDefaultValue()); - Assert.assertEquals(1, rColumn2.getScale()); - Assert.assertEquals(2, rColumn2.getPrecision()); - Assert.assertEquals(30, rColumn2.getStrLen()); - + Column rColumn3 = Column.read(dis); Assert.assertTrue(rColumn3.equals(column3)); @@ -119,8 +116,8 @@ public void testSerialization() throws Exception { @Test(expected = DdlException.class) public void testSchemaChangeAllowed() throws DdlException { - Column oldColumn = new Column("user", new ColumnType(PrimitiveType.INT), true, null, true, "0", ""); - Column newColumn = new Column("user", new ColumnType(PrimitiveType.INT), true, null, false, "0", ""); + Column oldColumn = new Column("user", ScalarType.createType(PrimitiveType.INT), true, null, true, "0", ""); + Column newColumn = new Column("user", ScalarType.createType(PrimitiveType.INT), true, null, false, "0", ""); oldColumn.checkSchemaChangeAllowed(newColumn); Assert.fail("No exception throws."); } diff --git a/fe/src/test/java/org/apache/doris/catalog/ColumnTypeTest.java b/fe/src/test/java/org/apache/doris/catalog/ColumnTypeTest.java index 2e393c1d8e8741..edf14d0873999b 100644 --- a/fe/src/test/java/org/apache/doris/catalog/ColumnTypeTest.java +++ b/fe/src/test/java/org/apache/doris/catalog/ColumnTypeTest.java @@ -23,6 +23,7 @@ import java.io.FileInputStream; import java.io.FileOutputStream; +import org.apache.doris.analysis.TypeDef; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.FeConstants; @@ -49,96 +50,96 @@ public void setUp() { @Test public void testPrimitiveType() throws AnalysisException { - ColumnType type = ColumnType.createType(PrimitiveType.INT); + TypeDef type = TypeDef.create(PrimitiveType.INT); - type.analyze(); + type.analyze(null); - Assert.assertEquals(PrimitiveType.INT, type.getType()); + Assert.assertEquals(PrimitiveType.INT, type.getType().getPrimitiveType()); Assert.assertEquals("int(11)", type.toSql()); // equal type - ColumnType type2 = ColumnType.createType(PrimitiveType.INT); - Assert.assertEquals(type, type2); + TypeDef type2 = TypeDef.create(PrimitiveType.INT); + Assert.assertEquals(type.getType(), type2.getType()); // not equal type - ColumnType type3 = ColumnType.createType(PrimitiveType.BIGINT); - Assert.assertNotSame(type, type3); + TypeDef type3 = TypeDef.create(PrimitiveType.BIGINT); + Assert.assertNotSame(type.getType(), type3.getType()); } @Test(expected = AnalysisException.class) public void testInvalidType() throws AnalysisException { - ColumnType type = ColumnType.createType(PrimitiveType.INVALID_TYPE); - type.analyze(); + TypeDef type = TypeDef.create(PrimitiveType.INVALID_TYPE); + type.analyze(null); } @Test public void testCharType() throws AnalysisException { - ColumnType type = ColumnType.createVarchar(10); - type.analyze(); + TypeDef type = TypeDef.createVarchar(10); + type.analyze(null); Assert.assertEquals("varchar(10)", type.toString()); - Assert.assertEquals(PrimitiveType.VARCHAR, type.getType()); - Assert.assertEquals(10, type.getLen()); + Assert.assertEquals(PrimitiveType.VARCHAR, type.getType().getPrimitiveType()); + Assert.assertEquals(10, ((ScalarType) type.getType()).getLength()); // equal type - ColumnType type2 = ColumnType.createVarchar(10); - Assert.assertEquals(type, type2); + TypeDef type2 = TypeDef.createVarchar(10); + Assert.assertEquals(type.getType(), type2.getType()); // different type - ColumnType type3 = ColumnType.createVarchar(3); - Assert.assertNotSame(type, type3); + TypeDef type3 = TypeDef.createVarchar(3); + Assert.assertNotEquals(type.getType(), type3.getType()); // different type - ColumnType type4 = ColumnType.createType(PrimitiveType.BIGINT); - Assert.assertNotSame(type, type4); + TypeDef type4 = TypeDef.create(PrimitiveType.BIGINT); + Assert.assertNotEquals(type.getType(), type4.getType()); } @Test(expected = AnalysisException.class) public void testCharInvalid() throws AnalysisException { - ColumnType type = ColumnType.createVarchar(0); - type.analyze(); + TypeDef type = TypeDef.createVarchar(0); + type.analyze(null); Assert.fail("No Exception throws"); } @Test public void testDecimal() throws AnalysisException { - ColumnType type = ColumnType.createDecimal(12, 5); - type.analyze(); + TypeDef type = TypeDef.createDecimal(12, 5); + type.analyze(null); Assert.assertEquals("decimal(12, 5)", type.toString()); - Assert.assertEquals(PrimitiveType.DECIMAL, type.getType()); - Assert.assertEquals(12, type.getPrecision()); - Assert.assertEquals(5, type.getScale()); + Assert.assertEquals(PrimitiveType.DECIMAL, type.getType().getPrimitiveType()); + Assert.assertEquals(12, ((ScalarType) type.getType()).getScalarPrecision()); + Assert.assertEquals(5, ((ScalarType) type.getType()).getScalarScale()); // equal type - ColumnType type2 = ColumnType.createDecimal(12, 5); - Assert.assertEquals(type, type2); + TypeDef type2 = TypeDef.createDecimal(12, 5); + Assert.assertEquals(type.getType(), type2.getType()); // different type - ColumnType type3 = ColumnType.createDecimal(11, 5); - Assert.assertNotSame(type, type3); - type3 = ColumnType.createDecimal(12, 4); - Assert.assertNotSame(type, type3); + TypeDef type3 = TypeDef.createDecimal(11, 5); + Assert.assertNotEquals(type.getType(), type3.getType()); + type3 = TypeDef.createDecimal(12, 4); + Assert.assertNotEquals(type.getType(), type3.getType()); // different type - ColumnType type4 = ColumnType.createType(PrimitiveType.BIGINT); - Assert.assertNotSame(type, type4); + TypeDef type4 = TypeDef.create(PrimitiveType.BIGINT); + Assert.assertNotEquals(type.getType(), type4.getType()); } @Test(expected = AnalysisException.class) public void testDecimalPreFail() throws AnalysisException { - ColumnType type = ColumnType.createDecimal(28, 3); - type.analyze(); + TypeDef type = TypeDef.createDecimal(28, 3); + type.analyze(null); } @Test(expected = AnalysisException.class) public void testDecimalScaleFail() throws AnalysisException { - ColumnType type = ColumnType.createDecimal(27, 10); - type.analyze(); + TypeDef type = TypeDef.createDecimal(27, 10); + type.analyze(null); } @Test(expected = AnalysisException.class) public void testDecimalScaleLargeFial() throws AnalysisException { - ColumnType type = ColumnType.createDecimal(8, 9); - type.analyze(); + TypeDef type = TypeDef.createDecimal(8, 9); + type.analyze(null); } @Test @@ -147,37 +148,27 @@ public void testSerialization() throws Exception { File file = new File("./columnType"); file.createNewFile(); DataOutputStream dos = new DataOutputStream(new FileOutputStream(file)); + + ScalarType type1 = Type.NULL; + ColumnType.write(dos, type1); - ColumnType type1 = new ColumnType(); - type1.write(dos); - - ColumnType type2 = new ColumnType(PrimitiveType.BIGINT); - type2.write(dos); - - ColumnType type3 = new ColumnType(PrimitiveType.DECIMAL, 1, 1, 1); - type3.write(dos); - - ColumnType type4 = new ColumnType(null, 1, 1, 1); - type4.write(dos); - + ScalarType type2 = ScalarType.createType(PrimitiveType.BIGINT); + ColumnType.write(dos, type2); + + ScalarType type3 = ScalarType.createDecimalType(1, 1); + ColumnType.write(dos, type3); + // 2. Read objects from file DataInputStream dis = new DataInputStream(new FileInputStream(file)); - ColumnType rType1 = new ColumnType(); - rType1.readFields(dis); + Type rType1 = ColumnType.read(dis); Assert.assertTrue(rType1.equals(type1)); - ColumnType rType2 = new ColumnType(); - rType2.readFields(dis); + Type rType2 = ColumnType.read(dis); Assert.assertTrue(rType2.equals(type2)); - ColumnType rType3 = new ColumnType(); - rType3.readFields(dis); + Type rType3 = ColumnType.read(dis); Assert.assertTrue(rType3.equals(type3)); - - ColumnType rType4 = new ColumnType(); - rType4.readFields(dis); - Assert.assertTrue(rType4.equals(type4)); - + Assert.assertFalse(type1.equals(this)); // 3. delete files diff --git a/fe/src/test/java/org/apache/doris/catalog/CreateTableTest.java b/fe/src/test/java/org/apache/doris/catalog/CreateTableTest.java index a9738328ee33cc..fc7f8359b8fbdc 100644 --- a/fe/src/test/java/org/apache/doris/catalog/CreateTableTest.java +++ b/fe/src/test/java/org/apache/doris/catalog/CreateTableTest.java @@ -18,10 +18,12 @@ package org.apache.doris.catalog; import org.apache.doris.analysis.Analyzer; +import org.apache.doris.analysis.ColumnDef; import org.apache.doris.analysis.CreateTableStmt; import org.apache.doris.analysis.KeysDesc; import org.apache.doris.analysis.RandomDistributionDesc; import org.apache.doris.analysis.TableName; +import org.apache.doris.analysis.TypeDef; import org.apache.doris.common.DdlException; import org.apache.doris.common.FeMetaVersion; import org.apache.doris.system.Backend; @@ -59,7 +61,7 @@ public class CreateTableTest { private String tableName = "testTbl"; private TableName dbTableName; - private List cols; + private List columnDefs; private List colsName; private Analyzer analyzer; @@ -79,9 +81,9 @@ public void setUp() { // table name dbTableName = new TableName(dbName, tableName); // col - cols = Lists.newArrayList(); - cols.add(new Column("col1", ColumnType.createType(PrimitiveType.INT))); - cols.add(new Column("col2", ColumnType.createVarchar(10))); + columnDefs = Lists.newArrayList(); + columnDefs.add(new ColumnDef("col1", new TypeDef(ScalarType.createType(PrimitiveType.INT)))); + columnDefs.add(new ColumnDef("col2", new TypeDef(ScalarType.createVarchar(10)))); colsName = Lists.newArrayList(); colsName.add("col1"); colsName.add("col2"); @@ -100,10 +102,12 @@ public void createTableTest_invalidColumn() throws Exception { catalog = Catalog.getInstance(); // 1. error order - List invalidCols1 = Lists.newArrayList(); - invalidCols1.add(new Column("v1", ColumnType.createType(PrimitiveType.INT), false, AggregateType.SUM, "1", - "")); - invalidCols1.add(new Column("k1", ColumnType.createVarchar(10))); + List invalidCols1 = Lists.newArrayList(); + invalidCols1.add(new ColumnDef( + "v1", new TypeDef(ScalarType.createType(PrimitiveType.INT)), false, + AggregateType.SUM, false, "1", + "")); + invalidCols1.add(new ColumnDef("k1", new TypeDef(ScalarType.createVarchar(10)))); invalidCols1.get(1).setIsKey(true); CreateTableStmt stmt1 = new CreateTableStmt(false, false, dbTableName, invalidCols1, "olap", new KeysDesc(), null, @@ -115,10 +119,12 @@ public void createTableTest_invalidColumn() throws Exception { } // 2. no key column - List invalidCols2 = Lists.newArrayList(); - invalidCols2.add(new Column("v1", ColumnType.createType(PrimitiveType.INT), false, AggregateType.SUM, "1", - "")); - invalidCols2.add(new Column("v2", ColumnType.createVarchar(10), false, AggregateType.REPLACE, "abc", "")); + List invalidCols2 = Lists.newArrayList(); + invalidCols2.add(new ColumnDef( + "v1", new TypeDef(ScalarType.createType(PrimitiveType.INT)), false, AggregateType.SUM, + false, "1", "")); + invalidCols2.add(new ColumnDef("v2", new TypeDef(ScalarType.createVarchar(10)), false, + AggregateType.REPLACE, false, "abc", "")); CreateTableStmt stmt2 = new CreateTableStmt(false, false, dbTableName, invalidCols2, "olap", new KeysDesc(), null, new RandomDistributionDesc(10), null, null); @@ -138,7 +144,7 @@ public void olapDbNotFoundTest() throws Exception { EasyMock.expectLastCall().andReturn(null); EasyMock.replay(catalog); - CreateTableStmt stmt = new CreateTableStmt(false, false, dbTableName, cols, "olap", + CreateTableStmt stmt = new CreateTableStmt(false, false, dbTableName, columnDefs, "olap", new KeysDesc(KeysType.AGG_KEYS, colsName), null, new RandomDistributionDesc(10), null, null); try { @@ -161,7 +167,7 @@ public void olapTableExistsTest() throws Exception { EasyMock.expectLastCall().andReturn(db); EasyMock.replay(catalog); - CreateTableStmt stmt = new CreateTableStmt(false, false, dbTableName, cols, "olap", + CreateTableStmt stmt = new CreateTableStmt(false, false, dbTableName, columnDefs, "olap", new KeysDesc(KeysType.AGG_KEYS, colsName), null, new RandomDistributionDesc(10), null, null); @@ -214,7 +220,7 @@ public List answer() throws Throwable { .andReturn((short) 2).anyTimes(); PowerMock.replay(Catalog.class); - CreateTableStmt stmt1 = new CreateTableStmt(false, false, dbTableName, cols, "olap", + CreateTableStmt stmt1 = new CreateTableStmt(false, false, dbTableName, columnDefs, "olap", new KeysDesc(KeysType.AGG_KEYS, colsName), null, new RandomDistributionDesc(1), null, null); try { @@ -266,12 +272,12 @@ public List answer() throws Throwable { .andReturn((short) 2).anyTimes(); PowerMock.replay(Catalog.class); - List cols2 = new ArrayList(); + List cols2 = Lists.newArrayList(); // invalid property - cols2.add(new Column("k1_int", ColumnType.createType(PrimitiveType.INT))); - cols2.add(new Column("k2_varchar", ColumnType.createType(PrimitiveType.VARCHAR))); - cols2.add(new Column("v1", ColumnType.createType(PrimitiveType.INT), - true, AggregateType.MAX, "0", "")); + cols2.add(new ColumnDef("k1_int", new TypeDef(ScalarType.createType(PrimitiveType.INT)))); + cols2.add(new ColumnDef("k2_varchar", new TypeDef(ScalarType.createType(PrimitiveType.VARCHAR)))); + cols2.add(new ColumnDef("v1", new TypeDef(ScalarType.createType(PrimitiveType.INT)), + true, AggregateType.MAX, false, "0", "")); cols2.get(0).setIsKey(true); cols2.get(1).setIsKey(true); @@ -296,10 +302,10 @@ public List answer() throws Throwable { // 2. first is varchar properties.clear(); cols2.clear(); - cols2.add(new Column("k1_varchar", ColumnType.createType(PrimitiveType.VARCHAR))); - cols2.add(new Column("k2_varchar", ColumnType.createType(PrimitiveType.VARCHAR))); - cols2.add(new Column("v1", ColumnType.createType(PrimitiveType.INT), - true, AggregateType.MAX, "0", "")); + cols2.add(new ColumnDef("k1_varchar", new TypeDef(ScalarType.createType(PrimitiveType.VARCHAR)))); + cols2.add(new ColumnDef("k2_varchar", new TypeDef(ScalarType.createType(PrimitiveType.VARCHAR)))); + cols2.add(new ColumnDef("v1", new TypeDef(ScalarType.createType(PrimitiveType.INT)), + true, AggregateType.MAX, false, "0", "")); stmt1 = new CreateTableStmt(false, false, dbTableName, cols2, "olap", new KeysDesc(KeysType.AGG_KEYS, cols2Name), null, new RandomDistributionDesc(1), null, null); @@ -352,7 +358,7 @@ public List answer() throws Throwable { .andReturn((short) 2).anyTimes(); PowerMock.replay(Catalog.class); - CreateTableStmt stmt1 = new CreateTableStmt(false, false, dbTableName, cols, "olap", + CreateTableStmt stmt1 = new CreateTableStmt(false, false, dbTableName, columnDefs, "olap", new KeysDesc(KeysType.AGG_KEYS, colsName), null, new RandomDistributionDesc(1), null, null); diff --git a/fe/src/test/java/org/apache/doris/catalog/DatabaseTest.java b/fe/src/test/java/org/apache/doris/catalog/DatabaseTest.java index aa308f5ac23977..557d8f36ac76f7 100644 --- a/fe/src/test/java/org/apache/doris/catalog/DatabaseTest.java +++ b/fe/src/test/java/org/apache/doris/catalog/DatabaseTest.java @@ -148,21 +148,21 @@ public void testSerialization() throws Exception { Database db2 = new Database(2, "db2"); List columns = new ArrayList(); columns.add(new Column("column2", - ColumnType.createType(PrimitiveType.TINYINT), false, AggregateType.MIN, "", "")); + ScalarType.createType(PrimitiveType.TINYINT), false, AggregateType.MIN, "", "")); columns.add(new Column("column3", - ColumnType.createType(PrimitiveType.SMALLINT), false, AggregateType.SUM, "", "")); + ScalarType.createType(PrimitiveType.SMALLINT), false, AggregateType.SUM, "", "")); columns.add(new Column("column4", - ColumnType.createType(PrimitiveType.INT), false, AggregateType.REPLACE, "", "")); + ScalarType.createType(PrimitiveType.INT), false, AggregateType.REPLACE, "", "")); columns.add(new Column("column5", - ColumnType.createType(PrimitiveType.BIGINT), false, AggregateType.REPLACE, "", "")); + ScalarType.createType(PrimitiveType.BIGINT), false, AggregateType.REPLACE, "", "")); columns.add(new Column("column6", - ColumnType.createType(PrimitiveType.FLOAT), false, AggregateType.REPLACE, "", "")); + ScalarType.createType(PrimitiveType.FLOAT), false, AggregateType.REPLACE, "", "")); columns.add(new Column("column7", - ColumnType.createType(PrimitiveType.DOUBLE), false, AggregateType.REPLACE, "", "")); - columns.add(new Column("column8", ColumnType.createChar(10), true, null, "", "")); - columns.add(new Column("column9", ColumnType.createVarchar(10), true, null, "", "")); - columns.add(new Column("column10", ColumnType.createType(PrimitiveType.DATE), true, null, "", "")); - columns.add(new Column("column11", ColumnType.createType(PrimitiveType.DATETIME), true, null, "", "")); + ScalarType.createType(PrimitiveType.DOUBLE), false, AggregateType.REPLACE, "", "")); + columns.add(new Column("column8", ScalarType.createChar(10), true, null, "", "")); + columns.add(new Column("column9", ScalarType.createVarchar(10), true, null, "", "")); + columns.add(new Column("column10", ScalarType.createType(PrimitiveType.DATE), true, null, "", "")); + columns.add(new Column("column11", ScalarType.createType(PrimitiveType.DATETIME), true, null, "", "")); MaterializedIndex index = new MaterializedIndex(1, IndexState.NORMAL); Partition partition = new Partition(20000L, "table", index, new RandomDistributionInfo(10)); diff --git a/fe/src/test/java/org/apache/doris/catalog/MaterializedIndexTest.java b/fe/src/test/java/org/apache/doris/catalog/MaterializedIndexTest.java index 5bc0d86d6fee39..754383ff6ada47 100644 --- a/fe/src/test/java/org/apache/doris/catalog/MaterializedIndexTest.java +++ b/fe/src/test/java/org/apache/doris/catalog/MaterializedIndexTest.java @@ -54,9 +54,9 @@ public void setUp() { indexId = 10000; columns = new LinkedList(); - columns.add(new Column("k1", ColumnType.createType(PrimitiveType.TINYINT), true, null, "", "")); - columns.add(new Column("k2", ColumnType.createType(PrimitiveType.SMALLINT), true, null, "", "")); - columns.add(new Column("v1", ColumnType.createType(PrimitiveType.INT), false, AggregateType.REPLACE, "", "")); + columns.add(new Column("k1", ScalarType.createType(PrimitiveType.TINYINT), true, null, "", "")); + columns.add(new Column("k2", ScalarType.createType(PrimitiveType.SMALLINT), true, null, "", "")); + columns.add(new Column("v1", ScalarType.createType(PrimitiveType.INT), false, AggregateType.REPLACE, "", "")); index = new MaterializedIndex(indexId, IndexState.NORMAL); catalog = EasyMock.createMock(Catalog.class); diff --git a/fe/src/test/java/org/apache/doris/catalog/PartitionKeyTest.java b/fe/src/test/java/org/apache/doris/catalog/PartitionKeyTest.java index 6bd8c63b331caf..ad1702c4b89097 100644 --- a/fe/src/test/java/org/apache/doris/catalog/PartitionKeyTest.java +++ b/fe/src/test/java/org/apache/doris/catalog/PartitionKeyTest.java @@ -154,17 +154,17 @@ public void testSerialization() throws Exception { List keys = new ArrayList(); List columns = new ArrayList(); keys.add("100"); - columns.add(new Column("column2", ColumnType.createType(PrimitiveType.TINYINT), true, null, "", "")); + columns.add(new Column("column2", ScalarType.createType(PrimitiveType.TINYINT), true, null, "", "")); keys.add("101"); - columns.add(new Column("column3", ColumnType.createType(PrimitiveType.SMALLINT), true, null, "", "")); + columns.add(new Column("column3", ScalarType.createType(PrimitiveType.SMALLINT), true, null, "", "")); keys.add("102"); - columns.add(new Column("column4", ColumnType.createType(PrimitiveType.INT), true, null, "", "")); + columns.add(new Column("column4", ScalarType.createType(PrimitiveType.INT), true, null, "", "")); keys.add("103"); - columns.add(new Column("column5", ColumnType.createType(PrimitiveType.BIGINT), true, null, "", "")); + columns.add(new Column("column5", ScalarType.createType(PrimitiveType.BIGINT), true, null, "", "")); keys.add("2014-12-26"); - columns.add(new Column("column10", ColumnType.createType(PrimitiveType.DATE), true, null, "", "")); + columns.add(new Column("column10", ScalarType.createType(PrimitiveType.DATE), true, null, "", "")); keys.add("2014-12-27 11:12:13"); - columns.add(new Column("column11", ColumnType.createType(PrimitiveType.DATETIME), true, null, "", "")); + columns.add(new Column("column11", ScalarType.createType(PrimitiveType.DATETIME), true, null, "", "")); PartitionKey key = PartitionKey.createPartitionKey(keys, columns); key.write(dos); diff --git a/fe/src/test/java/org/apache/doris/catalog/RangePartitionInfoTest.java b/fe/src/test/java/org/apache/doris/catalog/RangePartitionInfoTest.java index bb5ee2e90e3a8c..dd98ac73b2c44d 100644 --- a/fe/src/test/java/org/apache/doris/catalog/RangePartitionInfoTest.java +++ b/fe/src/test/java/org/apache/doris/catalog/RangePartitionInfoTest.java @@ -45,7 +45,7 @@ public void setUp() { @Test(expected = DdlException.class) public void testTinyInt() throws DdlException, AnalysisException { - Column k1 = new Column("k1", new ColumnType(PrimitiveType.TINYINT), true, null, "", ""); + Column k1 = new Column("k1", new ScalarType(PrimitiveType.TINYINT), true, null, "", ""); partitionColumns.add(k1); singleRangePartitionDescs.add(new SingleRangePartitionDesc(false, "p1", @@ -62,7 +62,7 @@ public void testTinyInt() throws DdlException, AnalysisException { @Test(expected = DdlException.class) public void testSmallInt() throws DdlException, AnalysisException { - Column k1 = new Column("k1", new ColumnType(PrimitiveType.SMALLINT), true, null, "", ""); + Column k1 = new Column("k1", new ScalarType(PrimitiveType.SMALLINT), true, null, "", ""); partitionColumns.add(k1); singleRangePartitionDescs.add(new SingleRangePartitionDesc(false, "p1", @@ -78,7 +78,7 @@ public void testSmallInt() throws DdlException, AnalysisException { @Test(expected = DdlException.class) public void testInt() throws DdlException, AnalysisException { - Column k1 = new Column("k1", new ColumnType(PrimitiveType.INT), true, null, "", ""); + Column k1 = new Column("k1", new ScalarType(PrimitiveType.INT), true, null, "", ""); partitionColumns.add(k1); singleRangePartitionDescs.add(new SingleRangePartitionDesc(false, "p1", @@ -95,7 +95,7 @@ public void testInt() throws DdlException, AnalysisException { @Test(expected = DdlException.class) public void testBigInt() throws DdlException, AnalysisException { - Column k1 = new Column("k1", new ColumnType(PrimitiveType.BIGINT), true, null, "", ""); + Column k1 = new Column("k1", new ScalarType(PrimitiveType.BIGINT), true, null, "", ""); partitionColumns.add(k1); singleRangePartitionDescs.add(new SingleRangePartitionDesc(false, "p1", new PartitionKeyDesc(Lists @@ -117,7 +117,7 @@ public void testBigInt() throws DdlException, AnalysisException { @Test public void testBigIntNormal() throws DdlException, AnalysisException { - Column k1 = new Column("k1", new ColumnType(PrimitiveType.BIGINT), true, null, "", ""); + Column k1 = new Column("k1", new ScalarType(PrimitiveType.BIGINT), true, null, "", ""); partitionColumns.add(k1); singleRangePartitionDescs.add(new SingleRangePartitionDesc(false, "p1", new PartitionKeyDesc(Lists diff --git a/fe/src/test/java/org/apache/doris/catalog/TableTest.java b/fe/src/test/java/org/apache/doris/catalog/TableTest.java index fa6eb8ec9d4f53..7cc178e8f7e9ec 100644 --- a/fe/src/test/java/org/apache/doris/catalog/TableTest.java +++ b/fe/src/test/java/org/apache/doris/catalog/TableTest.java @@ -63,21 +63,21 @@ public void testSerialization() throws Exception { List columns = new ArrayList(); columns.add(new Column("column2", - ColumnType.createType(PrimitiveType.TINYINT), false, AggregateType.MIN, "", "")); + ScalarType.createType(PrimitiveType.TINYINT), false, AggregateType.MIN, "", "")); columns.add(new Column("column3", - ColumnType.createType(PrimitiveType.SMALLINT), false, AggregateType.SUM, "", "")); + ScalarType.createType(PrimitiveType.SMALLINT), false, AggregateType.SUM, "", "")); columns.add(new Column("column4", - ColumnType.createType(PrimitiveType.INT), false, AggregateType.REPLACE, "", "")); + ScalarType.createType(PrimitiveType.INT), false, AggregateType.REPLACE, "", "")); columns.add(new Column("column5", - ColumnType.createType(PrimitiveType.BIGINT), false, AggregateType.REPLACE, "", "")); + ScalarType.createType(PrimitiveType.BIGINT), false, AggregateType.REPLACE, "", "")); columns.add(new Column("column6", - ColumnType.createType(PrimitiveType.FLOAT), false, AggregateType.REPLACE, "", "")); + ScalarType.createType(PrimitiveType.FLOAT), false, AggregateType.REPLACE, "", "")); columns.add(new Column("column7", - ColumnType.createType(PrimitiveType.DOUBLE), false, AggregateType.REPLACE, "", "")); - columns.add(new Column("column8", ColumnType.createChar(10), true, null, "", "")); - columns.add(new Column("column9", ColumnType.createVarchar(10), true, null, "", "")); - columns.add(new Column("column10", ColumnType.createType(PrimitiveType.DATE), true, null, "", "")); - columns.add(new Column("column11", ColumnType.createType(PrimitiveType.DATETIME), true, null, "", "")); + ScalarType.createType(PrimitiveType.DOUBLE), false, AggregateType.REPLACE, "", "")); + columns.add(new Column("column8", ScalarType.createChar(10), true, null, "", "")); + columns.add(new Column("column9", ScalarType.createVarchar(10), true, null, "", "")); + columns.add(new Column("column10", ScalarType.createType(PrimitiveType.DATE), true, null, "", "")); + columns.add(new Column("column11", ScalarType.createType(PrimitiveType.DATETIME), true, null, "", "")); Table table1 = new OlapTable(1000L, "group1", columns, KeysType.AGG_KEYS, new SinglePartitionInfo(), new RandomDistributionInfo(10)); diff --git a/fe/src/test/java/org/apache/doris/common/PropertyAnalyzerTest.java b/fe/src/test/java/org/apache/doris/common/PropertyAnalyzerTest.java index a1e648565b3e81..45430e4da5dcc8 100644 --- a/fe/src/test/java/org/apache/doris/common/PropertyAnalyzerTest.java +++ b/fe/src/test/java/org/apache/doris/common/PropertyAnalyzerTest.java @@ -19,7 +19,7 @@ import org.apache.doris.catalog.AggregateType; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.common.util.PropertyAnalyzer; @@ -42,9 +42,9 @@ public void testBfColumns() throws AnalysisException { columns.add(new Column("k1", PrimitiveType.INT)); columns.add(new Column("k2", PrimitiveType.TINYINT)); columns.add(new Column("v1", - ColumnType.createType(PrimitiveType.VARCHAR), false, AggregateType.REPLACE, "", "")); + ScalarType.createType(PrimitiveType.VARCHAR), false, AggregateType.REPLACE, "", "")); columns.add(new Column("v2", - ColumnType.createType(PrimitiveType.BIGINT), false, AggregateType.SUM, "0", "")); + ScalarType.createType(PrimitiveType.BIGINT), false, AggregateType.SUM, "0", "")); columns.get(0).setIsKey(true); columns.get(1).setIsKey(true); @@ -61,8 +61,8 @@ public void testBfColumnsError() { columns.add(new Column("k1", PrimitiveType.INT)); columns.add(new Column("k2", PrimitiveType.TINYINT)); columns.add(new Column("v1", - ColumnType.createType(PrimitiveType.VARCHAR), false, AggregateType.REPLACE, "", "")); - columns.add(new Column("v2", ColumnType.createType(PrimitiveType.BIGINT), false, AggregateType.SUM, "0", "")); + ScalarType.createType(PrimitiveType.VARCHAR), false, AggregateType.REPLACE, "", "")); + columns.add(new Column("v2", ScalarType.createType(PrimitiveType.BIGINT), false, AggregateType.SUM, "0", "")); columns.get(0).setIsKey(true); columns.get(1).setIsKey(true); diff --git a/fe/src/test/java/org/apache/doris/common/util/UnitTestUtil.java b/fe/src/test/java/org/apache/doris/common/util/UnitTestUtil.java index e4c3ccb7cd1c4c..2dc2914d0040f2 100644 --- a/fe/src/test/java/org/apache/doris/common/util/UnitTestUtil.java +++ b/fe/src/test/java/org/apache/doris/common/util/UnitTestUtil.java @@ -19,7 +19,6 @@ import org.apache.doris.catalog.AggregateType; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; import org.apache.doris.catalog.DataProperty; import org.apache.doris.catalog.Database; import org.apache.doris.catalog.KeysType; @@ -32,6 +31,7 @@ import org.apache.doris.catalog.RandomDistributionInfo; import org.apache.doris.catalog.Replica; import org.apache.doris.catalog.Replica.ReplicaState; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.SinglePartitionInfo; import org.apache.doris.catalog.Tablet; import org.apache.doris.catalog.TabletMeta; @@ -94,7 +94,7 @@ public static Database createDb(long dbId, long tableId, long partitionId, long temp = new Column("k2", PrimitiveType.INT); temp.setIsKey(true); columns.add(temp); - columns.add(new Column("v", new ColumnType(PrimitiveType.DOUBLE), false, AggregateType.SUM, "0", "")); + columns.add(new Column("v", ScalarType.createType(PrimitiveType.DOUBLE), false, AggregateType.SUM, "0", "")); List keysColumn = new ArrayList(); temp = new Column("k1", PrimitiveType.INT); diff --git a/fe/src/test/java/org/apache/doris/persist/CreateTableInfoTest.java b/fe/src/test/java/org/apache/doris/persist/CreateTableInfoTest.java index 211f6041fb5c3d..13b154d13516b7 100644 --- a/fe/src/test/java/org/apache/doris/persist/CreateTableInfoTest.java +++ b/fe/src/test/java/org/apache/doris/persist/CreateTableInfoTest.java @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.List; +import org.apache.doris.catalog.ScalarType; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Before; @@ -38,7 +39,7 @@ import org.apache.doris.catalog.AggregateType; import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.KeysType; import org.apache.doris.catalog.MaterializedIndex; import org.apache.doris.catalog.OlapTable; @@ -74,21 +75,21 @@ public void testSerialization() throws Exception { List columns = new ArrayList(); columns.add(new Column("column2", - ColumnType.createType(PrimitiveType.TINYINT), false, AggregateType.MIN, "", "")); + ScalarType.createType(PrimitiveType.TINYINT), false, AggregateType.MIN, "", "")); columns.add(new Column("column3", - ColumnType.createType(PrimitiveType.SMALLINT), false, AggregateType.SUM, "", "")); + ScalarType.createType(PrimitiveType.SMALLINT), false, AggregateType.SUM, "", "")); columns.add(new Column("column4", - ColumnType.createType(PrimitiveType.INT), false, AggregateType.REPLACE, "", "")); + ScalarType.createType(PrimitiveType.INT), false, AggregateType.REPLACE, "", "")); columns.add(new Column("column5", - ColumnType.createType(PrimitiveType.BIGINT), false, AggregateType.REPLACE, "", "")); - columns.add(new Column("column6", - ColumnType.createType(PrimitiveType.FLOAT), false, AggregateType.REPLACE, "", "")); - columns.add(new Column("column7", - ColumnType.createType(PrimitiveType.DOUBLE), false, AggregateType.REPLACE, "", "")); - columns.add(new Column("column8", ColumnType.createChar(10), true, null, "", "")); - columns.add(new Column("column9", ColumnType.createVarchar(10), true, null, "", "")); - columns.add(new Column("column10", ColumnType.createType(PrimitiveType.DATE), true, null, "", "")); - columns.add(new Column("column11", ColumnType.createType(PrimitiveType.DATETIME), true, null, "", "")); + ScalarType.createType(PrimitiveType.BIGINT), false, AggregateType.REPLACE, "", "")); + columns.add(new Column("column6", + ScalarType.createType(PrimitiveType.FLOAT), false, AggregateType.REPLACE, "", "")); + columns.add(new Column("column7", + ScalarType.createType(PrimitiveType.DOUBLE), false, AggregateType.REPLACE, "", "")); + columns.add(new Column("column8", ScalarType.createChar(10), true, null, "", "")); + columns.add(new Column("column9", ScalarType.createVarchar(10), true, null, "", "")); + columns.add(new Column("column10", ScalarType.createType(PrimitiveType.DATE), true, null, "", "")); + columns.add(new Column("column11", ScalarType.createType(PrimitiveType.DATETIME), true, null, "", "")); MaterializedIndex index = new MaterializedIndex(1, IndexState.NORMAL); RandomDistributionInfo distributionInfo = new RandomDistributionInfo(10); diff --git a/fe/src/test/java/org/apache/doris/planner/OlapTableSinkTest.java b/fe/src/test/java/org/apache/doris/planner/OlapTableSinkTest.java index 1346320eb8ad00..405c5234d44bbb 100644 --- a/fe/src/test/java/org/apache/doris/planner/OlapTableSinkTest.java +++ b/fe/src/test/java/org/apache/doris/planner/OlapTableSinkTest.java @@ -21,7 +21,6 @@ import org.apache.doris.analysis.SlotDescriptor; import org.apache.doris.analysis.TupleDescriptor; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; import org.apache.doris.catalog.HashDistributionInfo; import org.apache.doris.catalog.MaterializedIndex; import org.apache.doris.catalog.OlapTable; @@ -30,6 +29,7 @@ import org.apache.doris.catalog.PartitionType; import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.catalog.RangePartitionInfo; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.SinglePartitionInfo; import org.apache.doris.catalog.Tablet; import org.apache.doris.common.UserException; @@ -66,11 +66,11 @@ private TupleDescriptor getTuple() { // k2 SlotDescriptor k2 = descTable.addSlotDescriptor(tuple); - k2.setColumn(new Column("k2", new ColumnType(PrimitiveType.VARCHAR, 25, 12, 1))); + k2.setColumn(new Column("k2", ScalarType.createVarchar(25))); k2.setIsMaterialized(true); // v1 SlotDescriptor v1 = descTable.addSlotDescriptor(tuple); - v1.setColumn(new Column("v1", new ColumnType(PrimitiveType.VARCHAR, 25, 12, 1))); + v1.setColumn(new Column("v1", ScalarType.createVarchar(25))); v1.setIsMaterialized(true); // v2 SlotDescriptor v2 = descTable.addSlotDescriptor(tuple); diff --git a/fe/src/test/java/org/apache/doris/planner/StreamLoadScanNodeTest.java b/fe/src/test/java/org/apache/doris/planner/StreamLoadScanNodeTest.java index 1f2d9f79e27cf7..919c85c0ab3545 100644 --- a/fe/src/test/java/org/apache/doris/planner/StreamLoadScanNodeTest.java +++ b/fe/src/test/java/org/apache/doris/planner/StreamLoadScanNodeTest.java @@ -26,11 +26,11 @@ import org.apache.doris.catalog.AggregateType; import org.apache.doris.catalog.Catalog; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; import org.apache.doris.catalog.Function; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.catalog.ScalarFunction; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.Type; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.UserException; @@ -82,7 +82,7 @@ List getBaseSchema() { k1.setIsAllowNull(false); columns.add(k1); - Column k2 = new Column("k2", new ColumnType(PrimitiveType.VARCHAR, 25, 10, 5)); + Column k2 = new Column("k2", ScalarType.createVarchar(25)); k2.setIsKey(true); k2.setIsAllowNull(true); columns.add(k2); @@ -94,7 +94,7 @@ List getBaseSchema() { columns.add(v1); - Column v2 = new Column("v2", new ColumnType(PrimitiveType.VARCHAR, 25, 10, 5)); + Column v2 = new Column("v2", ScalarType.createVarchar(25)); v2.setIsKey(false); v2.setAggregationType(AggregateType.REPLACE, false); v2.setIsAllowNull(false); diff --git a/fe/src/test/java/org/apache/doris/qe/ShowResultSetMetaDataTest.java b/fe/src/test/java/org/apache/doris/qe/ShowResultSetMetaDataTest.java index a817064c8acc45..d8965cfbf5d70c 100644 --- a/fe/src/test/java/org/apache/doris/qe/ShowResultSetMetaDataTest.java +++ b/fe/src/test/java/org/apache/doris/qe/ShowResultSetMetaDataTest.java @@ -18,7 +18,7 @@ package org.apache.doris.qe; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.PrimitiveType; import org.junit.Assert; @@ -31,8 +31,8 @@ public void testNormal() { Assert.assertEquals(0, metaData.getColumnCount()); metaData = ShowResultSetMetaData.builder() - .addColumn(new Column("col1", ColumnType.createType(PrimitiveType.INT))) - .addColumn(new Column("col2", ColumnType.createType(PrimitiveType.INT))) + .addColumn(new Column("col1", ScalarType.createType(PrimitiveType.INT))) + .addColumn(new Column("col2", ScalarType.createType(PrimitiveType.INT))) .build(); Assert.assertEquals(2, metaData.getColumnCount()); diff --git a/fe/src/test/java/org/apache/doris/task/AgentTaskTest.java b/fe/src/test/java/org/apache/doris/task/AgentTaskTest.java index 3177996c92e3fb..c79d27f91ee150 100644 --- a/fe/src/test/java/org/apache/doris/task/AgentTaskTest.java +++ b/fe/src/test/java/org/apache/doris/task/AgentTaskTest.java @@ -19,10 +19,10 @@ import org.apache.doris.catalog.AggregateType; import org.apache.doris.catalog.Column; -import org.apache.doris.catalog.ColumnType; import org.apache.doris.catalog.KeysType; import org.apache.doris.catalog.PartitionKey; import org.apache.doris.catalog.PrimitiveType; +import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.MarkedCountDownLatch; import org.apache.doris.thrift.TAgentTaskRequest; @@ -94,8 +94,8 @@ public void setUp() throws AnalysisException { agentBatchTask = new AgentBatchTask(); columns = new LinkedList(); - columns.add(new Column("k1", new ColumnType(PrimitiveType.INT), false, null, "1", "")); - columns.add(new Column("v1", new ColumnType(PrimitiveType.INT), false, AggregateType.SUM, "1", "")); + columns.add(new Column("k1", ScalarType.createType(PrimitiveType.INT), false, null, "1", "")); + columns.add(new Column("v1", ScalarType.createType(PrimitiveType.INT), false, AggregateType.SUM, "1", "")); PartitionKey pk1 = PartitionKey.createInfinityPartitionKey(Arrays.asList(columns.get(0)), false); PartitionKey pk2 = PartitionKey.createPartitionKey(Arrays.asList("10"), Arrays.asList(columns.get(0))); From 9d440b258039cd01150178056537622c98798eb4 Mon Sep 17 00:00:00 2001 From: zhaochun Date: Thu, 29 Nov 2018 11:18:44 +0800 Subject: [PATCH 2/4] Fix create table failed --- fe/src/main/cup/sql_parser.cup | 49 ++++++------------- .../java/org/apache/doris/catalog/Column.java | 2 +- 2 files changed, 16 insertions(+), 35 deletions(-) diff --git a/fe/src/main/cup/sql_parser.cup b/fe/src/main/cup/sql_parser.cup index 1859c26f1dc2a4..b895a2e0b8af8d 100644 --- a/fe/src/main/cup/sql_parser.cup +++ b/fe/src/main/cup/sql_parser.cup @@ -23,7 +23,6 @@ import org.apache.doris.catalog.AccessPrivilege; import org.apache.doris.catalog.Column; import org.apache.doris.catalog.KeysType; import org.apache.doris.catalog.PrimitiveType; -import org.apache.doris.catalog.ColumnType; import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.Type; import org.apache.doris.catalog.View; @@ -328,7 +327,6 @@ nonterminal InlineViewRef inline_view_ref; nonterminal JoinOperator join_operator; nonterminal ArrayList opt_plan_hints; nonterminal ArrayList opt_sort_hints; -nonterminal PrimitiveType primitive_type; nonterminal Expr sign_chain_expr; nonterminal Qualifier union_op; @@ -353,6 +351,7 @@ nonterminal AggregateType opt_agg_type; nonterminal PartitionDesc opt_partition; nonterminal DistributionDesc opt_distribution; nonterminal Integer opt_distribution_number; +nonterminal Long opt_field_length; nonterminal KeysDesc opt_keys; nonterminal PartitionKeyDesc partition_key_desc; @@ -2936,15 +2935,15 @@ limit_clause ::= ; type ::= - KW_TINYINT + KW_TINYINT opt_field_length {: RESULT = Type.TINYINT; :} - | KW_SMALLINT + | KW_SMALLINT opt_field_length {: RESULT = Type.SMALLINT; :} - | KW_INT + | KW_INT opt_field_length {: RESULT = Type.INT; :} - | KW_BIGINT + | KW_BIGINT opt_field_length {: RESULT = Type.BIGINT; :} - | KW_LARGEINT + | KW_LARGEINT opt_field_length {: RESULT = Type.LARGEINT; :} | KW_BOOLEAN {: RESULT = Type.BOOLEAN; :} @@ -2972,6 +2971,15 @@ type ::= {: RESULT = ScalarType.createDecimalType(precision.intValue(), scale.intValue()); :} | KW_DECIMAL {: RESULT = ScalarType.createDecimalType(); :} + | KW_HLL + {: RESULT = Type.HLL; :} + ; + +opt_field_length ::= + LPAREN INTEGER_LITERAL:length RPAREN + {: RESULT = length; :} + | + {: RESULT = null; :} ; type_def ::= @@ -3413,33 +3421,6 @@ column_ref ::= {: RESULT = new SlotRef(new TableName(db, tbl), col); :} ; -primitive_type ::= - KW_TINYINT - {: RESULT = PrimitiveType.TINYINT; :} - | KW_SMALLINT - {: RESULT = PrimitiveType.SMALLINT; :} - | KW_INT - {: RESULT = PrimitiveType.INT; :} - | KW_BIGINT - {: RESULT = PrimitiveType.BIGINT; :} - | KW_LARGEINT - {: RESULT = PrimitiveType.LARGEINT; :} - | KW_BOOLEAN - {: RESULT = PrimitiveType.BOOLEAN; :} - | KW_FLOAT - {: RESULT = PrimitiveType.FLOAT; :} - | KW_DOUBLE - {: RESULT = PrimitiveType.DOUBLE; :} - | KW_DATE - {: RESULT = PrimitiveType.DATE; :} - | KW_DATETIME - {: RESULT = PrimitiveType.DATETIME; :} - | KW_DECIMAL - {: RESULT = PrimitiveType.DECIMAL; :} - | KW_HLL - {: RESULT = PrimitiveType.HLL; :} - ; - privilege_type ::= ident:name {: diff --git a/fe/src/main/java/org/apache/doris/catalog/Column.java b/fe/src/main/java/org/apache/doris/catalog/Column.java index e63aec3025b3fd..ad17b4b6aef5b3 100644 --- a/fe/src/main/java/org/apache/doris/catalog/Column.java +++ b/fe/src/main/java/org/apache/doris/catalog/Column.java @@ -255,7 +255,7 @@ public String toSql() { if (!isAllowNull) { sb.append("NOT NULL "); } - if (defaultValue != null) { + if (defaultValue != null && getDataType() != PrimitiveType.HLL) { sb.append("DEFAULT \"").append(defaultValue).append("\" "); } sb.append("COMMENT \"").append(comment).append("\""); From eacf769a3d0f5962ba695a9f98eef32bde9b22a3 Mon Sep 17 00:00:00 2001 From: zhaochun Date: Thu, 29 Nov 2018 14:06:16 +0800 Subject: [PATCH 3/4] Fix create table failed --- fe/src/main/cup/sql_parser.cup | 6 ++---- fe/src/main/java/org/apache/doris/catalog/ScalarType.java | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/fe/src/main/cup/sql_parser.cup b/fe/src/main/cup/sql_parser.cup index b895a2e0b8af8d..452a80ef30f49c 100644 --- a/fe/src/main/cup/sql_parser.cup +++ b/fe/src/main/cup/sql_parser.cup @@ -2955,16 +2955,14 @@ type ::= {: RESULT = Type.DATE; :} | KW_DATETIME {: RESULT = Type.DATETIME; :} - | KW_STRING - {: RESULT = ScalarType.createVarcharType(-1); :} | KW_VARCHAR LPAREN INTEGER_LITERAL:len RPAREN {: RESULT = ScalarType.createVarcharType(len.intValue()); :} | KW_VARCHAR - {: RESULT = ScalarType.createVarcharType(-1); :} + {: RESULT = ScalarType.createVarcharType(1); :} | KW_CHAR LPAREN INTEGER_LITERAL:len RPAREN {: RESULT = ScalarType.createCharType(len.intValue()); :} | KW_CHAR - {: RESULT = ScalarType.createCharType(-1); :} + {: RESULT = ScalarType.createCharType(1); :} | KW_DECIMAL LPAREN INTEGER_LITERAL:precision RPAREN {: RESULT = ScalarType.createDecimalType(precision.intValue()); :} | KW_DECIMAL LPAREN INTEGER_LITERAL:precision COMMA INTEGER_LITERAL:scale RPAREN diff --git a/fe/src/main/java/org/apache/doris/catalog/ScalarType.java b/fe/src/main/java/org/apache/doris/catalog/ScalarType.java index 607fa7f9edb9db..c405e6f4ee1250 100644 --- a/fe/src/main/java/org/apache/doris/catalog/ScalarType.java +++ b/fe/src/main/java/org/apache/doris/catalog/ScalarType.java @@ -47,7 +47,7 @@ public class ScalarType extends Type { public static final int DEFAULT_SCALE = 0; // SQL standard // Longest supported VARCHAR and CHAR, chosen to match Hive. - public static final int MAX_VARCHAR_LENGTH = 65355; + public static final int MAX_VARCHAR_LENGTH = 65533; public static final int MAX_CHAR_LENGTH = 255; // HLL DEFAULT LENGTH 2^14(registers) + 1(type) From 21e11c639bffdd71a42eda49ee662f9911d8d775 Mon Sep 17 00:00:00 2001 From: zhaochun Date: Thu, 29 Nov 2018 15:36:06 +0800 Subject: [PATCH 4/4] Update --- fe/src/main/cup/sql_parser.cup | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fe/src/main/cup/sql_parser.cup b/fe/src/main/cup/sql_parser.cup index 452a80ef30f49c..a1e2c94301085f 100644 --- a/fe/src/main/cup/sql_parser.cup +++ b/fe/src/main/cup/sql_parser.cup @@ -2955,6 +2955,8 @@ type ::= {: RESULT = Type.DATE; :} | KW_DATETIME {: RESULT = Type.DATETIME; :} + | KW_STRING + {: RESULT = ScalarType.createVarcharType(1); :} | KW_VARCHAR LPAREN INTEGER_LITERAL:len RPAREN {: RESULT = ScalarType.createVarcharType(len.intValue()); :} | KW_VARCHAR