>> See attached scripts for instance.
>
> Your test shows so SET SESSION has not transactional behaviour - the
> transactions fails, but the value is not reverted to NULL.
There are *two* function calls, the first fails and the second succeeds.
Here is the trace with a some comments:
[...]
## SET SESSION x.x = 'null'; SET -- previous has set x.x = 'null'
## SELECT setupSecurityContext(3); -- first setup... function call NOTICE: SET secured = FALSE NOTICE: SET secured =
TRUE-- there is a SET to 'ok' just after this print -- at the end the transaction fails: ERROR: insert or update on
table"log" violates foreign key constraint "log_sid_fkey" DETAIL: Key (sid)=(3) is not present in table "stuff". -- no
resultis displayed from the SELECT
## SHOW x.x; nul -- the value is the initial value, it has been reverted
## SELECT setupSecurityContext(2); -- second setup... function call NOTICE: SET secured = FALSE NOTICE: SET secured
=TRUE -- trues is displayed, the function succeeded t
## SHOW x.x; ok -- the new value is shown
--
Fabien.