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) {

Reply via email to