[ 
https://issues.apache.org/jira/browse/CALCITE-5779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitry Sysolyatin updated CALCITE-5779:
---------------------------------------
    Description: 
Implicit column alias for single-column table function works only for UNNEST at 
the moment. But should work for every table function.

For example, PostgreSQL:
{code:java}
CREATE OR REPLACE FUNCTION fun() 
    RETURNS TABLE(col int)
   AS
$$
SELECT 1
$$ LANGUAGE 'sql' VOLATILE;

SELECT f.col, f FROM fun() as f;
 col | f 
-----+---
   1 | 1
(1 row)



SELECT * FROM fun() as f;
 col 
-----
   1
(1 row)


SELECT f FROM fun() as f;
 f 
---
 1
(1 row){code}
 

Calcite throws "Column 'i' not found in any table" exception for
{code:java}
SELECT i FROM table(generate_series(1,2)) as i
{code}
Where generate_series is user defined table function.

  was:
Implicit column alias for single-column table function works only for UNNEST. 
But should work for every table function.

For example, PostgreSQL returns the same result for
{code:java}
SELECT i FROM UNNEST(ARRAY(1,2)) as i;
SELECT i FROM generate_series(1,2) as i;

 i 
---
 1
 2
(2 rows)
{code}

But calcite throws "Column 'i' not found in any table" exception for
{code:java}
SELECT i FROM table(generate_series(1,2)) as i
{code}

Where generate_series is user defined table function.


> Implicit column alias for single-column table function does not work
> --------------------------------------------------------------------
>
>                 Key: CALCITE-5779
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5779
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.34.0
>            Reporter: Dmitry Sysolyatin
>            Priority: Major
>
> Implicit column alias for single-column table function works only for UNNEST 
> at the moment. But should work for every table function.
> For example, PostgreSQL:
> {code:java}
> CREATE OR REPLACE FUNCTION fun() 
>     RETURNS TABLE(col int)
>    AS
> $$
> SELECT 1
> $$ LANGUAGE 'sql' VOLATILE;
> SELECT f.col, f FROM fun() as f;
>  col | f 
> -----+---
>    1 | 1
> (1 row)
> SELECT * FROM fun() as f;
>  col 
> -----
>    1
> (1 row)
> SELECT f FROM fun() as f;
>  f 
> ---
>  1
> (1 row){code}
>  
> Calcite throws "Column 'i' not found in any table" exception for
> {code:java}
> SELECT i FROM table(generate_series(1,2)) as i
> {code}
> Where generate_series is user defined table function.



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

Reply via email to