This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch ty/NewDataTypeSelectInto
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit a547a05dc140ed7ab98f3b51719603ce32cba727
Author: JackieTien97 <[email protected]>
AuthorDate: Mon Jul 15 10:28:17 2024 +0800

    Supoort new data types in select into and fill
---
 .../execution/operator/process/AbstractIntoOperator.java     | 12 ++++++++++++
 .../db/queryengine/plan/planner/OperatorTreeGenerator.java   | 12 ++++++++++++
 2 files changed, 24 insertions(+)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java
index a8e5583593d..99317ba7b09 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/AbstractIntoOperator.java
@@ -393,9 +393,11 @@ public abstract class AbstractIntoOperator implements 
ProcessOperator {
             columns[i] = new boolean[rowLimit];
             break;
           case INT32:
+          case DATE:
             columns[i] = new int[rowLimit];
             break;
           case INT64:
+          case TIMESTAMP:
             columns[i] = new long[rowLimit];
             break;
           case FLOAT:
@@ -405,6 +407,8 @@ public abstract class AbstractIntoOperator implements 
ProcessOperator {
             columns[i] = new double[rowLimit];
             break;
           case TEXT:
+          case STRING:
+          case BLOB:
             columns[i] = new Binary[rowLimit];
             Arrays.fill((Binary[]) columns[i], Binary.EMPTY_VALUE);
             break;
@@ -440,10 +444,12 @@ public abstract class AbstractIntoOperator implements 
ProcessOperator {
           writtenCounter.get(measurements[i]).getAndIncrement();
           switch (dataTypes[i]) {
             case INT32:
+            case DATE:
               ((int[]) columns[i])[rowCount] =
                   sourceTypeConvertor.getInt(valueColumn, lastReadIndex);
               break;
             case INT64:
+            case TIMESTAMP:
               ((long[]) columns[i])[rowCount] =
                   sourceTypeConvertor.getLong(valueColumn, lastReadIndex);
               break;
@@ -460,6 +466,8 @@ public abstract class AbstractIntoOperator implements 
ProcessOperator {
                   sourceTypeConvertor.getBoolean(valueColumn, lastReadIndex);
               break;
             case TEXT:
+            case BLOB:
+            case STRING:
               ((Binary[]) columns[i])[rowCount] =
                   sourceTypeConvertor.getBinary(valueColumn, lastReadIndex);
               break;
@@ -505,9 +513,11 @@ public abstract class AbstractIntoOperator implements 
ProcessOperator {
               columns[i] = Arrays.copyOf((boolean[]) columns[i], rowCount);
               break;
             case INT32:
+            case DATE:
               columns[i] = Arrays.copyOf((int[]) columns[i], rowCount);
               break;
             case INT64:
+            case TIMESTAMP:
               columns[i] = Arrays.copyOf((long[]) columns[i], rowCount);
               break;
             case FLOAT:
@@ -517,6 +527,8 @@ public abstract class AbstractIntoOperator implements 
ProcessOperator {
               columns[i] = Arrays.copyOf((double[]) columns[i], rowCount);
               break;
             case TEXT:
+            case STRING:
+            case BLOB:
               columns[i] = Arrays.copyOf((Binary[]) columns[i], rowCount);
               break;
             default:
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
index b053575f86b..03a1245576c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
@@ -1339,12 +1339,16 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
           constantFill[i] = new BooleanConstantFill(literal.getBoolean());
           break;
         case TEXT:
+        case BLOB:
+        case STRING:
           constantFill[i] = new BinaryConstantFill(literal.getBinary());
           break;
         case INT32:
+        case DATE:
           constantFill[i] = new IntConstantFill(literal.getInt());
           break;
         case INT64:
+        case TIMESTAMP:
           constantFill[i] = new LongConstantFill(literal.getLong());
           break;
         case FLOAT:
@@ -1407,12 +1411,16 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
           previousFill[i] = new BooleanPreviousFill(filter);
           break;
         case TEXT:
+        case STRING:
+        case BLOB:
           previousFill[i] = new BinaryPreviousFill(filter);
           break;
         case INT32:
+        case DATE:
           previousFill[i] = new IntPreviousFill(filter);
           break;
         case INT64:
+        case TIMESTAMP:
           previousFill[i] = new LongPreviousFill(filter);
           break;
         case FLOAT:
@@ -1433,9 +1441,11 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
     for (int i = 0; i < inputColumns; i++) {
       switch (inputDataTypes.get(i)) {
         case INT32:
+        case DATE:
           linearFill[i] = new IntLinearFill();
           break;
         case INT64:
+        case TIMESTAMP:
           linearFill[i] = new LongLinearFill();
           break;
         case FLOAT:
@@ -1446,6 +1456,8 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
           break;
         case BOOLEAN:
         case TEXT:
+        case STRING:
+        case BLOB:
           linearFill[i] = IDENTITY_LINEAR_FILL;
           break;
         default:

Reply via email to