Skip to content

Commit c8d7c5d

Browse files
authored
Reopen drop column and delete devices operations
1 parent a5e13fd commit c8d7c5d

File tree

6 files changed

+77
-91
lines changed

6 files changed

+77
-91
lines changed

integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDeviceIT.java

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -249,29 +249,26 @@ public void testDevice() throws SQLException {
249249
TestUtils.assertResultSetSize(
250250
statement.executeQuery("show devices from table0 offset 1 limit 1"), 1);
251251

252-
// TODO: Reopen
253-
if (false) {
254-
// Test delete devices
255-
statement.execute("delete devices from table0 where region_id = '1' and plant_id = '木兰'");
256-
TestUtils.assertResultSetSize(statement.executeQuery("show devices from table0"), 1);
252+
// Test delete devices
253+
statement.execute("delete devices from table0 where region_id = '1' and plant_id = '木兰'");
254+
TestUtils.assertResultSetSize(statement.executeQuery("show devices from table0"), 1);
257255

258-
// Test successfully Invalidate cache
259-
statement.execute(
260-
"insert into table0(region_id, plant_id, device_id, model, temperature, humidity) values('1', '木兰', '3', 'A', 37.6, 111.1)");
261-
TestUtils.assertResultSetSize(statement.executeQuery("show devices from table0"), 2);
256+
// Test successfully Invalidate cache
257+
statement.execute(
258+
"insert into table0(region_id, plant_id, device_id, model, temperature, humidity) values('1', '木兰', '3', 'A', 37.6, 111.1)");
259+
TestUtils.assertResultSetSize(statement.executeQuery("show devices from table0"), 2);
262260

263-
// Test successfully delete data
264-
TestUtils.assertResultSetSize(
265-
statement.executeQuery("select * from table0 where region_id = '1'"), 1);
261+
// Test successfully delete data
262+
TestUtils.assertResultSetSize(
263+
statement.executeQuery("select * from table0 where region_id = '1'"), 1);
266264

267-
try {
268-
statement.executeQuery("delete devices from table0 where time = 1");
269-
fail("Delete devices shall fail when specifies non tag column");
270-
} catch (final Exception e) {
271-
assertEquals(
272-
"701: The TIME/FIELD columns are currently not allowed in devices related operations",
273-
e.getMessage());
274-
}
265+
try {
266+
statement.executeQuery("delete devices from table0 where time = 1");
267+
fail("Delete devices shall fail when specifies non tag column");
268+
} catch (final Exception e) {
269+
assertEquals(
270+
"701: The TIME/FIELD columns are currently not allowed in devices related operations",
271+
e.getMessage());
275272
}
276273
}
277274
}

integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java

