Re: how to gate experimental features (SQL/PGQ) - Mailing list pgsql-hackers

From Andres Freund
Subject Re: how to gate experimental features (SQL/PGQ)
Date
Msg-id cwthrfgp2foh64aylx6wkcl2v2543qlqxztgkg6pwscqum7jw7@oyf57d3x46fu
Whole thread Raw
In response to how to gate experimental features (SQL/PGQ)  (Peter Eisentraut <peter@eisentraut.org>)
Responses Re: how to gate experimental features (SQL/PGQ)
List pgsql-hackers
Hi,

On 2026-01-13 15:16:22 +0100, Peter Eisentraut wrote:
> Some of you will have seen the thread on the SQL/PGQ feature patch.[0] I
> want to evaluate how it would be acceptable to commit such a feature patch
> with an understanding that it is experimental.  Perhaps some of these ideas
> could then also be applied to other projects.
> 
> [0]: https://www.postgresql.org/message-id/flat/a855795d-e697-4fa5-8698-d20122126567@eisentraut.org
> 
> At this point, the patch set is pretty settled, but it is large, and it's
> not going to be perfect at the first try.

Yikes, large indeed:

$ git diff --shortstat upstream/master
 118 files changed, 14805 insertions(+), 220 deletions(-)

$ git log -p upstream/master.. |wc -c
721659

I think the main question that needs answering is not how to get this merged,
but whether a feature this large (in its infancy stage!) is worth the
squeeze...


It's possible that I am just weak minded, but at least I can't sensibly review
a 700kB sized commit. This imo badly needs to broken down and, if at all
possible, reduced in size & scope.


> Also, it should not significantly affect uses that don't use that feature.

Are there such affects currently?


> 1) Just document it and hope people will read the documentation and/or
> understand that it's a new feature that needs time to mature.
> 
> 2) A run-time setting (GUC) like experimental_pgq = on/off.  This would be
> checked in the relevant DDL (CREATE/ALTER/DROP) commands as well as the
> GRAPH_TABLE function.  So without that you couldn't do anything with it, but
> for example pg_dump and psql and ecpg preproc would still work and the
> system catalogs exist.  Default to off for one release (subject to change).
> 
> 3) A compile-time option.

I don't even know how you could implement 3) realistically. We have zero
infrastructure for making e.g. parser, keyword list etc change due to defines
compile time.


> Just to put forward another example that I'm familiar with, I have this
> currently-dormant column encryption patch set [1] that has vaguely similar
> properties in that it is a large patch, lots of boilerplate, lots of details
> that are best checked while actually using it, but possibly requiring
> incompatible changes if fixes are required.

I'm quite sceptical that that's a good choice for an experimental feature
being merged, because it has tree wide impact, e.g. due to making pg_attribute
wider, affecting the protocol, adding branches to pretty core places.


I think I am on board with being more open to merge features earlier, but it
shouldn't be a fig leaf to allow merging stuff with wide impact with the
excuse that it's an experimental thing.

Greetings,

Andres Freund



pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: pg_plan_advice
Next
From: Srirama Kucherlapati
Date:
Subject: RE: AIX support