Re: Early WIP/PoC for inlining CTEs
David Fetter <david@fetter.org>
From: David Fetter <david@fetter.org>
To: Andrew Gierth <andrew@tao11.riddles.org.uk>
Cc: pgsql-hackers@postgresql.org
Date: 2018-07-25T05:42:37Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Prevent inlining of multiply-referenced CTEs with outer recursive refs.
- 9476131278c7 12.0 landed
-
Allow user control of CTE materialization, and change the default behavior.
- 608b167f9f9c 12.0 landed
-
Split QTW_EXAMINE_RTES flag into QTW_EXAMINE_RTES_BEFORE/_AFTER.
- 18c0da88a5d9 12.0 landed
-
document when PREPARE uses generic plans
- fab9d1da4a21 9.6.0 cited
Attachments
- 0001-Inlining-CTEs-v0002.patch (text/x-diff)
On Tue, Jul 24, 2018 at 11:28:21PM +0100, Andrew Gierth wrote: > About a year ago I was briefly in discussion/collaboration with Adam Sah > regarding the topic of inlining CTEs into the query rather than treating > them as optimization barriers. We didn't take it very far (he sent me > some stuff, I wrote some stuff and sent it back, things kind of got > dropped at that point); but there's been some recent discussion of this > and some people have expressed an interest in seeing the code. > > So I'm posting the parts that I wrote for the benefit of anyone wanting > to pick up the issue again. The assumption of this code is that some > form of syntax would exist to mark materialized CTEs and set the > "ctematerialized" flag. > > I haven't rebased this or tested it since last year; this patch is > against b81eba6a65. Please find attached a version rebased atop 167075be3ab1547e18 with what I believe are appropriate changes to regression test output. The other changes to the regression tests output are somewhat puzzling, as they change the actual results of queries. I've also attached both the "leftover" diff and the files to which it should be applied. Best, David. -- David Fetter <david(at)fetter(dot)org> http://fetter.org/ Phone: +1 415 235 3778 Remember to vote! Consider donating to Postgres: http://www.postgresql.org/about/donate