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.");
}
/** */