NobiGo commented on code in PR #4413:
URL: https://github.com/apache/calcite/pull/4413#discussion_r2141296942


##########
core/src/test/resources/sql/cast.iq:
##########
@@ -1794,4 +1794,128 @@ EnumerableCalc(expr#0=[{inputs}], 
expr#1=[1.11:DECIMAL(3, 2)], expr#2=[2.22:DECI
   EnumerableValues(tuples=[[{ 0 }]])
 !plan
 
+# [CALCITE-7054] Runtime conversion of DECIMAL MULTISET to INT MULTISET or 
DECIMAL ARRAY to INT MULTISET fails with a ClassCastException
+# Cast DECIMAL MULTISET to INTEGER MULTISET
+SELECT CAST(MULTISET[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL ARRAY to INT MULTISET

Review Comment:
   `INTEGER MULTISET`. Be consistent with the actual sql and befor comment.



##########
core/src/test/resources/sql/cast.iq:
##########
@@ -1794,4 +1794,128 @@ EnumerableCalc(expr#0=[{inputs}], 
expr#1=[1.11:DECIMAL(3, 2)], expr#2=[2.22:DECI
   EnumerableValues(tuples=[[{ 0 }]])
 !plan
 
+# [CALCITE-7054] Runtime conversion of DECIMAL MULTISET to INT MULTISET or 
DECIMAL ARRAY to INT MULTISET fails with a ClassCastException
+# Cast DECIMAL MULTISET to INTEGER MULTISET
+SELECT CAST(MULTISET[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL ARRAY to INT MULTISET
+SELECT CAST(ARRAY[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL MULTISET to INT ARRAY
+SELECT CAST(MULTISET[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER ARRAY);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL ARRAY to SMALLINT MULTISET, and then convert SMALLINT MULTISET 
to INTEGER MULTISET
+SELECT CAST(CAST(ARRAY[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS 
DECIMAL(2, 1))] AS SMALLINT MULTISET) as INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+EnumerableCalc(expr#0=[{inputs}], expr#1=[1.1:DECIMAL(2, 1)], 
expr#2=[3.1:DECIMAL(2, 1)], expr#3=[ARRAY($t1, $t2)], 
expr#4=[CAST($t3):SMALLINT NOT NULL MULTISET NOT NULL], 
expr#5=[CAST($t4):INTEGER NOT NULL MULTISET NOT NULL], EXPR$0=[$t5])
+  EnumerableValues(tuples=[[{ 0 }]])
+!plan
+
+# Cast DECIMAL MULTISET to INTEGER MULTISET, and then convert INTEGER MULTISET 
to DOUBLE MULTISET
+SELECT CAST(CAST(MULTISET[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS 
DECIMAL(2, 1))] AS INTEGER MULTISET) as DOUBLE MULTISET);
++------------+
+| EXPR$0     |
++------------+
+| [1.0, 3.0] |
++------------+
+(1 row)
+
+!ok
+
+EnumerableCalc(expr#0=[{inputs}], expr#1=[$SLICE($t0)], 
expr#2=[CAST($t1):INTEGER NOT NULL MULTISET NOT NULL], expr#3=[CAST($t2):DOUBLE 
NOT NULL MULTISET NOT NULL], EXPR$0=[$t3])
+  EnumerableCollect(field=[EXPR$0])
+    EnumerableValues(tuples=[[{ 1.1 }, { 3.1 }]])
+!plan
+
+# Cast DECIMAL ARRAY to INTEGER MULTISET, and then convert INTEGER ARRAY to 
DOUBLE MULTISET
+SELECT CAST(CAST(ARRAY[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS 
DECIMAL(2, 1))] AS INTEGER MULTISET) as DOUBLE MULTISET);
++------------+
+| EXPR$0     |
++------------+
+| [1.0, 3.0] |
++------------+
+(1 row)
+
+!ok
+
+EnumerableCalc(expr#0=[{inputs}], expr#1=[1.1:DECIMAL(2, 1)], 
expr#2=[3.1:DECIMAL(2, 1)], expr#3=[ARRAY($t1, $t2)], expr#4=[CAST($t3):INTEGER 
NOT NULL MULTISET NOT NULL], expr#5=[CAST($t4):DOUBLE NOT NULL MULTISET NOT 
NULL], EXPR$0=[$t5])
+  EnumerableValues(tuples=[[{ 0 }]])
+!plan
+
+# Cast SMALLINT ARRAY ARRAY to INTEGER MULTISET MULTISET
+SELECT CAST(ARRAY[ARRAY[1, 2], ARRAY[3, 4]] AS INTEGER MULTISET MULTISET);
++------------------+
+| EXPR$0           |
++------------------+
+| [[1, 2], [3, 4]] |
++------------------+
+(1 row)
+
+!ok
+
+EnumerableCalc(expr#0=[{inputs}], expr#1=[1], expr#2=[2], expr#3=[ARRAY($t1, 
$t2)], expr#4=[3], expr#5=[4], expr#6=[ARRAY($t4, $t5)], expr#7=[ARRAY($t3, 
$t6)], expr#8=[CAST($t7):INTEGER NOT NULL MULTISET NOT NULL MULTISET NOT NULL], 
EXPR$0=[$t8])
+  EnumerableValues(tuples=[[{ 0 }]])
+!plan
+
+# Cast DECIMAL ARRAY ARRAY to INTEGER ARRAY MULTISET
+SELECT CAST(CAST(ARRAY[ARRAY[1.11, 2.22], ARRAY[3.33, 4.44]] AS DECIMAL ARRAY 
MULTISET) as INTEGER ARRAY MULTISET);
++------------------+
+| EXPR$0           |
++------------------+
+| [[1, 2], [3, 4]] |
++------------------+
+(1 row)
+
+!ok
+EnumerableCalc(expr#0=[{inputs}], expr#1=[1.11:DECIMAL(3, 2)], 
expr#2=[2.22:DECIMAL(3, 2)], expr#3=[ARRAY($t1, $t2)], expr#4=[3.33:DECIMAL(3, 
2)], expr#5=[4.44:DECIMAL(3, 2)], expr#6=[ARRAY($t4, $t5)], expr#7=[ARRAY($t3, 
$t6)], expr#8=[CAST($t7):DECIMAL(19, 0) NOT NULL ARRAY NOT NULL MULTISET NOT 
NULL], expr#9=[CAST($t8):INTEGER NOT NULL ARRAY NOT NULL MULTISET NOT NULL], 
EXPR$0=[$t9])
+  EnumerableValues(tuples=[[{ 0 }]])
+!plan
+
+# Cast DECIMAL ARRAY ARRAY to INTEGER MULTISET MULTISET, and then convert 
INTEGER ARRAY ARRAY to DECIMAL MULTISET MULTISET

