This is an automated email from the ASF dual-hosted git repository.
jiangtian 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 aac66ce5708 Modify 'set configuration' in relational grammar (#13186)
aac66ce5708 is described below
commit aac66ce5708d78235e28b317145ff48eef7c8b66
Author: shuwenwei <[email protected]>
AuthorDate: Tue Aug 20 10:51:36 2024 +0800
Modify 'set configuration' in relational grammar (#13186)
* modify 'set configuration' in ast builder
* fix it
---
.../relational/it/db/it/IoTDBInsertTableIT.java | 8 ++++----
.../it/db/it/IoTDBSetConfigurationTableIT.java | 23 +++++++++++++++-------
.../plan/relational/sql/parser/AstBuilder.java | 11 ++++++++---
3 files changed, 28 insertions(+), 14 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 b56726f333b..b1fd16cc0e3 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
@@ -176,7 +176,7 @@ public class IoTDBInsertTableIT {
try (Connection connection =
EnvFactory.getEnv().getConnection(BaseEnv.TABLE_SQL_DIALECT);
Statement statement = connection.createStatement()) {
statement.execute("USE \"test\"");
- statement.execute("SET CONFIGURATION enable_auto_create_schema=false");
+ statement.execute("SET CONFIGURATION enable_auto_create_schema='false'");
statement.execute(
"create table sg5 (id1 string id, s1 text measurement, s2 double
measurement)");
@@ -188,7 +188,7 @@ public class IoTDBInsertTableIT {
} finally {
try (Connection connection =
EnvFactory.getEnv().getConnection(BaseEnv.TABLE_SQL_DIALECT);
Statement statement = connection.createStatement()) {
- statement.execute("SET CONFIGURATION enable_auto_create_schema=true");
+ statement.execute("SET CONFIGURATION
enable_auto_create_schema='true'");
}
}
@@ -235,7 +235,7 @@ public class IoTDBInsertTableIT {
public void testPartialInsertTablet() {
try (ISession session =
EnvFactory.getEnv().getSessionConnection(BaseEnv.TABLE_SQL_DIALECT)) {
session.executeNonQueryStatement("use \"test\"");
- session.executeNonQueryStatement("SET CONFIGURATION
enable_auto_create_schema=false");
+ session.executeNonQueryStatement("SET CONFIGURATION
enable_auto_create_schema='false'");
session.executeNonQueryStatement(
"create table sg6 (id1 string id, s1 int64 measurement, s2 int64
measurement)");
List<IMeasurementSchema> schemaList = new ArrayList<>();
@@ -285,7 +285,7 @@ public class IoTDBInsertTableIT {
fail(e.getMessage());
}
} finally {
- session.executeNonQueryStatement("SET CONFIGURATION
enable_auto_create_schema=false");
+ session.executeNonQueryStatement("SET CONFIGURATION
enable_auto_create_schema='false'");
}
try (SessionDataSet dataSet = session.executeQueryStatement("SELECT *
FROM sg6")) {
assertEquals(dataSet.getColumnNames().size(), 4);
diff --git
a/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBSetConfigurationTableIT.java
b/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBSetConfigurationTableIT.java
index 92cde92d288..e4467363f5d 100644
---
a/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBSetConfigurationTableIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBSetConfigurationTableIT.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.commons.conf.CommonConfig;
import org.apache.iotdb.it.env.EnvFactory;
import org.apache.iotdb.it.env.cluster.node.AbstractNodeWrapper;
import org.apache.iotdb.it.framework.IoTDBTestRunner;
+import org.apache.iotdb.itbase.category.TableClusterIT;
import org.apache.iotdb.itbase.category.TableLocalStandaloneIT;
import org.apache.iotdb.itbase.env.BaseEnv;
@@ -41,7 +42,7 @@ import java.sql.Statement;
import java.util.Arrays;
@RunWith(IoTDBTestRunner.class)
-@Category({TableLocalStandaloneIT.class})
+@Category({TableLocalStandaloneIT.class, TableClusterIT.class})
public class IoTDBSetConfigurationTableIT {
@BeforeClass
public static void setUp() throws Exception {
@@ -57,11 +58,20 @@ public class IoTDBSetConfigurationTableIT {
public void testSetConfiguration() {
try (Connection connection =
EnvFactory.getEnv().getConnection(BaseEnv.TABLE_SQL_DIALECT);
Statement statement = connection.createStatement()) {
- statement.execute("set configuration
enable_seq_space_compaction=\"false\"");
- statement.execute("set configuration
enable_unseq_space_compaction=\'false\' on 0");
- statement.execute("set configuration enable_cross_space_compaction=false
on 1");
- statement.execute(
- "set configuration
max_inner_compaction_candidate_file_num=1,max_cross_compaction_candidate_file_num=1
on 1");
+ statement.execute("set configuration
\"enable_seq_space_compaction\"='false'");
+ int configNodeNum =
EnvFactory.getEnv().getConfigNodeWrapperList().size();
+ int dataNodeNum = EnvFactory.getEnv().getDataNodeWrapperList().size();
+
+ for (int i = 0; i < configNodeNum; i++) {
+ statement.execute("set configuration
enable_unseq_space_compaction=\'false\' on " + i);
+ }
+ for (int i = 0; i < dataNodeNum; i++) {
+ int dnId = configNodeNum + i;
+ statement.execute("set configuration
\"enable_cross_space_compaction\"='false' on " + dnId);
+ statement.execute(
+ "set configuration
max_inner_compaction_candidate_file_num='1',max_cross_compaction_candidate_file_num='1'
on "
+ + dnId);
+ }
} catch (Exception e) {
Assert.fail(e.getMessage());
}
@@ -96,7 +106,6 @@ public class IoTDBSetConfigurationTableIT {
+ CommonConfig.SYSTEM_CONFIG_NAME;
File f = new File(systemPropertiesPath);
String fileContent = new String(Files.readAllBytes(f.toPath()));
- System.out.println(fileContent);
return Arrays.stream(contents).allMatch(fileContent::contains);
} catch (IOException ignore) {
return false;
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 1780c5e0061..909acf341ca 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
@@ -125,6 +125,7 @@ import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Statement;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StringLiteral;
import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SubqueryExpression;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Table;
+import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableExpressionType;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TableSubquery;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.TimeRange;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Trim;
@@ -180,7 +181,6 @@ import static
org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory
import static
org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory.MEASUREMENT;
import static
org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory.TIME;
import static
org.apache.iotdb.db.queryengine.plan.parser.ASTVisitor.parseDateTimeFormat;
-import static
org.apache.iotdb.db.queryengine.plan.parser.ASTVisitor.parseStringLiteral;
import static
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.GroupingSets.Type.CUBE;
import static
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.GroupingSets.Type.EXPLICIT;
import static
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.GroupingSets.Type.ROLLUP;
@@ -710,8 +710,13 @@ public class AstBuilder extends
RelationalSqlBaseVisitor<Node> {
properties = visit(ctx.propertyAssignments().property(), Property.class);
}
for (Property property : properties) {
- String key = parseStringLiteral(property.getName().getValue());
- String value =
parseStringLiteral(property.getNonDefaultValue().toString());
+ String key = property.getName().getValue();
+ Expression propertyValue = property.getNonDefaultValue();
+ if
(!propertyValue.getExpressionType().equals(TableExpressionType.STRING_LITERAL))
{
+ throw new IllegalArgumentException(
+ propertyValue.getExpressionType() + " is not supported for 'set
configuration'");
+ }
+ String value = ((StringLiteral) propertyValue).getValue();
configItems.put(key, value);
}
setConfigurationStatement.setNodeId(nodeId);