Re: SEARCH and CYCLE clauses

Anastasia Lubennikova <a.lubennikova@postgrespro.ru>

From: Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
To: Pavel Stehule <pavel.stehule@gmail.com>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2020-10-27T19:31:19Z
Lists: pgsql-hackers
On 10.10.2020 08:25, Pavel Stehule wrote:
> Hi
>
> pá 9. 10. 2020 v 12:17 odesílatel Pavel Stehule 
> <pavel.stehule@gmail.com <mailto:pavel.stehule@gmail.com>> napsal:
>
>
>
>     pá 9. 10. 2020 v 11:40 odesílatel Peter Eisentraut
>     <peter.eisentraut@2ndquadrant.com
>     <mailto:peter.eisentraut@2ndquadrant.com>> napsal:
>
>         On 2020-09-22 20:29, Pavel Stehule wrote:
>         > The result is correct. When I tried to use UNION instead
>         UNION ALL, the
>         > pg crash
>
>         I fixed the crash, but UNION [DISTINCT] won't actually work
>         here because
>         row/record types are not hashable.  I'm leaving the partial
>         support in,
>         but I'm documenting it as currently not supported.
>
>      I think so UNION is a common solution against the cycles. So
>     missing support for this specific case is not a nice thing. How
>     much work is needed for hashing rows. It should not be too much code.
>
>
>         > looks so clause USING in cycle detection is unsupported for
>         DB2 and
>         > Oracle - the examples from these databases doesn't work on
>         PG without
>         > modifications
>
>         Yeah, the path clause is actually not necessary from a user's
>         perspective, but it's required for internal bookkeeping.  We
>         could
>         perhaps come up with a mechanism to make it invisible coming
>         out of the
>         CTE (maybe give the CTE a target list internally), but that
>         seems like a
>         separate project.
>
>         The attached patch fixes the issues you have reported (also
>         the view
>         issue from the other email).  I have also moved the whole rewrite
>         support to a new file to not blow up rewriteHandler.c so much.
>
>         -- 
>         Peter Eisentraut http://www.2ndQuadrant.com/
>         PostgreSQL Development, 24x7 Support, Remote DBA, Training &
>         Services
>
>
> This patch is based on transformation CYCLE and SEARCH clauses to 
> specific expressions - it is in agreement with ANSI SQL
>
> There is not a problem with compilation
> Nobody had objections in discussion
> There are enough regress tests and documentation
> check-world passed
> doc build passed
>
> I'll mark this patch as ready for committer
>
> Possible enhancing for this feature (can be done in next steps)
>
> 1. support UNION DISTINCT
> 2. better compatibility with Oracle and DB2 (USING clause can be optional)
>
> Regards
>
> Pavel
>
>
>
>
Status update for a commitfest entry.
According to cfbot patch no longer applies. So I moved it to waiting on 
author.

-- 
Anastasia Lubennikova
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

Commits

  1. Enhanced cycle mark values

  2. SEARCH and CYCLE clauses

  3. doc: Expand recursive query documentation

  4. Adjust cycle detection examples and tests