This is an automated email from the ASF dual-hosted git repository. jiangtian pushed a commit to branch fix_insert_case_sensitivity in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 6aa6db4159e5eb34273d6ebb7f11f5b9a5c9f0f7 Author: Tian Jiang <[email protected]> AuthorDate: Thu Aug 15 10:46:41 2024 +0800 fix dataname retrieval of insert rows --- .../iotdb/relational/it/db/it/IoTDBInsertTableIT.java | 7 ++++--- .../db/queryengine/plan/relational/sql/ast/InsertRow.java | 10 +--------- .../db/queryengine/plan/relational/sql/ast/InsertRows.java | 13 ++++--------- .../queryengine/plan/relational/sql/ast/InsertTablet.java | 9 +-------- .../queryengine/plan/relational/sql/parser/AstBuilder.java | 9 +++++++-- .../plan/statement/crud/InsertBaseStatement.java | 11 +++++++++++ 6 files changed, 28 insertions(+), 31 deletions(-) diff --git a/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBInsertTableIT.java b/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBInsertTableIT.java index 733dbfa4d53..1908b36f80f 100644 --- a/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBInsertTableIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBInsertTableIT.java @@ -579,7 +579,7 @@ public class IoTDBInsertTableIT { st1.execute("insert into sg18(id1, s1, s2) values('d1','1', 1)"); st1.execute("insert into sg18(id1, s1, s2) values('d2', 2, 2)"); - ResultSet rs1 = st1.executeQuery("select time, s1, s2 from sg18"); + ResultSet rs1 = st1.executeQuery("select time, s1, s2 from sg18 order by s1"); assertTrue(rs1.next()); assertEquals("1", rs1.getString("s1")); assertTrue(rs1.next()); @@ -605,13 +605,14 @@ public class IoTDBInsertTableIT { st1.execute("insert into sg19(TIme, Id1, Ss1, Ss2) values(5, 'd5','5', 5)"); st1.execute("insert into sg19(TIme, Id1, sS1, sS2) values(6, 'd6', 6, 6)"); - ResultSet rs1 = st1.executeQuery("select time, ss1, ss2 from sg19"); - for (int i = 0; i < 6; i++) { + ResultSet rs1 = st1.executeQuery("select time, ss1, ss2 from sg19 order by time"); + for (int i = 1; i <= 6; i++) { assertTrue(rs1.next()); assertEquals(i, rs1.getLong("time")); assertEquals(String.valueOf(i), rs1.getString("ss1")); assertEquals(i, rs1.getInt("ss2")); } + assertFalse(rs1.next()); } } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertRow.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertRow.java index e345cb59b60..cbce78e6528 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertRow.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertRow.java @@ -19,12 +19,10 @@ package org.apache.iotdb.db.queryengine.plan.relational.sql.ast; -import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory; import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.queryengine.common.MPPQueryContext; import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowStatement; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -65,13 +63,7 @@ public class InsertRow extends WrappedInsertStatement { @Override public List<String> getAttributeColumnNameList() { final InsertRowStatement insertRowStatement = getInnerTreeStatement(); - List<String> result = new ArrayList<>(); - for (int i = 0; i < insertRowStatement.getColumnCategories().length; i++) { - if (insertRowStatement.getColumnCategories()[i] == TsTableColumnCategory.ATTRIBUTE) { - result.add(insertRowStatement.getMeasurements()[i]); - } - } - return result; + return insertRowStatement.getAttributeColumnNameList(); } @Override diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertRows.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertRows.java index 361a6ccb540..2fdb954ab35 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertRows.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertRows.java @@ -23,6 +23,7 @@ import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory; import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.queryengine.common.MPPQueryContext; +import org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeUtils; import org.apache.iotdb.db.queryengine.plan.relational.metadata.ITableDeviceSchemaValidation; import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata; import org.apache.iotdb.db.queryengine.plan.relational.metadata.TableSchema; @@ -110,12 +111,12 @@ public class InsertRows extends WrappedInsertStatement { @Override public String getDatabase() { - return InsertRows.this.getDatabase(); + return AnalyzeUtils.getDatabaseName(insertRowStatement, context); } @Override public String getTableName() { - return InsertRows.this.getTableName(); + return insertRowStatement.getTableDeviceID().getTableName(); } @Override @@ -126,13 +127,7 @@ public class InsertRows extends WrappedInsertStatement { @Override public List<String> getAttributeColumnNameList() { - List<String> attributeColumnNameList = new ArrayList<>(); - for (int i = 0; i < insertRowStatement.getColumnCategories().length; i++) { - if (insertRowStatement.getColumnCategories()[i] == TsTableColumnCategory.ATTRIBUTE) { - attributeColumnNameList.add(insertRowStatement.getMeasurements()[i]); - } - } - return attributeColumnNameList; + return insertRowStatement.getAttributeColumnNameList(); } @Override diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertTablet.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertTablet.java index b036d98a6ab..4feecf2807c 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertTablet.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertTablet.java @@ -19,7 +19,6 @@ package org.apache.iotdb.db.queryengine.plan.relational.sql.ast; -import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory; import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.queryengine.common.MPPQueryContext; import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement; @@ -71,13 +70,7 @@ public class InsertTablet extends WrappedInsertStatement { @Override public List<String> getAttributeColumnNameList() { final InsertTabletStatement insertTabletStatement = getInnerTreeStatement(); - List<String> result = new ArrayList<>(); - for (int i = 0; i < insertTabletStatement.getColumnCategories().length; i++) { - if (insertTabletStatement.getColumnCategories()[i] == TsTableColumnCategory.ATTRIBUTE) { - result.add(insertTabletStatement.getMeasurements()[i]); - } - } - return result; + return insertTabletStatement.getAttributeColumnNameList(); } @Override diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java index 3160c2c43f1..391d5cd0ff2 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java @@ -411,7 +411,7 @@ public class AstBuilder extends RelationalSqlBaseVisitor<Node> { .map( r -> toInsertRowStatement( - ((Row) r), finalTimeColumnIndex, columnNameArray, tableName)) + ((Row) r), finalTimeColumnIndex, columnNameArray, tableName, databaseName)) .collect(toList()); InsertRowsStatement insertRowsStatement = new InsertRowsStatement(); @@ -421,7 +421,11 @@ public class AstBuilder extends RelationalSqlBaseVisitor<Node> { } private InsertRowStatement toInsertRowStatement( - Row row, int timeColumnIndex, String[] nonTimeColumnNames, String tableName) { + Row row, + int timeColumnIndex, + String[] nonTimeColumnNames, + String tableName, + Optional<String> databaseName) { InsertRowStatement insertRowStatement = new InsertRowStatement(); insertRowStatement.setWriteToTable(true); insertRowStatement.setDevicePath(new PartialPath(new String[] {tableName})); @@ -465,6 +469,7 @@ public class AstBuilder extends RelationalSqlBaseVisitor<Node> { insertRowStatement.setValues(values); insertRowStatement.setNeedInferType(true); + databaseName.ifPresent(insertRowStatement::setDatabaseName); return insertRowStatement; } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java index 5dd11f2c967..c852651802c 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java @@ -565,4 +565,15 @@ public abstract class InsertBaseStatement extends Statement { } } } + + @TableModel + public List<String> getAttributeColumnNameList() { + List<String> attributeColumnNameList = new ArrayList<>(); + for (int i = 0; i < getColumnCategories().length; i++) { + if (getColumnCategories()[i] == TsTableColumnCategory.ATTRIBUTE) { + attributeColumnNameList.add(getMeasurements()[i]); + } + } + return attributeColumnNameList; + } }
