Re: Inline non-SQL SRFs using SupportRequestSimplify
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Paul A Jungwirth <pj@illuminatedcomputing.com>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-11-23T00:44:41Z
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 →
-
Add SupportRequestInlineInFrom planner support request.
- b140c8d7a3f3 19 (unreleased) landed
Paul A Jungwirth <pj@illuminatedcomputing.com> writes: > The reason for supporting more than SQL functions is to let you > construct the query dynamically, e.g. with user-supplied table/column > names, or to only include some expensive filters if needed. This would > be great for building functions that implement temporal > outer/semi/antijoin. Another use-case I personally have, which I think > is quite common, is building "parameterized views" for permissions > checks, e.g. visible_sales(user). In that case we may only need to > include certain joins if the user belongs to certain roles (e.g. a > third-party sales rep). I went through this again, and committed it with a bunch of mostly-cosmetic changes. In particular, it seemed like talking about inlining "set-returning functions" is no longer really on-point, since this mechanism is perfectly capable of inlining non-SRFs. (The reason we haven't done that for SQL functions is mainly that we didn't feel like doing the analysis necessary to prove that a SELECT will return exactly one row, which would be necessary to maintain semantic equivalence for a non-SRF after inlining. The easy cases of that, such as "SELECT expression", are already sufficiently handled by regular inlining.) So after some thought I renamed inline_set_returning_function to inline_function_in_from, and made a bunch of other changes in names and comments to line up with that. Thanks for working on this! I know it's been a long slog. regards, tom lane