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++;
     }

Reply via email to