This is an automated email from the ASF dual-hosted git repository.
zstan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 8ec31d2897 IGNITE-23949 Sql. Disable unsupported ASOF join (#5029)
8ec31d2897 is described below
commit 8ec31d2897217b2b93dad08e3833bcfe0d93af33
Author: Evgeniy Stanilovskiy <[email protected]>
AuthorDate: Wed Jan 15 08:08:25 2025 +0300
IGNITE-23949 Sql. Disable unsupported ASOF join (#5029)
---
.../org/apache/ignite/internal/sql/engine/ItJoinTest.java | 15 +++++++++++++++
.../internal/sql/engine/prepare/IgniteSqlValidator.java | 7 +++++++
2 files changed, 22 insertions(+)
diff --git
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
index 992e311022..28404792f2 100644
---
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
+++
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
@@ -1130,4 +1130,19 @@ public class ItJoinTest extends BaseSqlIntegrationTest {
sql("DROP TABLE t2_ij");
}
}
+
+ @Test
+ public void testUnsupportedAsofJoin() {
+ assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "Unsupported join
type: ASOF", () -> sql("SELECT *\n"
+ + " FROM (VALUES (NULL, 0)) AS t1(k, t)\n"
+ + " ASOF JOIN (VALUES (1, NULL)) AS t2(k, t)\n"
+ + " MATCH_CONDITION t2.t < t1.t\n"
+ + " ON t1.k = t2.k"));
+
+ assertThrowsSqlException(Sql.STMT_VALIDATION_ERR, "Unsupported join
type: LEFT ASOF", () -> sql("SELECT *\n"
+ + " FROM (VALUES (NULL, 0)) AS t1(k, t)\n"
+ + " LEFT ASOF JOIN (VALUES (1, NULL)) AS t2(k, t)\n"
+ + " MATCH_CONDITION t2.t < t1.t\n"
+ + " ON t1.k = t2.k"));
+ }
}
diff --git
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgniteSqlValidator.java
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgniteSqlValidator.java
index 83d557a514..a8957e64d7 100644
---
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgniteSqlValidator.java
+++
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgniteSqlValidator.java
@@ -22,6 +22,7 @@ import static org.apache.calcite.sql.type.SqlTypeName.INTEGER;
import static org.apache.calcite.sql.type.SqlTypeUtil.isNull;
import static org.apache.calcite.util.Static.RESOURCE;
import static org.apache.ignite.internal.lang.IgniteStringFormatter.format;
+import static org.apache.ignite.lang.ErrorGroups.Sql.STMT_VALIDATION_ERR;
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
@@ -49,6 +50,7 @@ import org.apache.calcite.runtime.PairList;
import org.apache.calcite.runtime.Resources;
import org.apache.calcite.schema.impl.ModifiableViewTable;
import org.apache.calcite.sql.JoinConditionType;
+import org.apache.calcite.sql.JoinType;
import org.apache.calcite.sql.SqlAggFunction;
import org.apache.calcite.sql.SqlBasicCall;
import org.apache.calcite.sql.SqlCall;
@@ -103,6 +105,7 @@ import
org.apache.ignite.internal.sql.engine.util.IgniteCustomAssignmentsRules;
import org.apache.ignite.internal.sql.engine.util.IgniteResource;
import org.apache.ignite.internal.sql.engine.util.TypeUtils;
import org.apache.ignite.internal.type.NativeTypeSpec;
+import org.apache.ignite.sql.SqlException;
import org.jetbrains.annotations.Nullable;
/** Validator. */
@@ -940,6 +943,10 @@ public class IgniteSqlValidator extends SqlValidatorImpl {
@Override
protected void validateJoin(SqlJoin join, SqlValidatorScope scope) {
+ if (join.getJoinType() == JoinType.ASOF || join.getJoinType() ==
JoinType.LEFT_ASOF) {
+ throw new SqlException(STMT_VALIDATION_ERR, "Unsupported join
type: " + join.getJoinType().toString().replace("_", " "));
+ }
+
super.validateJoin(join, scope);
if (join.isNatural() || join.getConditionType() ==
JoinConditionType.USING) {