Re: Schema variables - new implementation for Postgres 15 - Mailing list pgsql-hackers

From Kirk Wolak
Subject Re: Schema variables - new implementation for Postgres 15
Date
Msg-id CACLU5mQci1ZozsUmUDesrF409_1=E4ONnxQ=gv3wD0kJUY=CjQ@mail.gmail.com
Whole thread Raw
In response to Re: Schema variables - new implementation for Postgres 15  (Pavel Stehule <pavel.stehule@gmail.com>)
List pgsql-hackers
On Thu, Mar 30, 2023 at 4:06 AM Pavel Stehule <pavel.stehule@gmail.com> wrote:
Hi

ne 26. 3. 2023 v 19:44 odesílatel Dmitry Dolgov <9erthalion6@gmail.com> napsal:
> On Fri, Mar 24, 2023 at 08:04:08AM +0100, Pavel Stehule wrote:
> čt 23. 3. 2023 v 19:54 odesílatel Pavel Stehule <pavel.stehule@gmail.com>
> napsal:
>
> > čt 23. 3. 2023 v 16:33 odesílatel Peter Eisentraut <
> > peter.eisentraut@enterprisedb.com> napsal:
> >
> >> The other issue is that by its nature this patch adds a lot of code in a
> >> lot of places.  Large patches are more likely to be successful if they
...
I agree, the patch scale is a bit overwhelming. It's worth noting that
due to the nature of this change certain heavy lifting has to be done in
any case, plus I've got an impression that some part of the patch are
quite solid (although I haven't reviewed everything, did anyone achieve
that milestone?). But still, it would be of great help to simplify the
current implementation, and I'm afraid the only way of doing this is to
make trades-off about functionality vs change size & complexity.

There is not too much space for reduction - more - sometimes there is code reuse between features.

I can reduce temporary session variables, but the same AtSubXact routines are used by memory purging routines, and if only if  you drop all dependent features, then you can get some interesting number of reduced lines. I can imagine very reduced feature set like

1) no temporary variables, no reset at transaction end
2) without default expressions - default is null
3) direct memory cleaning on drop (without possibility of saved value after reverted drop) or cleaning at session end always

Note - @1 and @3 shares code

Please don't remove #2.  With Default Values, I was eyeballing these as pseudo constants.  I find I have a DRY (Don't Repeat Yourself) issue in our current code base (PLPGSQL) because of the lack of shared constants throughout the application layer.  We literally created a CONST schema with SQL functions that return a set value.  It's kludgy, but clear enough.  (We have approximately 50 of these).

Regards, Kirk

pgsql-hackers by date:

Previous
From: "houzj.fnst@fujitsu.com"
Date:
Subject: RE: Support logical replication of DDLs
Next
From: Andres Freund
Date:
Subject: Re: Minimal logical decoding on standbys