Skip to content

Commit df31d6f

Browse files
committed
[CALCITE-7347] UNKNOWN type inferred for array element type
Signed-off-by: Mihai Budiu <mbudiu@feldera.com>
1 parent dd34021 commit df31d6f

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

babel/src/test/resources/sql/spark.iq

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,23 @@
2929
#
3030
# Returns BOOLEAN
3131

32+
# Test case for [CALCITE-7347] https://issues.apache.org/jira/browse/CALCITE-7347
33+
# UNKNOWN type inferred for array element type
34+
SELECT DISTINCT t.f1, t.f2, CAST(t.f3 AS VARCHAR ARRAY) AS f3, t.f4
35+
FROM (VALUES
36+
('a', 1, ARRAY['by'], true),
37+
('b', 1, ARRAY(), false)
38+
) AS t (f1, f2, f3, f4);
39+
EnumerableCalc(expr#0..2=[{inputs}], expr#3=[1], F1=[$t0], F2=[$t3], F3=[$t1], F4=[$t2])
40+
EnumerableAggregate(group=[{0, 1, 2}])
41+
EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t1):VARCHAR NOT NULL ARRAY NOT NULL], F1=[$t0], F3=[$t3], F4=[$t2])
42+
EnumerableUnion(all=[true])
43+
EnumerableCalc(expr#0=[{inputs}], expr#1=['a'], expr#2=['by'], expr#3=[ARRAY($t2)], expr#4=[true], EXPR$0=[$t1], EXPR$2=[$t3], EXPR$3=[$t4])
44+
EnumerableValues(tuples=[[{ 0 }]])
45+
EnumerableCalc(expr#0=[{inputs}], expr#1=['b'], expr#2=[ARRAY()], expr#3=[CAST($t2):CHAR(2) NOT NULL ARRAY NOT NULL], expr#4=[false], EXPR$0=[$t1], EXPR$2=[$t3], EXPR$3=[$t4])
46+
EnumerableValues(tuples=[[{ 0 }]])
47+
!plan
48+
3249
select NULL RLIKE 'abc*';
3350
EXPR$0
3451
null

core/src/main/java/org/apache/calcite/sql/type/SqlTypeFactoryImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ private static void assertBasic(SqlTypeName typeName) {
327327
RelDataTypeFamily family = type.getFamily();
328328

329329
final SqlTypeName typeName = type.getSqlTypeName();
330-
if (typeName == SqlTypeName.NULL) {
330+
if (typeName == SqlTypeName.NULL || typeName == SqlTypeName.UNKNOWN) {
331331
continue;
332332
}
333333

testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9172,7 +9172,7 @@ void checkArrayReverseFunc(SqlOperatorFixture f0, SqlFunction function,
91729172
f1.checkScalar("map_concat(map(1, 2), map(1, null))", "{1=null}",
91739173
"(INTEGER NOT NULL, INTEGER) MAP NOT NULL");
91749174
f1.checkScalar("map_concat(map('foo', 1), map())", "{foo=1}",
9175-
"(UNKNOWN NOT NULL, UNKNOWN NOT NULL) MAP NOT NULL");
9175+
"(CHAR(3) NOT NULL, INTEGER NOT NULL) MAP NOT NULL");
91769176

91779177
// test operand is null map
91789178
f1.checkNull("map_concat(map('foo', 1), cast(null as map<varchar, int>))");

0 commit comments

Comments
 (0)