This is an automated email from the ASF dual-hosted git repository.
zhehu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/main by this push:
new 5a0480c22e [CALCITE-7066] UNSIGNED types are not supported by
databases like Oracle, SQL Server
5a0480c22e is described below
commit 5a0480c22e14e5a4536348022ff66bbf8ae8e433
Author: Zhe Hu <[email protected]>
AuthorDate: Sat Jun 21 08:45:05 2025 +0800
[CALCITE-7066] UNSIGNED types are not supported by databases like Oracle,
SQL Server
---
.../calcite/sql/validate/SqlConformanceEnum.java | 10 +++++++++-
.../org/apache/calcite/sql/parser/SqlParserTest.java | 18 ++++++++++++++++++
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git
a/core/src/main/java/org/apache/calcite/sql/validate/SqlConformanceEnum.java
b/core/src/main/java/org/apache/calcite/sql/validate/SqlConformanceEnum.java
index d5d99b8099..a905c0ec9c 100644
--- a/core/src/main/java/org/apache/calcite/sql/validate/SqlConformanceEnum.java
+++ b/core/src/main/java/org/apache/calcite/sql/validate/SqlConformanceEnum.java
@@ -508,6 +508,14 @@ public enum SqlConformanceEnum implements SqlConformance {
}
@Override public boolean supportsUnsignedTypes() {
- return true;
+ switch (this) {
+ case BABEL:
+ case DEFAULT:
+ case LENIENT:
+ case MYSQL_5:
+ return true;
+ default:
+ return false;
+ }
}
}
diff --git
a/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java
b/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java
index 5846dac493..f7704aa842 100644
--- a/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java
+++ b/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java
@@ -66,6 +66,7 @@
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Random;
@@ -1426,6 +1427,23 @@ private void checkLarge(int n) {
.same();
sql("SELECT CAST(1 AS BIGINT UNSIGNED)")
.same();
+ List<SqlConformance> unsignedNotSupport =
+ Arrays.asList(
+ SqlConformanceEnum.ORACLE_10,
+ SqlConformanceEnum.ORACLE_12,
+ SqlConformanceEnum.BIG_QUERY,
+ SqlConformanceEnum.PRAGMATIC_99,
+ SqlConformanceEnum.PRAGMATIC_2003,
+ SqlConformanceEnum.PRESTO,
+ SqlConformanceEnum.SQL_SERVER_2008,
+ SqlConformanceEnum.STRICT_92,
+ SqlConformanceEnum.STRICT_99,
+ SqlConformanceEnum.STRICT_2003);
+ unsignedNotSupport.forEach(conformance -> {
+ sql("SELECT CAST(1 AS ^UNSIGNED^)")
+ .withConformance(conformance)
+ .fails("Support for UNSIGNED data types is not enabled");
+ });
sql("SELECT CAST(1 AS ^UNSIGNED^)")
.withConformance(new SqlAbstractConformance() {
@Override public boolean supportsUnsignedTypes() {