From e6c89130de5ff64c4069fc860b38da3d46ce3593 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Fri, 10 Apr 2026 16:46:56 +0800 Subject: [PATCH 01/16] bishop --- .../metadata/relational/ShowCreateTableTask.java | 10 ++++++++-- .../config/metadata/relational/ShowCreateViewTask.java | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateTableTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateTableTask.java index 64581425f01b6..1d0ede7e03db8 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateTableTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateTableTask.java @@ -96,7 +96,13 @@ private static String getShowCreateTableSQL(final TsTable table) { .append("TAG"); break; case TIME: - continue; + builder + .append(getIdentifier(schema.getColumnName())) + .append(" ") + .append(schema.getDataType()) + .append(" ") + .append("TIME"); + break; case FIELD: builder .append(getIdentifier(schema.getColumnName())) @@ -123,7 +129,7 @@ private static String getShowCreateTableSQL(final TsTable table) { builder.append(","); } - if (table.getColumnList().size() > 1) { + if (!table.getColumnList().isEmpty()) { builder.deleteCharAt(builder.length() - 1); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateViewTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateViewTask.java index f4a8578c1e7e2..3c1f8bc73eeaf 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateViewTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateViewTask.java @@ -99,7 +99,13 @@ public static String getShowCreateViewSQL(final TsTable table) { .append("TAG"); break; case TIME: - continue; + builder + .append(getIdentifier(schema.getColumnName())) + .append(" ") + .append(schema.getDataType()) + .append(" ") + .append("TIME"); + break; case FIELD: builder .append(getIdentifier(schema.getColumnName())) @@ -122,7 +128,7 @@ public static String getShowCreateViewSQL(final TsTable table) { builder.append(","); } - if (table.getColumnList().size() > 1) { + if (!table.getColumnList().isEmpty()) { builder.deleteCharAt(builder.length() - 1); } From 563ef5f6df40f780f4f4e4b96ae6e1748c5a0cd8 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Fri, 10 Apr 2026 16:55:30 +0800 Subject: [PATCH 02/16] fix --- .../iotdb/relational/it/schema/IoTDBTableIT.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 6663591975501..b929731bb0485 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 @@ -306,7 +306,7 @@ public void testManageTable() { } statement.execute( - "create table table2(region_id STRING TAG, plant_id STRING TAG, color STRING ATTRIBUTE, temperature FLOAT FIELD) with (TTL=6600000)"); + "create table table2(t1 TIMESTAMP TIME, region_id STRING TAG, plant_id STRING TAG, color STRING ATTRIBUTE, temperature FLOAT FIELD) with (TTL=6600000)"); statement.execute("alter table table2 add column speed DOUBLE FIELD COMMENT 'fast'"); @@ -314,7 +314,7 @@ public void testManageTable() { statement.executeQuery("show create table table2"), "Table,Create Table,", Collections.singleton( - "table2,CREATE TABLE \"table2\" (\"region_id\" STRING TAG,\"plant_id\" STRING TAG,\"color\" STRING ATTRIBUTE,\"temperature\" FLOAT FIELD,\"speed\" DOUBLE FIELD COMMENT 'fast') WITH (ttl=6600000),")); + "table2,CREATE TABLE \"table2\" (\"t1\" TIMESTAMP TIME,\"region_id\" STRING TAG,\"plant_id\" STRING TAG,\"color\" STRING ATTRIBUTE,\"temperature\" FLOAT FIELD,\"speed\" DOUBLE FIELD COMMENT 'fast') WITH (ttl=6600000),")); try { statement.execute("alter table table2 add column speed DOUBLE FIELD"); @@ -422,7 +422,7 @@ public void testManageTable() { assertEquals(columnNames.length, cnt); } - columnNames = new String[] {"time", "region_id", "plant_id", "color", "temperature", "speed"}; + columnNames = new String[] {"t1", "region_id", "plant_id", "color", "temperature", "speed"}; dataTypes = new String[] {"TIMESTAMP", "STRING", "STRING", "STRING", "FLOAT", "DOUBLE"}; categories = new String[] {"TIME", "TAG", "TAG", "ATTRIBUTE", "FIELD", "FIELD"}; @@ -451,7 +451,7 @@ public void testManageTable() { // Test comment // Before - columnNames = new String[] {"time", "region_id", "plant_id", "temperature", "speed"}; + columnNames = new String[] {"t1", "region_id", "plant_id", "temperature", "speed"}; dataTypes = new String[] {"TIMESTAMP", "STRING", "STRING", "FLOAT", "DOUBLE"}; categories = new String[] {"TIME", "TAG", "TAG", "FIELD", "FIELD"}; statuses = new String[] {"USING", "USING", "USING", "USING", "USING"}; @@ -1066,14 +1066,14 @@ public void testTreeViewTable() throws Exception { statement.executeQuery("show create view view_table"), "View,Create View,", Collections.singleton( - "view_table,CREATE VIEW \"view_table\" (\"tag1\" STRING TAG,\"tag2\" STRING TAG,\"s11\" INT32 FIELD,\"s3\" STRING FIELD FROM \"s2\") RESTRICT WITH (ttl=100) AS root.\"重庆\".\"1\".**,")); + "view_table,CREATE VIEW \"view_table\" (\"time\" TIMESTAMP TIME,\"tag1\" STRING TAG,\"tag2\" STRING TAG,\"s11\" INT32 FIELD,\"s3\" STRING FIELD FROM \"s2\") RESTRICT WITH (ttl=100) AS root.\"重庆\".\"1\".**,")); // Can also use "show create table" TestUtils.assertResultSetEqual( statement.executeQuery("show create table view_table"), "View,Create View,", Collections.singleton( - "view_table,CREATE VIEW \"view_table\" (\"tag1\" STRING TAG,\"tag2\" STRING TAG,\"s11\" INT32 FIELD,\"s3\" STRING FIELD FROM \"s2\") RESTRICT WITH (ttl=100) AS root.\"重庆\".\"1\".**,")); + "view_table,CREATE VIEW \"view_table\" (\"time\" TIMESTAMP TIME,\"tag1\" STRING TAG,\"tag2\" STRING TAG,\"s11\" INT32 FIELD,\"s3\" STRING FIELD FROM \"s2\") RESTRICT WITH (ttl=100) AS root.\"重庆\".\"1\".**,")); statement.execute("create table a ()"); try { From 00ee943fad5bac54e6a07642ae1973e30798dcc5 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Fri, 10 Apr 2026 17:05:40 +0800 Subject: [PATCH 03/16] fix --- .../iotdb/relational/it/schema/IoTDBTableIT.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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 b929731bb0485..6cfebd04c7363 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 @@ -480,7 +480,7 @@ public void testManageTable() { // After statement.execute("COMMENT ON COLUMN table2.region_id IS '重庆'"); statement.execute("COMMENT ON COLUMN table2.region_id IS NULL"); - statement.execute("COMMENT ON COLUMN test2.table2.time IS 'recent'"); + statement.execute("COMMENT ON COLUMN test2.table2.t1 IS 'recent'"); statement.execute("COMMENT ON COLUMN test2.table2.region_id IS ''"); comments = new String[] {"recent", "", null, null, "fast"}; @@ -527,7 +527,7 @@ public void testManageTable() { } try { - statement.execute("alter table table2 drop column time"); + statement.execute("alter table table2 drop column t1"); } catch (final SQLException e) { assertEquals("701: Dropping tag or time column is not supported.", e.getMessage()); } @@ -619,8 +619,14 @@ public void testManageTable() { // Test time column // More time column tests are included in other IT - statement.execute("create table test100 (time time)"); - statement.execute("create table test101 (time timestamp time)"); + statement.execute("create table test100 (t1 time)"); + statement.execute("create table test101 (t1 timestamp time)"); + + TestUtils.assertResultSetEqual( + statement.executeQuery("show create table test100"), + "Table,Create Table,", + Collections.singleton( + "table2,CREATE TABLE \"test100\" (\"t1\" TIMESTAMP TIME) WITH (ttl=6600000),")); } catch (final SQLException e) { e.printStackTrace(); fail(e.getMessage()); From f2eb47e41de04173a5457650eb80f0363f49d3bd Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Fri, 10 Apr 2026 17:06:29 +0800 Subject: [PATCH 04/16] ger-shop --- .../org/apache/iotdb/relational/it/schema/IoTDBTableIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6cfebd04c7363..56cdb19f12f13 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 @@ -626,7 +626,7 @@ public void testManageTable() { statement.executeQuery("show create table test100"), "Table,Create Table,", Collections.singleton( - "table2,CREATE TABLE \"test100\" (\"t1\" TIMESTAMP TIME) WITH (ttl=6600000),")); + "test100,CREATE TABLE \"test100\" (\"t1\" TIMESTAMP TIME) WITH (ttl='INF'),")); } catch (final SQLException e) { e.printStackTrace(); fail(e.getMessage()); From 5d4f53265a1b2a0aac5f775b22fddeecc518d126 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Fri, 10 Apr 2026 18:14:58 +0800 Subject: [PATCH 05/16] Update TsTable.java --- .../apache/iotdb/commons/schema/table/TsTable.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java index 48cd81b39e142..e5ca8a92eaa01 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java @@ -141,6 +141,19 @@ public TsTableColumnSchema getColumnSchema(final String columnName) { } } + // No need to acquire lock, because the time column is fixed after table creation + // And the inner name is protected by the volatile keyword + public TsTableColumnSchema getTimeColumnSchema() { + if (Objects.isNull(timeColumnSchema)) { + timeColumnSchema = + columnSchemaMap.values().stream() + .filter(column -> column instanceof TimeColumnSchema) + .findFirst() + .orElse(null); + } + return timeColumnSchema; + } + /** * Execute a write operation with optimistic lock support. This method handles the write flag and * version increment automatically. From f24e17f3e7b4e9a562c6b79cf0e51a00c6948b81 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Fri, 10 Apr 2026 18:16:23 +0800 Subject: [PATCH 06/16] b --- .../iotdb/commons/schema/table/TsTable.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java index e5ca8a92eaa01..7605876f585bb 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java @@ -25,6 +25,7 @@ import org.apache.iotdb.commons.schema.table.column.AttributeColumnSchema; import org.apache.iotdb.commons.schema.table.column.FieldColumnSchema; import org.apache.iotdb.commons.schema.table.column.TagColumnSchema; +import org.apache.iotdb.commons.schema.table.column.TimeColumnSchema; import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory; import org.apache.iotdb.commons.schema.table.column.TsTableColumnSchema; import org.apache.iotdb.commons.schema.table.column.TsTableColumnSchemaUtil; @@ -93,6 +94,9 @@ public class TsTable { private transient int tagNums = 0; private transient int fieldNum = 0; + // Initiated during creation and never changed the reference + private transient TsTableColumnSchema timeColumnSchema; + public TsTable(final String tableName) { this.tableName = tableName; } @@ -101,7 +105,12 @@ public TsTable(final String tableName) { public TsTable(String tableName, ImmutableList columnSchemas) { this.tableName = tableName; columnSchemas.forEach( - columnSchema -> columnSchemaMap.put(columnSchema.getColumnName(), columnSchema)); + columnSchema -> { + columnSchemaMap.put(columnSchema.getColumnName(), columnSchema); + if (columnSchema instanceof TimeColumnSchema) { + timeColumnSchema = columnSchema; + } + }); } public TsTable(TsTable origin) { @@ -146,10 +155,10 @@ public TsTableColumnSchema getColumnSchema(final String columnName) { public TsTableColumnSchema getTimeColumnSchema() { if (Objects.isNull(timeColumnSchema)) { timeColumnSchema = - columnSchemaMap.values().stream() - .filter(column -> column instanceof TimeColumnSchema) - .findFirst() - .orElse(null); + columnSchemaMap.values().stream() + .filter(column -> column instanceof TimeColumnSchema) + .findFirst() + .orElse(null); } return timeColumnSchema; } From 322ba9b48b80743e91e909287e5de4c2c20cf2b4 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Fri, 10 Apr 2026 18:17:38 +0800 Subject: [PATCH 07/16] fix --- .../iotdb/commons/schema/table/TsTable.java | 30 ++----------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java index 7605876f585bb..4a82bdd70a0b9 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java @@ -22,9 +22,6 @@ import org.apache.iotdb.commons.conf.CommonDescriptor; import org.apache.iotdb.commons.exception.MetadataException; import org.apache.iotdb.commons.exception.runtime.SchemaExecutionException; -import org.apache.iotdb.commons.schema.table.column.AttributeColumnSchema; -import org.apache.iotdb.commons.schema.table.column.FieldColumnSchema; -import org.apache.iotdb.commons.schema.table.column.TagColumnSchema; import org.apache.iotdb.commons.schema.table.column.TimeColumnSchema; import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory; import org.apache.iotdb.commons.schema.table.column.TsTableColumnSchema; @@ -237,33 +234,10 @@ public void renameColumnSchema(final String oldName, final String newName) { () -> { // Ensures idempotency if (columnSchemaMap.containsKey(oldName)) { - final TsTableColumnSchema schema = columnSchemaMap.remove(oldName); + final TsTableColumnSchema schema = columnSchemaMap.get(oldName); final Map oldProps = schema.getProps(); oldProps.computeIfAbsent(TreeViewSchema.ORIGINAL_NAME, k -> schema.getColumnName()); - switch (schema.getColumnCategory()) { - case TAG: - columnSchemaMap.put( - newName, new TagColumnSchema(newName, schema.getDataType(), oldProps)); - break; - case FIELD: - columnSchemaMap.put( - newName, - new FieldColumnSchema( - newName, - schema.getDataType(), - ((FieldColumnSchema) schema).getEncoding(), - ((FieldColumnSchema) schema).getCompressor(), - oldProps)); - break; - case ATTRIBUTE: - columnSchemaMap.put( - newName, new AttributeColumnSchema(newName, schema.getDataType(), oldProps)); - break; - case TIME: - default: - // Do nothing - columnSchemaMap.put(oldName, schema); - } + schema.setColumnName(newName); } }); } From 4444e9a68f4356159fb21ca0f13692fcf44690d9 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Fri, 10 Apr 2026 18:18:32 +0800 Subject: [PATCH 08/16] rename --- .../commons/schema/table/column/TsTableColumnSchema.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/column/TsTableColumnSchema.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/column/TsTableColumnSchema.java index 8f773f19be497..8342c08365fd3 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/column/TsTableColumnSchema.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/column/TsTableColumnSchema.java @@ -34,7 +34,7 @@ public abstract class TsTableColumnSchema { - protected String columnName; + protected volatile String columnName; protected TSDataType dataType; @@ -52,6 +52,12 @@ public abstract class TsTableColumnSchema { this.props = props; } + // Only used for column renaming + public TsTableColumnSchema setColumnName(String columnName) { + this.columnName = columnName; + return this; + } + public String getColumnName() { return columnName; } From 1e73ffcd694f683e26f5b1a298bc237d3c448ec7 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Fri, 10 Apr 2026 18:19:35 +0800 Subject: [PATCH 09/16] resultset --- .../org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java index 94c215a52ae21..195237275478c 100644 --- a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java @@ -716,7 +716,7 @@ public void testInformationSchema() throws SQLException { statement.executeQuery("select * from views"), "database,table_name,view_definition,", Collections.singleton( - "test,view_table,CREATE VIEW \"view_table\" (\"tag1\" STRING TAG,\"tag2\" STRING TAG,\"s11\" INT32 FIELD,\"s3\" INT32 FIELD FROM \"s2\") RESTRICT WITH (ttl=100) AS root.\"a\".**,")); + "test,view_table,CREATE VIEW \"view_table\" (\"time\" TIMESTAMP TIME,\"tag1\" STRING TAG,\"tag2\" STRING TAG,\"s11\" INT32 FIELD,\"s3\" INT32 FIELD FROM \"s2\") RESTRICT WITH (ttl=100) AS root.\"a\".**,")); TestUtils.assertResultSetEqual( statement.executeQuery( From 3072cd0dabe67f06741c0f13a92dfe17a43f12e6 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Wed, 22 Apr 2026 15:39:08 +0800 Subject: [PATCH 10/16] Update IoTDBTableIT.java --- .../org/apache/iotdb/relational/it/schema/IoTDBTableIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 56cdb19f12f13..4a61dc8b0c8cb 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 @@ -619,7 +619,7 @@ public void testManageTable() { // Test time column // More time column tests are included in other IT - statement.execute("create table test100 (t1 time)"); + statement.execute("create table test100 (t1 time) with (ttl='INF')"); statement.execute("create table test101 (t1 timestamp time)"); TestUtils.assertResultSetEqual( From c4e17599b33343ca608c9eb0412a6ead5a795be5 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Wed, 22 Apr 2026 17:41:26 +0800 Subject: [PATCH 11/16] fix --- .../metadata/relational/ShowCreateTableTask.java | 10 ++++++---- .../config/metadata/relational/ShowCreateViewTask.java | 9 +++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateTableTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateTableTask.java index 1d0ede7e03db8..5acb26d90fc26 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateTableTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateTableTask.java @@ -137,10 +137,12 @@ private static String getShowCreateTableSQL(final TsTable table) { if (table.getPropValue(TsTable.COMMENT_KEY).isPresent()) { builder.append(" COMMENT ").append(getString(table.getPropValue(TsTable.COMMENT_KEY).get())); } - builder - .append(" WITH (ttl=") - .append(table.getPropValue(TsTable.TTL_PROPERTY).orElse("'" + TTL_INFINITE + "'")) - .append(")"); + + String ttlString = table.getPropValue(TsTable.TTL_PROPERTY).orElse(TTL_INFINITE); + if (ttlString.equals(TTL_INFINITE)) { + ttlString = "'" + ttlString + "'"; + } + builder.append(" WITH (ttl=").append(ttlString).append(")"); return builder.toString(); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateViewTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateViewTask.java index 3c1f8bc73eeaf..ed4bde5f71ed2 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateViewTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/ShowCreateViewTask.java @@ -142,10 +142,11 @@ public static String getShowCreateViewSQL(final TsTable table) { builder.append(" RESTRICT"); } - builder - .append(" WITH (ttl=") - .append(table.getPropValue(TsTable.TTL_PROPERTY).orElse("'" + TTL_INFINITE + "'")) - .append(")"); + String ttlString = table.getPropValue(TsTable.TTL_PROPERTY).orElse(TTL_INFINITE); + if (ttlString.equals(TTL_INFINITE)) { + ttlString = "'" + ttlString + "'"; + } + builder.append(" WITH (ttl=").append(ttlString).append(")"); builder.append(" AS "); From 2b39701aadfed2b5e2f36f5a96cb014dc0384b35 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Wed, 22 Apr 2026 18:17:51 +0800 Subject: [PATCH 12/16] fix --- .../table/view/CreateTableViewProcedure.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/view/CreateTableViewProcedure.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/view/CreateTableViewProcedure.java index b7fb458c8bb01..c6defba4c8680 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/view/CreateTableViewProcedure.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/view/CreateTableViewProcedure.java @@ -91,18 +91,16 @@ protected void checkTableExistence(final ConfigNodeProcedureEnv env) { } else { oldView = oldTableAndStatus.get().getLeft(); oldStatus = oldTableAndStatus.get().getRight(); - setNextState(CreateTableState.PRE_CREATE); } - } else { - final TDatabaseSchema schema = - env.getConfigManager().getClusterSchemaManager().getDatabaseSchemaByName(database); - if (!table.getPropValue(TsTable.TTL_PROPERTY).isPresent() - && schema.isSetTTL() - && schema.getTTL() != Long.MAX_VALUE) { - table.addProp(TsTable.TTL_PROPERTY, String.valueOf(schema.getTTL())); - } - setNextState(CreateTableState.PRE_CREATE); } + final TDatabaseSchema schema = + env.getConfigManager().getClusterSchemaManager().getDatabaseSchemaByName(database); + if (!table.getPropValue(TsTable.TTL_PROPERTY).isPresent() + && schema.isSetTTL() + && schema.getTTL() != Long.MAX_VALUE) { + table.addProp(TsTable.TTL_PROPERTY, String.valueOf(schema.getTTL())); + } + setNextState(CreateTableState.PRE_CREATE); } catch (final MetadataException | DatabaseNotExistsException e) { setFailure(new ProcedureException(e)); } From d61925da715483da9ea01c6a4548a101573d6f4f Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Wed, 22 Apr 2026 18:24:58 +0800 Subject: [PATCH 13/16] fix --- .../apache/iotdb/relational/it/schema/IoTDBTableIT.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 4a61dc8b0c8cb..87ec99287843b 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 @@ -1052,8 +1052,14 @@ public void testTreeViewTable() throws Exception { EnvFactory.getEnv() .getConnection("testUser", "testUser123456", BaseEnv.TABLE_SQL_DIALECT); final Statement statement = connection.createStatement()) { + statement.execute("alter database tree_view_db set properties ttl=100"); statement.execute( - "create or replace view tree_view_db.view_table (tag1 tag, tag2 tag, s11 int32 field, s3 from s2) restrict with (ttl=100) as root.\"重庆\".\"1\".**"); + "create or replace view tree_view_db.view_table (tag1 tag, tag2 tag, s11 int32 field, s3 from s2) restrict as root.\"重庆\".\"1\".**"); + + TestUtils.assertResultSetEqual( + statement.executeQuery("show tables"), + "TableName,TTL(ms),", + Collections.singleton("view_table,100,")); } catch (final SQLException e) { fail(); } From a48f166bf6848c8a9f5a5cd0af2e4fe9252eb3a1 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Tue, 21 Apr 2026 10:20:38 +0800 Subject: [PATCH 14/16] part --- .../dataregion/realtime/PipeRealtimeDataRegionSource.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/source/dataregion/realtime/PipeRealtimeDataRegionSource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/source/dataregion/realtime/PipeRealtimeDataRegionSource.java index 2ab2061ce7e73..aec2f63b7f837 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/source/dataregion/realtime/PipeRealtimeDataRegionSource.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/source/dataregion/realtime/PipeRealtimeDataRegionSource.java @@ -442,8 +442,11 @@ protected void extractProgressReportEvent(final PipeRealtimeEvent event) { } pendingQueue.pollLast(); } - if (pendingQueue.peekLast() instanceof ProgressReportEvent) { - final ProgressReportEvent oldEvent = (ProgressReportEvent) pendingQueue.peekLast(); + final Event last = pendingQueue.peekLast(); + if (last instanceof PipeRealtimeEvent + && ((PipeRealtimeEvent) last).getEvent() instanceof ProgressReportEvent) { + final ProgressReportEvent oldEvent = + (ProgressReportEvent) ((PipeRealtimeEvent) last).getEvent(); oldEvent.bindProgressIndex( oldEvent .getProgressIndex() From d94058cddaae8062c981847b13731189e0f07829 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Thu, 23 Apr 2026 09:36:03 +0800 Subject: [PATCH 15/16] npe --- .../pipe/sink/protocol/thrift/sync/IoTDBDataRegionSyncSink.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/sync/IoTDBDataRegionSyncSink.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/sync/IoTDBDataRegionSyncSink.java index d711c65b9e363..9357a8c6a6d7d 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/sync/IoTDBDataRegionSyncSink.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/sync/IoTDBDataRegionSyncSink.java @@ -252,7 +252,7 @@ private void doTransfer(final PipeDeleteDataNodeEvent pipeDeleteDataNodeEvent) String.format( "Transfer deletion %s error, result status %s.", pipeDeleteDataNodeEvent.getDeleteDataNode().getType(), status), - pipeDeleteDataNodeEvent.getDeletionResource().toString(), + pipeDeleteDataNodeEvent.getDeleteDataNode().toString(), true); } From 5649d8401620167f32cab25c4980a87eee1f2bec Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Fri, 24 Apr 2026 12:37:29 +0800 Subject: [PATCH 16/16] fix --- .../apache/iotdb/relational/it/schema/IoTDBTableIT.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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 87ec99287843b..c3a72d3c23a59 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 @@ -1049,19 +1049,18 @@ public void testTreeViewTable() throws Exception { } try (final Connection connection = - EnvFactory.getEnv() - .getConnection("testUser", "testUser123456", BaseEnv.TABLE_SQL_DIALECT); + EnvFactory.getEnv().getConnection(BaseEnv.TABLE_SQL_DIALECT); final Statement statement = connection.createStatement()) { statement.execute("alter database tree_view_db set properties ttl=100"); statement.execute( "create or replace view tree_view_db.view_table (tag1 tag, tag2 tag, s11 int32 field, s3 from s2) restrict as root.\"重庆\".\"1\".**"); TestUtils.assertResultSetEqual( - statement.executeQuery("show tables"), + statement.executeQuery("show tables from tree_view_db"), "TableName,TTL(ms),", Collections.singleton("view_table,100,")); } catch (final SQLException e) { - fail(); + fail(e.getMessage()); } try (final Connection connection =