You probably forgot to move that to the patch for temporary variables. I did that.
+1
> --- 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.
+1
I have gone over the comments in patch 0005 and 0006. I hope I got everything right. Attached is an updated patch set.