This is an automated email from the ASF dual-hosted git repository.

alexpl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 136ea6704fd IGNITE-23468 SQL Calcite: Fix error message for 
unsupported 'FORMAT' in 'CAST' - Fixes #11600.
136ea6704fd is described below

commit 136ea6704fdf1f355eaa63f4979d2fe6fe688c2c
Author: Vladimir Steshin <[email protected]>
AuthorDate: Fri Oct 18 11:36:45 2024 +0300

    IGNITE-23468 SQL Calcite: Fix error message for unsupported 'FORMAT' in 
'CAST' - Fixes #11600.
    
    Signed-off-by: Aleksey Plekhanov <[email protected]>
---
 .../internal/processors/query/calcite/prepare/IgniteSqlValidator.java | 4 ++++
 .../ignite/internal/processors/query/calcite/util/IgniteResource.java | 4 ++++
 .../internal/processors/query/calcite/integration/DateTimeTest.java   | 4 ++++
 3 files changed, 12 insertions(+)

diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
index 2565a7bdfd1..30674430cf3 100644
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
+++ 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
@@ -281,6 +281,10 @@ public class IgniteSqlValidator extends SqlValidatorImpl {
             if (isSystemFieldName(alias))
                 throw newValidationError(call, 
IgniteResource.INSTANCE.illegalAlias(alias));
         }
+        else if (call.getKind() == SqlKind.CAST) {
+            if (call.getOperandList().size() > 2)
+                throw newValidationError(call, 
IgniteResource.INSTANCE.invalidCastParameters());
+        }
 
         super.validateCall(call, scope);
     }
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/IgniteResource.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/IgniteResource.java
index e443ead6381..f4d7181c6fd 100644
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/IgniteResource.java
+++ 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/IgniteResource.java
@@ -76,4 +76,8 @@ public interface IgniteResource {
     /** */
     @Resources.BaseMessage("Unsupported clause ''{0}''")
     Resources.ExInst<SqlValidatorException> unsupportedClause(String value);
+
+    /** */
+    @Resources.BaseMessage("Operator ''CAST'' supports only the parameters: 
value and target type.")
+    Resources.ExInst<SqlValidatorException> invalidCastParameters();
 }
diff --git 
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/DateTimeTest.java
 
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/DateTimeTest.java
index 2bf25ef6a18..a2d23d8b18a 100644
--- 
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/DateTimeTest.java
+++ 
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/DateTimeTest.java
@@ -26,6 +26,7 @@ import org.apache.ignite.IgniteCache;
 import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.cache.QueryEntity;
 import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.processors.query.IgniteSQLException;
 import org.junit.Test;
 
 import static java.util.Collections.singletonList;
@@ -224,6 +225,9 @@ public class DateTimeTest extends 
AbstractBasicIntegrationTransactionalTest {
 
         assertQuery("SELECT CAST('01:02:03' AS TIME)")
             .returns(sqlTime("01:02:03")).check();
+
+        assertThrows("SELECT CAST('2021-01-02' AS DATE FORMAT 'DD-MM-YY')", 
IgniteSQLException.class,
+            "Operator 'CAST' supports only the parameters: value and target 
type.");
     }
 
     /** */

Reply via email to