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

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


The following commit(s) were added to refs/heads/master by this push:
     new c8d7c5dfea9 Reopen drop column and delete devices operations
c8d7c5dfea9 is described below

commit c8d7c5dfea9afeb8883302fa0786034169a404cf
Author: Caideyipi <[email protected]>
AuthorDate: Fri Jan 10 17:36:15 2025 +0800

    Reopen drop column and delete devices operations
---
 .../iotdb/relational/it/schema/IoTDBDeviceIT.java  |  37 +++----
 .../iotdb/relational/it/schema/IoTDBTableIT.java   | 122 ++++++++++-----------
 .../confignode/persistence/schema/ConfigMTree.java |   2 +-
 .../plan/relational/sql/ast/DeleteDevice.java      |   2 -
 .../plan/relational/sql/ast/DropColumn.java        |   3 -
 pom.xml                                            |   2 +-
 6 files changed, 77 insertions(+), 91 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDeviceIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDeviceIT.java
index d2479f68f35..578d807a6dd 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDeviceIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDeviceIT.java
@@ -249,29 +249,26 @@ public class IoTDBDeviceIT {
       TestUtils.assertResultSetSize(
           statement.executeQuery("show devices from table0 offset 1 limit 1"), 
1);
 
-      // TODO: Reopen
-      if (false) {
-        // Test delete devices
-        statement.execute("delete devices from table0 where region_id = '1' 
and plant_id = '木兰'");
-        TestUtils.assertResultSetSize(statement.executeQuery("show devices 
from table0"), 1);
+      // Test delete devices
+      statement.execute("delete devices from table0 where region_id = '1' and 
plant_id = '木兰'");
+      TestUtils.assertResultSetSize(statement.executeQuery("show devices from 
table0"), 1);
 
-        // Test successfully Invalidate cache
-        statement.execute(
-            "insert into table0(region_id, plant_id, device_id, model, 
temperature, humidity) values('1', '木兰', '3', 'A', 37.6, 111.1)");
-        TestUtils.assertResultSetSize(statement.executeQuery("show devices 
from table0"), 2);
+      // Test successfully Invalidate cache
+      statement.execute(
+          "insert into table0(region_id, plant_id, device_id, model, 
temperature, humidity) values('1', '木兰', '3', 'A', 37.6, 111.1)");
+      TestUtils.assertResultSetSize(statement.executeQuery("show devices from 
table0"), 2);
 
-        // Test successfully delete data
-        TestUtils.assertResultSetSize(
-            statement.executeQuery("select * from table0 where region_id = 
'1'"), 1);
+      // Test successfully delete data
+      TestUtils.assertResultSetSize(
+          statement.executeQuery("select * from table0 where region_id = 
'1'"), 1);
 
-        try {
-          statement.executeQuery("delete devices from table0 where time = 1");
-          fail("Delete devices shall fail when specifies non tag column");
-        } catch (final Exception e) {
-          assertEquals(
-              "701: The TIME/FIELD columns are currently not allowed in 
devices related operations",
-              e.getMessage());
-        }
+      try {
+        statement.executeQuery("delete devices from table0 where time = 1");
+        fail("Delete devices shall fail when specifies non tag column");
+      } catch (final Exception e) {
+        assertEquals(
+            "701: The TIME/FIELD columns are currently not allowed in devices 
related operations",
+            e.getMessage());
       }
     }
   }
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
index 1bfd554dde2..d27e298f877 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
@@ -390,70 +390,67 @@ public class IoTDBTableIT {
       statement.execute(
           "insert into table2(region_id, plant_id, color, temperature, speed) 
values(1, 1, 1, 1, 1)");
 
-      // TODO: Reopen
-      if (false) {
-        // Test drop column
-        statement.execute("alter table table2 drop column color");
-
-        columnNames = new String[] {"time", "region_id", "plant_id", 
"temperature", "speed"};
-        dataTypes = new String[] {"TIMESTAMP", "STRING", "STRING", "FLOAT", 
"DOUBLE"};
-        categories = new String[] {"TIME", "TAG", "TAG", "FIELD", "FIELD"};
-        final String[] statuses = new String[] {"USING", "USING", "USING", 
"USING", "USING"};
-        try (final ResultSet resultSet = statement.executeQuery("describe 
table2 details")) {
-          int cnt = 0;
-          ResultSetMetaData metaData = resultSet.getMetaData();
-          assertEquals(describeTableDetailsColumnHeaders.size(), 
metaData.getColumnCount());
-          for (int i = 0; i < describeTableDetailsColumnHeaders.size(); i++) {
-            assertEquals(
-                describeTableDetailsColumnHeaders.get(i).getColumnName(),
-                metaData.getColumnName(i + 1));
-          }
-          while (resultSet.next()) {
-            assertEquals(columnNames[cnt], resultSet.getString(1));
-            assertEquals(dataTypes[cnt], resultSet.getString(2));
-            assertEquals(categories[cnt], resultSet.getString(3));
-            assertEquals(statuses[cnt], resultSet.getString(4));
-            cnt++;
-          }
-          assertEquals(columnNames.length, cnt);
+      // Test drop column
+      statement.execute("alter table table2 drop column color");
+
+      columnNames = new String[] {"time", "region_id", "plant_id", 
"temperature", "speed"};
+      dataTypes = new String[] {"TIMESTAMP", "STRING", "STRING", "FLOAT", 
"DOUBLE"};
+      categories = new String[] {"TIME", "TAG", "TAG", "FIELD", "FIELD"};
+      final String[] statuses = new String[] {"USING", "USING", "USING", 
"USING", "USING"};
+      try (final ResultSet resultSet = statement.executeQuery("describe table2 
details")) {
+        int cnt = 0;
+        ResultSetMetaData metaData = resultSet.getMetaData();
+        assertEquals(describeTableDetailsColumnHeaders.size(), 
metaData.getColumnCount());
+        for (int i = 0; i < describeTableDetailsColumnHeaders.size(); i++) {
+          assertEquals(
+              describeTableDetailsColumnHeaders.get(i).getColumnName(),
+              metaData.getColumnName(i + 1));
         }
-
-        statement.execute("alter table table2 drop column speed");
-
-        try {
-          statement.executeQuery("select color from table2");
-          fail();
-        } catch (final SQLException e) {
-          assertEquals("616: Column 'color' cannot be resolved", 
e.getMessage());
+        while (resultSet.next()) {
+          assertEquals(columnNames[cnt], resultSet.getString(1));
+          assertEquals(dataTypes[cnt], resultSet.getString(2));
+          assertEquals(categories[cnt], resultSet.getString(3));
+          assertEquals(statuses[cnt], resultSet.getString(4));
+          cnt++;
         }
+        assertEquals(columnNames.length, cnt);
+      }
 
-        try {
-          statement.executeQuery("select speed from table2");
-          fail();
-        } catch (final SQLException e) {
-          assertEquals("616: Column 'speed' cannot be resolved", 
e.getMessage());
-        }
+      statement.execute("alter table table2 drop column speed");
 
-        try {
-          statement.execute("alter table table2 drop column speed");
-        } catch (final SQLException e) {
-          assertEquals("616: Column speed in table 'test2.table2' does not 
exist.", e.getMessage());
-        }
+      try {
+        statement.executeQuery("select color from table2");
+        fail();
+      } catch (final SQLException e) {
+        assertEquals("616: Column 'color' cannot be resolved", e.getMessage());
+      }
 
-        try {
-          statement.execute("alter table table2 drop column time");
-        } catch (final SQLException e) {
-          assertEquals("701: Dropping tag or time column is not supported.", 
e.getMessage());
-        }
+      try {
+        statement.executeQuery("select speed from table2");
+        fail();
+      } catch (final SQLException e) {
+        assertEquals("616: Column 'speed' cannot be resolved", e.getMessage());
+      }
 
-        // test data deletion by drop column
-        statement.execute("alter table table2 add column speed double");
-        TestUtils.assertResultSetEqual(
-            statement.executeQuery("select speed from table2"),
-            "speed,",
-            Collections.singleton("null,"));
+      try {
+        statement.execute("alter table table2 drop column speed");
+      } catch (final SQLException e) {
+        assertEquals("616: Column speed in table 'test2.table2' does not 
exist.", e.getMessage());
       }
 
+      try {
+        statement.execute("alter table table2 drop column time");
+      } catch (final SQLException e) {
+        assertEquals("701: Dropping tag or time column is not supported.", 
e.getMessage());
+      }
+
+      // test data deletion by drop column
+      statement.execute("alter table table2 add column speed double");
+      TestUtils.assertResultSetEqual(
+          statement.executeQuery("select speed from table2"),
+          "speed,",
+          Collections.singleton("null,"));
+
       statement.execute("drop table table2");
       try {
         statement.executeQuery("describe table2");
@@ -504,14 +501,11 @@ public class IoTDBTableIT {
         assertEquals("500: Unknown database test1", e.getMessage());
       }
 
-      // TODO: Reopen
-      if (false) {
-        try {
-          statement.execute("alter table test1.test drop column a");
-          fail();
-        } catch (final SQLException e) {
-          assertEquals("500: Unknown database test1", e.getMessage());
-        }
+      try {
+        statement.execute("alter table test1.test drop column a");
+        fail();
+      } catch (final SQLException e) {
+        assertEquals("500: Unknown database test1", e.getMessage());
       }
 
       try {
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTree.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTree.java
index 0b4bf3f840c..ff91998a887 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTree.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTree.java
@@ -866,7 +866,7 @@ public class ConfigMTree {
     }
     if (columnSchema.getColumnCategory() == TsTableColumnCategory.TAG
         || columnSchema.getColumnCategory() == TsTableColumnCategory.TIME) {
-      throw new SemanticException("Dropping id or time column is not 
supported.");
+      throw new SemanticException("Dropping tag or time column is not 
supported.");
     }
 
     node.addPreDeletedColumn(columnName);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java
index 79bf8147da3..6d3f3438f08 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java
@@ -23,7 +23,6 @@ import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.schema.column.ColumnHeader;
 import org.apache.iotdb.commons.schema.filter.SchemaFilter;
 import org.apache.iotdb.commons.schema.table.TsTable;
-import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.queryengine.common.SessionInfo;
 import 
org.apache.iotdb.db.queryengine.execution.operator.schema.source.DeviceBlackListConstructor;
 import 
org.apache.iotdb.db.queryengine.execution.operator.schema.source.TableDeviceQuerySource;
@@ -68,7 +67,6 @@ public class DeleteDevice extends AbstractTraverseDevice {
 
   public DeleteDevice(final NodeLocation location, final Table table, final 
Expression where) {
     super(location, table, where);
-    throw new SemanticException("Delete device is unsupported yet.");
   }
 
   public void parseModEntries(final TsTable table) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DropColumn.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DropColumn.java
index 1cad3f8f3a3..20e18053088 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DropColumn.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DropColumn.java
@@ -19,8 +19,6 @@
 
 package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
 
-import org.apache.iotdb.db.exception.sql.SemanticException;
-
 import com.google.common.collect.ImmutableList;
 
 import java.util.List;
@@ -48,7 +46,6 @@ public class DropColumn extends Statement {
     this.field = requireNonNull(field, "field is null");
     this.tableIfExists = tableIfExists;
     this.columnIfExists = columnIfExists;
-    throw new SemanticException("Drop column is unsupported yet.");
   }
 
   public QualifiedName getTable() {
diff --git a/pom.xml b/pom.xml
index 28f72ddc9bc..e278d579b44 100644
--- a/pom.xml
+++ b/pom.xml
@@ -167,7 +167,7 @@
         <thrift.version>0.14.1</thrift.version>
         <xz.version>1.9</xz.version>
         <zstd-jni.version>1.5.6-3</zstd-jni.version>
-        <tsfile.version>1.2.0-241224-SNAPSHOT</tsfile.version>
+        <tsfile.version>2.0.0-250109-SNAPSHOT</tsfile.version>
     </properties>
     <!--
     if we claim dependencies in dependencyManagement, then we do not claim

Reply via email to