Review Comment:
   `INTEGER MULTISET MULTISET` not `INTEGER ARRAY ARRAY`



##########
core/src/test/resources/sql/cast.iq:
##########
@@ -1794,4 +1794,128 @@ EnumerableCalc(expr#0=[{inputs}], 
expr#1=[1.11:DECIMAL(3, 2)], expr#2=[2.22:DECI
   EnumerableValues(tuples=[[{ 0 }]])
 !plan
 
+# [CALCITE-7054] Runtime conversion of DECIMAL MULTISET to INT MULTISET or 
DECIMAL ARRAY to INT MULTISET fails with a ClassCastException
+# Cast DECIMAL MULTISET to INTEGER MULTISET
+SELECT CAST(MULTISET[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL ARRAY to INT MULTISET
+SELECT CAST(ARRAY[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL MULTISET to INT ARRAY
+SELECT CAST(MULTISET[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER ARRAY);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL ARRAY to SMALLINT MULTISET, and then convert SMALLINT MULTISET 
to INTEGER MULTISET
+SELECT CAST(CAST(ARRAY[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS 
DECIMAL(2, 1))] AS SMALLINT MULTISET) as INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+EnumerableCalc(expr#0=[{inputs}], expr#1=[1.1:DECIMAL(2, 1)], 
expr#2=[3.1:DECIMAL(2, 1)], expr#3=[ARRAY($t1, $t2)], 
expr#4=[CAST($t3):SMALLINT NOT NULL MULTISET NOT NULL], 
expr#5=[CAST($t4):INTEGER NOT NULL MULTISET NOT NULL], EXPR$0=[$t5])
+  EnumerableValues(tuples=[[{ 0 }]])
+!plan
+
+# Cast DECIMAL MULTISET to INTEGER MULTISET, and then convert INTEGER MULTISET 
to DOUBLE MULTISET
+SELECT CAST(CAST(MULTISET[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS 
DECIMAL(2, 1))] AS INTEGER MULTISET) as DOUBLE MULTISET);
++------------+
+| EXPR$0     |
++------------+
+| [1.0, 3.0] |
++------------+
+(1 row)
+
+!ok
+
+EnumerableCalc(expr#0=[{inputs}], expr#1=[$SLICE($t0)], 
expr#2=[CAST($t1):INTEGER NOT NULL MULTISET NOT NULL], expr#3=[CAST($t2):DOUBLE 
NOT NULL MULTISET NOT NULL], EXPR$0=[$t3])
+  EnumerableCollect(field=[EXPR$0])
+    EnumerableValues(tuples=[[{ 1.1 }, { 3.1 }]])
+!plan
+
+# Cast DECIMAL ARRAY to INTEGER MULTISET, and then convert INTEGER ARRAY to 
DOUBLE MULTISET

Review Comment:
   INTEGER MULTISET



##########
core/src/test/resources/sql/cast.iq:
##########
@@ -1794,4 +1794,128 @@ EnumerableCalc(expr#0=[{inputs}], 
expr#1=[1.11:DECIMAL(3, 2)], expr#2=[2.22:DECI
   EnumerableValues(tuples=[[{ 0 }]])
 !plan
 
+# [CALCITE-7054] Runtime conversion of DECIMAL MULTISET to INT MULTISET or 
DECIMAL ARRAY to INT MULTISET fails with a ClassCastException
+# Cast DECIMAL MULTISET to INTEGER MULTISET
+SELECT CAST(MULTISET[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL ARRAY to INT MULTISET
+SELECT CAST(ARRAY[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL MULTISET to INT ARRAY
+SELECT CAST(MULTISET[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER ARRAY);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL ARRAY to SMALLINT MULTISET, and then convert SMALLINT MULTISET 
to INTEGER MULTISET
+SELECT CAST(CAST(ARRAY[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS 
DECIMAL(2, 1))] AS SMALLINT MULTISET) as INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+EnumerableCalc(expr#0=[{inputs}], expr#1=[1.1:DECIMAL(2, 1)], 
expr#2=[3.1:DECIMAL(2, 1)], expr#3=[ARRAY($t1, $t2)], 
expr#4=[CAST($t3):SMALLINT NOT NULL MULTISET NOT NULL], 
expr#5=[CAST($t4):INTEGER NOT NULL MULTISET NOT NULL], EXPR$0=[$t5])
+  EnumerableValues(tuples=[[{ 0 }]])
+!plan
+
+# Cast DECIMAL MULTISET to INTEGER MULTISET, and then convert INTEGER MULTISET 
to DOUBLE MULTISET
+SELECT CAST(CAST(MULTISET[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS 
DECIMAL(2, 1))] AS INTEGER MULTISET) as DOUBLE MULTISET);
++------------+
+| EXPR$0     |
++------------+
+| [1.0, 3.0] |
++------------+
+(1 row)
+
+!ok
+
+EnumerableCalc(expr#0=[{inputs}], expr#1=[$SLICE($t0)], 
expr#2=[CAST($t1):INTEGER NOT NULL MULTISET NOT NULL], expr#3=[CAST($t2):DOUBLE 
NOT NULL MULTISET NOT NULL], EXPR$0=[$t3])
+  EnumerableCollect(field=[EXPR$0])
+    EnumerableValues(tuples=[[{ 1.1 }, { 3.1 }]])
+!plan
+
+# Cast DECIMAL ARRAY to INTEGER MULTISET, and then convert INTEGER ARRAY to 
DOUBLE MULTISET
+SELECT CAST(CAST(ARRAY[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS 
DECIMAL(2, 1))] AS INTEGER MULTISET) as DOUBLE MULTISET);
++------------+
+| EXPR$0     |
++------------+
+| [1.0, 3.0] |
++------------+
+(1 row)
+
+!ok
+
+EnumerableCalc(expr#0=[{inputs}], expr#1=[1.1:DECIMAL(2, 1)], 
expr#2=[3.1:DECIMAL(2, 1)], expr#3=[ARRAY($t1, $t2)], expr#4=[CAST($t3):INTEGER 
NOT NULL MULTISET NOT NULL], expr#5=[CAST($t4):DOUBLE NOT NULL MULTISET NOT 
NULL], EXPR$0=[$t5])
+  EnumerableValues(tuples=[[{ 0 }]])
+!plan
+
+# Cast SMALLINT ARRAY ARRAY to INTEGER MULTISET MULTISET
+SELECT CAST(ARRAY[ARRAY[1, 2], ARRAY[3, 4]] AS INTEGER MULTISET MULTISET);
++------------------+
+| EXPR$0           |
++------------------+
+| [[1, 2], [3, 4]] |
++------------------+
+(1 row)
+
+!ok
+
+EnumerableCalc(expr#0=[{inputs}], expr#1=[1], expr#2=[2], expr#3=[ARRAY($t1, 
$t2)], expr#4=[3], expr#5=[4], expr#6=[ARRAY($t4, $t5)], expr#7=[ARRAY($t3, 
$t6)], expr#8=[CAST($t7):INTEGER NOT NULL MULTISET NOT NULL MULTISET NOT NULL], 
EXPR$0=[$t8])
+  EnumerableValues(tuples=[[{ 0 }]])
+!plan
+
+# Cast DECIMAL ARRAY ARRAY to INTEGER ARRAY MULTISET

Review Comment:
   DECIMAL ARRAY MULTISET



##########
core/src/test/resources/sql/cast.iq:
##########
@@ -1794,4 +1794,128 @@ EnumerableCalc(expr#0=[{inputs}], 
expr#1=[1.11:DECIMAL(3, 2)], expr#2=[2.22:DECI
   EnumerableValues(tuples=[[{ 0 }]])
 !plan
 
+# [CALCITE-7054] Runtime conversion of DECIMAL MULTISET to INT MULTISET or 
DECIMAL ARRAY to INT MULTISET fails with a ClassCastException
+# Cast DECIMAL MULTISET to INTEGER MULTISET
+SELECT CAST(MULTISET[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL ARRAY to INT MULTISET
+SELECT CAST(ARRAY[CAST(1.1111 AS DECIMAL(2, 1)), CAST(3.06754 AS DECIMAL(2, 
1))] AS INTEGER MULTISET);
++--------+
+| EXPR$0 |
++--------+
+| [1, 3] |
++--------+
+(1 row)
+
+!ok
+
+# Cast DECIMAL MULTISET to INT ARRAY

Review Comment:
   INTEGER



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to