You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2023/04/17 15:29:53 UTC
[ignite-3] branch ignite-19262 created (now d225502510)
This is an automated email from the ASF dual-hosted git repository.
amashenkov pushed a change to branch ignite-19262
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
at d225502510 Minor.
This branch includes the following new commits:
new d225502510 Minor.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[ignite-3] 01/01: Minor.
Posted by am...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
amashenkov pushed a commit to branch ignite-19262
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit d225502510779cc0dd1899cfb8b28e4ed59487bd
Author: amashenkov <an...@gmail.com>
AuthorDate: Mon Apr 17 18:29:43 2023 +0300
Minor.
---
.../ignite/internal/sql/engine/ItCreateTableDdlTest.java | 11 +++++++++++
.../apache/ignite/internal/sql/engine/SqlQueryProcessor.java | 9 +++++++--
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
index e7a54f0552..c570e3dd72 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
@@ -27,6 +27,7 @@ import org.apache.ignite.internal.schema.Column;
import org.apache.ignite.internal.table.TableImpl;
import org.apache.ignite.lang.IgniteException;
import org.apache.ignite.sql.SqlException;
+import org.apache.ignite.tx.Transaction;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
@@ -155,4 +156,14 @@ public class ItCreateTableDdlTest extends ClusterPerClassIntegrationTest {
assertThat(t.getMessage(), containsString("Functional defaults are not supported for non-primary key columns"));
}
+
+ @Test
+ public void nonTransactionalDdl() {
+ Transaction tx = CLUSTER_NODES.get(0).transactions().begin();
+
+ SqlException t = assertThrows(SqlException.class,
+ () -> sql(tx, "create table t (id varchar default gen_random_uuid primary key, val int)"));
+
+ assertThat(t.getMessage(), containsString("DDL doesn't support transactions."));
+ }
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
index 4366c4f63a..2a1be4591d 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
@@ -23,6 +23,7 @@ import static org.apache.ignite.lang.ErrorGroups.Sql.QUERY_INVALID_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.SCHEMA_NOT_FOUND_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.SESSION_EXPIRED_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.SESSION_NOT_FOUND_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.UNSUPPORTED_DDL_OPERATION_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.UNSUPPORTED_SQL_OPERATION_KIND_ERR;
import static org.apache.ignite.lang.IgniteStringFormatter.format;
@@ -414,7 +415,7 @@ public class SqlQueryProcessor implements QueryProcessor {
StatementParseResult parseResult = IgniteSqlParser.parse(sql, StatementParseResult.MODE);
SqlNode sqlNode = parseResult.statement();
- validateParsedStatement(context, parseResult, sqlNode, params);
+ validateParsedStatement(context, outerTx, parseResult, sqlNode, params);
return sqlNode;
})
@@ -591,7 +592,7 @@ public class SqlQueryProcessor implements QueryProcessor {
}
/** Performs additional validation of a parsed statement. **/
- private static void validateParsedStatement(QueryContext context, ParseResult parseResult, SqlNode node, Object[] params) {
+ private static void validateParsedStatement(QueryContext context, InternalTransaction outerTx, ParseResult parseResult, SqlNode node, Object[] params) {
Set<SqlQueryType> allowedTypes = context.allowedQueryTypes();
SqlQueryType queryType = Commons.getQueryType(node);
@@ -607,6 +608,10 @@ public class SqlQueryProcessor implements QueryProcessor {
throw new QueryValidationException(message);
}
+ if (SqlQueryType.DDL == queryType && outerTx != null) {
+ throw new SqlException(UNSUPPORTED_DDL_OPERATION_ERR, "DDL doesn't support transactions.");
+ }
+
if (parseResult.dynamicParamsCount() != params.length) {
String message = format(
"Unexpected number of query parameters. Provided {} but there is only {} dynamic parameter(s).",