Lines changed: 58 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -390,70 +390,67 @@ public void testManageTable() {
390390
statement.execute(
391391
"insert into table2(region_id, plant_id, color, temperature, speed) values(1, 1, 1, 1, 1)");
392392

393-
// TODO: Reopen
394-
if (false) {
395-
// Test drop column
396-
statement.execute("alter table table2 drop column color");
397-
398-
columnNames = new String[] {"time", "region_id", "plant_id", "temperature", "speed"};
399-
dataTypes = new String[] {"TIMESTAMP", "STRING", "STRING", "FLOAT", "DOUBLE"};
400-
categories = new String[] {"TIME", "TAG", "TAG", "FIELD", "FIELD"};
401-
final String[] statuses = new String[] {"USING", "USING", "USING", "USING", "USING"};
402-
try (final ResultSet resultSet = statement.executeQuery("describe table2 details")) {
403-
int cnt = 0;
404-
ResultSetMetaData metaData = resultSet.getMetaData();
405-
assertEquals(describeTableDetailsColumnHeaders.size(), metaData.getColumnCount());
406-
for (int i = 0; i < describeTableDetailsColumnHeaders.size(); i++) {
407-
assertEquals(
408-
describeTableDetailsColumnHeaders.get(i).getColumnName(),
409-
metaData.getColumnName(i + 1));
410-
}
411-
while (resultSet.next()) {
412-
assertEquals(columnNames[cnt], resultSet.getString(1));
413-
assertEquals(dataTypes[cnt], resultSet.getString(2));
414-
assertEquals(categories[cnt], resultSet.getString(3));
415-
assertEquals(statuses[cnt], resultSet.getString(4));
416-
cnt++;
417-
}
418-
assertEquals(columnNames.length, cnt);
393+
// Test drop column
394+
statement.execute("alter table table2 drop column color");
395+
396+
columnNames = new String[] {"time", "region_id", "plant_id", "temperature", "speed"};
397+
dataTypes = new String[] {"TIMESTAMP", "STRING", "STRING", "FLOAT", "DOUBLE"};
398+
categories = new String[] {"TIME", "TAG", "TAG", "FIELD", "FIELD"};
399+
final String[] statuses = new String[] {"USING", "USING", "USING", "USING", "USING"};
400+
try (final ResultSet resultSet = statement.executeQuery("describe table2 details")) {
401+
int cnt = 0;
402+
ResultSetMetaData metaData = resultSet.getMetaData();
403+
assertEquals(describeTableDetailsColumnHeaders.size(), metaData.getColumnCount());
404+
for (int i = 0; i < describeTableDetailsColumnHeaders.size(); i++) {
405+
assertEquals(
406+
describeTableDetailsColumnHeaders.get(i).getColumnName(),
407+
metaData.getColumnName(i + 1));
419408
}
420-
421-
statement.execute("alter table table2 drop column speed");
422-
423-
try {
424-
statement.executeQuery("select color from table2");
425-
fail();
426-
} catch (final SQLException e) {
427-
assertEquals("616: Column 'color' cannot be resolved", e.getMessage());
409+
while (resultSet.next()) {
410+
assertEquals(columnNames[cnt], resultSet.getString(1));
411+
assertEquals(dataTypes[cnt], resultSet.getString(2));
412+
assertEquals(categories[cnt], resultSet.getString(3));
413+
assertEquals(statuses[cnt], resultSet.getString(4));
414+
cnt++;
428415
}
416+
assertEquals(columnNames.length, cnt);
417+
}
429418

430-
try {
431-
statement.executeQuery("select speed from table2");
432-
fail();
433-
} catch (final SQLException e) {
434-
assertEquals("616: Column 'speed' cannot be resolved", e.getMessage());
435-
}
419+
statement.execute("alter table table2 drop column speed");
436420

437-
try {
438-
statement.execute("alter table table2 drop column speed");
439-
} catch (final SQLException e) {
440-
assertEquals("616: Column speed in table 'test2.table2' does not exist.", e.getMessage());
441-
}
421+
try {
422+
statement.executeQuery("select color from table2");
423+
fail();
424+
} catch (final SQLException e) {
425+
assertEquals("616: Column 'color' cannot be resolved", e.getMessage());
426+
}
442427

443-
try {
444-
statement.execute("alter table table2 drop column time");
445-
} catch (final SQLException e) {
446-
assertEquals("701: Dropping tag or time column is not supported.", e.getMessage());
447-
}
428+
try {
429+
statement.executeQuery("select speed from table2");
430+
fail();
431+
} catch (final SQLException e) {
432+
assertEquals("616: Column 'speed' cannot be resolved", e.getMessage());
433+
}
448434

449-
// test data deletion by drop column
450-
statement.execute("alter table table2 add column speed double");
451-
TestUtils.assertResultSetEqual(
452-
statement.executeQuery("select speed from table2"),
453-
"speed,",
454-
Collections.singleton("null,"));
435+
try {
436+
statement.execute("alter table table2 drop column speed");
437+
} catch (final SQLException e) {
438+
assertEquals("616: Column speed in table 'test2.table2' does not exist.", e.getMessage());
455439
}
456440

441+
try {
442+
statement.execute("alter table table2 drop column time");
443+
} catch (final SQLException e) {
444+
assertEquals("701: Dropping tag or time column is not supported.", e.getMessage());
445+
}
446+
447+
// test data deletion by drop column
448+
statement.execute("alter table table2 add column speed double");
449+
TestUtils.assertResultSetEqual(
450+
statement.executeQuery("select speed from table2"),
451+
"speed,",
452+
Collections.singleton("null,"));
453+
457454
statement.execute("drop table table2");
458455
try {
459456
statement.executeQuery("describe table2");
@@ -504,14 +501,11 @@ public void testManageTable() {
504501
assertEquals("500: Unknown database test1", e.getMessage());
505502
}
506503

507-
// TODO: Reopen
508-
if (false) {
509-
try {
510-
statement.execute("alter table test1.test drop column a");
511-
fail();
512-
} catch (final SQLException e) {
513-
assertEquals("500: Unknown database test1", e.getMessage());
514-
}
504+
try {
505+
statement.execute("alter table test1.test drop column a");
506+
fail();
507+
} catch (final SQLException e) {
508+
assertEquals("500: Unknown database test1", e.getMessage());
515509
}
516510

517511
try {

iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTree.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,7 @@ public boolean preDeleteColumn(
866866
}
867867
if (columnSchema.getColumnCategory() == TsTableColumnCategory.TAG
868868
|| columnSchema.getColumnCategory() == TsTableColumnCategory.TIME) {
869-
throw new SemanticException("Dropping id or time column is not supported.");
869+
throw new SemanticException("Dropping tag or time column is not supported.");
870870
}
871871

872872
node.addPreDeletedColumn(columnName);

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.apache.iotdb.commons.schema.column.ColumnHeader;
2424
import org.apache.iotdb.commons.schema.filter.SchemaFilter;
2525
import org.apache.iotdb.commons.schema.table.TsTable;
26-
import org.apache.iotdb.db.exception.sql.SemanticException;
2726
import org.apache.iotdb.db.queryengine.common.SessionInfo;
2827
import org.apache.iotdb.db.queryengine.execution.operator.schema.source.DeviceBlackListConstructor;
2928
import org.apache.iotdb.db.queryengine.execution.operator.schema.source.TableDeviceQuerySource;
@@ -68,7 +67,6 @@ public class DeleteDevice extends AbstractTraverseDevice {
6867

6968
public DeleteDevice(final NodeLocation location, final Table table, final Expression where) {
7069
super(location, table, where);
71-
throw new SemanticException("Delete device is unsupported yet.");
7270
}
7371

7472
public void parseModEntries(final TsTable table) {

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DropColumn.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919

2020
package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
2121

22-
import org.apache.iotdb.db.exception.sql.SemanticException;
23-
2422
import com.google.common.collect.ImmutableList;
2523

2624
import java.util.List;
@@ -48,7 +46,6 @@ public DropColumn(
4846
this.field = requireNonNull(field, "field is null");
4947
this.tableIfExists = tableIfExists;
5048
this.columnIfExists = columnIfExists;
51-
throw new SemanticException("Drop column is unsupported yet.");
5249
}
5350

5451
public QualifiedName getTable() {

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@
167167
<thrift.version>0.14.1</thrift.version>
168168
<xz.version>1.9</xz.version>
169169
<zstd-jni.version>1.5.6-3</zstd-jni.version>
170-
<tsfile.version>1.2.0-241224-SNAPSHOT</tsfile.version>
170+
<tsfile.version>2.0.0-250109-SNAPSHOT</tsfile.version>
171171
</properties>
172172
<!--
173173
if we claim dependencies in dependencyManagement, then we do not claim

0 commit comments

Comments
 (0)