From 82a47982f37077a9bfe67c0e9cc87b4f9b16e34b Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 11 Sep 2007 00:06:42 +0000 Subject: Arrange for SET LOCAL's effects to persist until the end of the current top transaction, unless rolled back or overridden by a SET clause for the same variable attached to a surrounding function call. Per discussion, these seem the best semantics. Note that this is an INCOMPATIBLE CHANGE: in 8.0 through 8.2, SET LOCAL's effects disappeared at subtransaction commit (leading to behavior that made little sense at the SQL level). I took advantage of the opportunity to rewrite and simplify the GUC variable save/restore logic a little bit. The old idea of a "tentative" value is gone; it was a hangover from before we had a stack. Also, we no longer need a stack entry for every nesting level, but only for those in which a variable's value actually changed. --- doc/src/sgml/ref/create_function.sgml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'doc/src/sgml/ref/create_function.sgml') diff --git a/doc/src/sgml/ref/create_function.sgml b/doc/src/sgml/ref/create_function.sgml index b0cfe84db1c..8c542982d52 100644 --- a/doc/src/sgml/ref/create_function.sgml +++ b/doc/src/sgml/ref/create_function.sgml @@ -1,5 +1,5 @@ @@ -475,11 +475,11 @@ CREATE FUNCTION foo(int, out text) ... - If any SET clauses are attached to a function, then + If a SET clause is attached to a function, then the effects of a SET LOCAL command executed inside the - function are restricted to the function: the configuration parameter's - value is restored at function exit. This is true even for parameters - not mentioned in the SET clause(s). However, an ordinary + function for the same variable are restricted to the function: the + configuration parameter's prior value is still restored at function exit. + However, an ordinary SET command (without LOCAL) overrides the SET clause, much as it would do for a previous SET LOCAL command: the effects of such a command will persist after -- cgit v1.2.3