This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch ty/TableModelGrammar in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit bee5ecf1f732770895049409fa8cb7a4e50f18a7 Author: JackieTien97 <[email protected]> AuthorDate: Fri Apr 19 08:57:20 2024 +0800 support time column --- .../source/relational/TableScanOperator.java | 7 ++++++- .../plan/planner/TableOperatorGenerator.java | 21 ++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/TableScanOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/TableScanOperator.java index a8f3a6da567..43267e3005f 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/TableScanOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/TableScanOperator.java @@ -21,6 +21,7 @@ package org.apache.iotdb.db.queryengine.execution.operator.source.relational; import org.apache.iotdb.commons.path.AlignedPath; import org.apache.iotdb.commons.path.PartialPath; +import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory; import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext; import org.apache.iotdb.db.queryengine.execution.operator.source.AbstractDataSourceOperator; import org.apache.iotdb.db.queryengine.execution.operator.source.AlignedSeriesScanUtil; @@ -265,6 +266,8 @@ public class TableScanOperator extends AbstractDataSourceOperator { case MEASUREMENT: valueColumns[i] = measurementDataBlock.getColumn(columnsIndexArray[i]); break; + case TIME: + break; default: throw new IllegalArgumentException( "Unexpected column category: " + columnSchemas.get(i).getColumnCategory()); @@ -318,7 +321,9 @@ public class TableScanOperator extends AbstractDataSourceOperator { public List<TSDataType> getResultDataTypes() { List<TSDataType> resultDataTypes = new ArrayList<>(columnSchemas.size()); for (ColumnSchema columnSchema : columnSchemas) { - resultDataTypes.add(getTSDataType(columnSchema.getType())); + if (columnSchema.getColumnCategory() != TsTableColumnCategory.TIME) { + resultDataTypes.add(getTSDataType(columnSchema.getType())); + } } return resultDataTypes; } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java index c8825447e88..94ab2158821 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java @@ -114,6 +114,9 @@ public class TableOperatorGenerator extends PlanVisitor<Operator, LocalExecution measurementSchemas.add( new MeasurementSchema(schema.getName(), getTSDataType(schema.getType()))); break; + case TIME: + columnsIndexArray[i] = -1; + break; default: throw new IllegalArgumentException( "Unexpected column category: " + schema.getColumnCategory()); @@ -193,15 +196,19 @@ public class TableOperatorGenerator extends PlanVisitor<Operator, LocalExecution Map<Symbol, List<InputLocation>> outputMappings = new LinkedHashMap<>(); int tsBlockIndex = 0; for (PlanNode childNode : children) { - outputMappings - .computeIfAbsent(new Symbol(TIMESTAMP_EXPRESSION_STRING), key -> new ArrayList<>()) - .add(new InputLocation(tsBlockIndex, -1)); + int valueColumnIndex = 0; for (Symbol columnName : childNode.getOutputSymbols()) { - outputMappings - .computeIfAbsent(columnName, key -> new ArrayList<>()) - .add(new InputLocation(tsBlockIndex, valueColumnIndex)); - valueColumnIndex++; + if (!TIMESTAMP_EXPRESSION_STRING.equalsIgnoreCase(columnName.getName())) { + outputMappings + .computeIfAbsent(columnName, key -> new ArrayList<>()) + .add(new InputLocation(tsBlockIndex, valueColumnIndex)); + valueColumnIndex++; + } else { + outputMappings + .computeIfAbsent(columnName, key -> new ArrayList<>()) + .add(new InputLocation(tsBlockIndex, -1)); + } } tsBlockIndex++; }
