You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2024/07/15 08:34:34 UTC
(iotdb) 01/02: Supoort new data types in select into and fill
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 <ja...@gmail.com>
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: