> ok understand
Good. So we seem to agree that GUCS are transactional?
> The logic depends on transactions and on nesting level (nesting doesn't
> depends on transactions only)
Yep, it probably also happens with LOCAL which hides the previous value
and restores the initial one when exiting.
> void AtEOXact_GUC(bool isCommit, int nestLevel)
>
> Probably we should to use CallXactCallbacks instead - then is not a
> performance impact when there are not transactional variables.
I do not understand your point.
It is a very good thing that GUCs are transactional, and this should not
be changed, it is a useful feature! Much more useful than non
transactional.
Moreover I think that transactional is expensive when writing things to
disk, but in memory the overhead is reduced, and if you need it then you
need it.
--
Fabien.