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

Reply via email to