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:
