Hello,
I didn't find any test with nested EXCLUDE, would be good to see if works
> with fields that were already EXCLUDED and NOT MATERIALIZED to test not
> inlined CTEs
>
> SELECT * (EXCLUDE (id, created_at)) FROM (SELECT * (EXCLUDE (id)) FROM
> users);
> WITH CTE AS NOT MATERIALIZED (SELECT * (EXCLUDE (id, created_at)) FROM
> users) SELECT * (EXCLUDE (id)) FROM CTE;
>
I will add such cases in regression tests.
As of v3, the output of such queries looks like:
-- id already excluded in inner query, email and created_at excluded in
outer query
SELECT * (EXCLUDE (email, created_at)) FROM (SELECT * (EXCLUDE (id)) FROM
users); -- returns name only
name
-------
Alice
Bob
Carol
(3 rows)
-- Trying to exclude id again in outer query (error case)
SELECT * (EXCLUDE (id, created_at)) FROM (SELECT * (EXCLUDE (id)) FROM
users);
ERROR: column "id" does not exist
LINE 1: SELECT * (EXCLUDE (id, created_at)) FROM (SELECT * (EXCLUDE ...
^
-- Trying to exclude id again in outer query (error case)
WITH CTE AS NOT MATERIALIZED (SELECT * (EXCLUDE (id, created_at)) FROM
users)
SELECT * (EXCLUDE (id)) FROM CTE;
ERROR: column "id" does not exist
LINE 2: SELECT * (EXCLUDE (id)) FROM CTE;
^
Regards,
Hunaid Sohail