Yu Xu created CALCITE-7110:
------------------------------
Summary: Invalid unparse for cast to nested type in PostgreSQL
Key: CALCITE-7110
URL: https://issues.apache.org/jira/browse/CALCITE-7110
Project: Calcite
Issue Type: Bug
Reporter: Yu Xu
Assignee: Yu Xu
There 2 problem in PostgreSQL adapter.
1. TINYINT and DOUBLE can not work correctly in nested type such as ARRAY(from
https://issues.apache.org/jira/browse/CALCITE-2305):
{code:java}
select cast(array[1,2,3] as TINYINT array) {code}
shoud convert to:
{code:java}
SELECT CAST(ARRAY[1,2,3] AS SMALLINT ARRAY) {code}
result is:
array
---------------
\{1, 2, 3}
(1 row)
but currently convert to:
{code:java}
SELECT CAST(ARRAY[1, 2, 3] AS TINYINT ARRAY) {code}
this would error out:
{code:java}
psql:commands.sql:18: ERROR: type "tinyint[]" does not exist
LINE 1: SELECT CAST(ARRAY[1, 2, 3] AS TINYINT ARRAY); {code}
2.The multi-layer nested ARRAY needs to be converted into a single layer ARRAY:
such as:
{code:java}
select cast(array[array[1],array[2],array[3]] as int array array) {code}
should convert to:
{code:java}
select cast(array[array[1],array[2],array[3]] as int array) {code}
result is:
{code:java}
array
---------------
{{1},{2},{3}}
(1 row) {code}
but currently convert to:
{code:java}
select cast(array[array[1],array[2],array[3]] as int array array) {code}
which would error out:
{code:java}
psql:commands.sql:20: ERROR: syntax error at or near "array"
LINE 1: ...(array[array[1],array[2],array[3]] as int array array); {code}
additional PostgreSQL only support array and not support map/multiset types
(https://www.postgresql.org/docs/current/datatype.html), the compatibility
issues need to be fixed.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)