Re: proposal: schema variables
Laurenz Albe <laurenz.albe@cybertec.at>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Move WAL sequence code into its own file
- a87987cafca6 19 (unreleased) cited
-
Add ExplainState argument to pg_plan_query() and planner().
- c83ac02ec730 19 (unreleased) cited
-
Don't include access/htup_details.h in executor/tuptable.h
- 1a8b5b11e48a 19 (unreleased) cited
-
Refactor to avoid code duplication in transformPLAssignStmt.
- b0fb2c6aa5a4 19 (unreleased) cited
-
Avoid including commands/dbcommands.h in so many places
- 325fc0ab14d1 19 (unreleased) cited
-
Restrict psql meta-commands in plain-text dumps.
- 71ea0d679543 19 (unreleased) cited
-
Split func.sgml into more manageable pieces
- 4e23c9ef65ac 19 (unreleased) cited
-
Fix squashing algorithm for query texts
- 0f65f3eec478 18.0 cited
-
EXPLAIN: Always use two fractional digits for row counts.
- 95dbd827f2ed 18.0 cited
-
Preliminary refactoring of plpgsql expression construction.
- a654af21ae52 18.0 cited
-
plpgsql: pure parser and reentrant scanner
- 7b27f5fd36cb 18.0 cited
-
Add some sanity checks in executor for query ID reporting
- 24f520594809 18.0 cited
-
Fix misleading error message context
- 4af123ad45bd 18.0 cited
-
Add macros for looping through a List without a ListCell.
- 14dd0f27d7cd 17.0 cited
Attachments
- v20241113-0001-Enhancing-catalog-for-support-session-vari.patch (text/x-patch) patch v20241113-0001
- v20241113-0002-Storage-for-session-variables-and-SQL-inte.patch (text/x-patch) patch v20241113-0002
- v20241113-0003-function-pg_session_variables-for-cleaning.patch (text/x-patch) patch v20241113-0003
- v20241113-0004-DISCARD-VARIABLES.patch (text/x-patch) patch v20241113-0004
- v20241113-0005-memory-cleaning-after-DROP-VARIABLE.patch (text/x-patch) patch v20241113-0005
- v20241113-0006-plpgsql-tests.patch (text/x-patch) patch v20241113-0006
- v20241113-0007-GUC-session_variables_ambiguity_warning.patch (text/x-patch) patch v20241113-0007
- v20241113-0008-EXPLAIN-LET-support.patch (text/x-patch) patch v20241113-0008
- v20241113-0009-PREPARE-LET-support.patch (text/x-patch) patch v20241113-0009
- v20241113-0010-implementation-of-temporary-session-variab.patch (text/x-patch) patch v20241113-0010
- v20241113-0011-Implementation-ON-TRANSACTION-END-RESET-cl.patch (text/x-patch) patch v20241113-0011
- v20241113-0012-Implementation-of-DEFAULT-clause-default-e.patch (text/x-patch) patch v20241113-0012
- v20241113-0013-Implementation-of-NOT-NULL-and-IMMUTABLE-c.patch (text/x-patch) patch v20241113-0013
- v20241113-0014-allow-read-an-value-of-session-variable-di.patch (text/x-patch) patch v20241113-0014
- v20241113-0015-allow-parallel-execution-queries-with-sess.patch (text/x-patch) patch v20241113-0015
- v20241113-0016-plpgsql-implementation-for-LET-statement.patch (text/x-patch) patch v20241113-0016
- v20241113-0017-expression-with-session-variables-can-be-i.patch (text/x-patch) patch v20241113-0017
- v20241113-0018-this-patch-changes-error-message-column-do.patch (text/x-patch) patch v20241113-0018
- v20241113-0019-transactional-variables.patch (text/x-patch) patch v20241113-0019
- v20241113-0020-pg_restore-A-variable.patch (text/x-patch) patch v20241113-0020
Thanks for the updated patch set. Here is my review of patch 0005: > --- a/src/backend/access/transam/xact.c > +++ b/src/backend/access/transam/xact.c > +#include "commands/session_variable.h" You probably forgot to move that to the patch for temporary variables. I did that. > --- a/src/backend/commands/session_variable.c > +++ b/src/backend/commands/session_variable.c > @@ -83,6 +92,19 @@ static HTAB *sessionvars = NULL; /* hash table for session variables */ > > static MemoryContext SVariableMemoryContext = NULL; > > +/* true after accepted sinval message */ > +static bool needs_validation = false; > + > +/* > + * The content of session variables is not removed immediately. When it > + * is possible we do this at the transaction end. But when the transaction failed, > + * we cannot do it, because we lost access to the system catalog. So we > + * try to do it in the next transaction before any get or set of any session > + * variable. We don't want to repeat this opening cleaning in transaction, > + * So we store the id of the transaction where opening validation was done. > + */ > +static LocalTransactionId validated_lxid = InvalidLocalTransactionId; I have moved the reference to the transaction end to the temporary variable patch. I have gone over the comments in patch 0005 and 0006. I hope I got everything right. Attached is an updated patch set. Yours, Laurenz Albe