[ 
https://issues.apache.org/jira/browse/CALCITE-5126?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17564871#comment-17564871
 ] 

Dmitry Sysolyatin commented on CALCITE-5126:
--------------------------------------------

[~julianhyde] It is true for `VALUES` and looks like condition was not correct:
{code:java}
<operand is `values`> || <operand is `UNNEST`> && <operand argument is scalar 
array or multiset>
{code}
`<operand argument is scalar array or multiset>` is applied only for `UNNEST`.

I think it should be like this then:
{code:java}
<operand is `values`> && <operand argument is scalar array or multiset> || 
<operand is `UNNEST`> 
{code}
In case of UNNEST we don't need any restriction. At least I could not find 
query that does not work without condition.
Pg output:
{code:java}
SELECT * FROM UNNEST(ARRAY(select * from (values (1), (2)) as i)) y;
y
1
2
{code}
{code:java}
SELECT * FROM UNNEST(ARRAY[(1), (2)]) as x;
x
1
2
{code}

> Implicit column alias for single-column UNNEST should work with any 
> single-column UNNEST’s input
> ------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-5126
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5126
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Dmitry Sysolyatin
>            Assignee: Dmitry Sysolyatin
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.31.0
>
>
> Implicit column alias works only in case with scalar array, but it should 
> work with any single-column UNNEST’s input
> There are the following lines in PostgresSQL documentation( 
> [https://www.postgresql.org/docs/current/queries-table-expressions.html]) 
> regarding table functions like “UNNEST”:
> {quote}If column aliases are not supplied, then for a function returning a 
> base data type, the column name is also the same as the function name.
> {quote}
> From BigQuery documentation 
> ([https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#implicit_aliases):]
> {quote}For input ARRAYs of most element types, the output of UNNEST generally 
> has one column. This single column has an optional alias, which you can use 
> to refer to the column elsewhere in the query
> {quote}
> Examples:
> {code:java}
> psql => SELECT * FROM UNNEST(array(select 1 as x)) y;
>  y
> ---
>  1
> (1 row)
> {code}
> {code:java}
> CREATE TABLE testtable (
>     strings text[]
> );
> INSERT INTO testtable VALUES(ARRAY['1', '2', '3'])
> SELECT array(SELECT 'toast' || x FROM unnest(tt.strings) x) FROM testtable as 
> tt;
>          array
> ------------------------
>  {toast1,toast2,toast3}
> (1 row)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to