Re: Early WIP/PoC for inlining CTEs
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: David Fetter <david@fetter.org>
Cc: Thomas Munro <thomas.munro@enterprisedb.com>,
Andreas Karlsson <andreas@proxel.se>, Andrew Gierth <andrew@tao11.riddles.org.uk>, Tom Lane <tgl@sss.pgh.pa.us>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2019-01-11T18:58:09Z
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
On Fri, Jan 11, 2019 at 1:49 PM David Fetter <david@fetter.org> wrote: > I don't see those as the same thing even slightly. Functions are > Turing complete, generally speaking, which means that unless we send > along those descriptors, we're asking the planner to solve the Halting > Problem. So... your argument is that functions are Turing-complete, but the queries which call those functions somehow aren't? Actually, there's probably a decent argument that WITH RECURSIVE is Turing-complete even without any fancy functions. See https://wiki.postgresql.org/wiki/Turing_Machine_(with_recursive) > > OK, I know that's a bit of a straw man -- you're talking about hints > > within a query, not DDL. Still, I think our theory about not having > > hints is that we should have the optimizer try to figure it out > > instead of making the user specify the behavior that they want -- and > > I think sometimes that's setting the bar at an impossible level. > > There is a worked example that's open source. > https://github.com/ossc-db/pg_hint_plan > > Have we looked over it seriously for inclusion in PostgreSQL? That really has very little to do with what's under discussion here, unless you're proposing that the right strategy for determining whether to materialize the CTE or not is to execute the query both ways and then use that to construct the plan we use to execute the query. > When they're specifying it, are they specifying it globally, or > per WITH clause, or...? Per WITH clause. That's the proposal which is under discussion here, not anything else. Did you read the thread? -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company