aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/regexp.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2018-08-23 15:13:48 +0200
committerPeter Eisentraut <peter_e@gmx.net>2018-08-27 22:16:15 +0200
commit7a3b7bbfded3142aaa8edae2dbc88999568cc1cd (patch)
tree03984a905f939f36c31b94a66b5835b2b6e55942 /src/backend/utils/adt/regexp.c
parentcbdca00bef59ee204313fe8f0e4f36bc804a38aa (diff)
downloadpostgresql-7a3b7bbfded3142aaa8edae2dbc88999568cc1cd.tar.gz
postgresql-7a3b7bbfded3142aaa8edae2dbc88999568cc1cd.zip
Fix snapshot leak warning for some procedures
The problem arises with the combination of CALL with output parameters and doing a COMMIT inside the procedure. When a CALL has output parameters, the portal uses the strategy PORTAL_UTIL_SELECT instead of PORTAL_MULTI_QUERY. Using PORTAL_UTIL_SELECT causes the portal's snapshot to be registered with the current resource owner (portal->holdSnapshot); see 9ee1cf04ab6bcefe03a11837b53f29ca9dc24c7a for the reason. Normally, PortalDrop() unregisters the snapshot. If not, then ResourceOwnerRelease() will print a warning about a snapshot leak on transaction commit. A transaction commit normally drops all portals (PreCommit_Portals()), except the active portal. So in case of the active portal, we need to manually release the snapshot to avoid the warning. Reported-by: Prabhat Sahu <prabhat.sahu@enterprisedb.com> Reviewed-by: Jonathan S. Katz <jkatz@postgresql.org>
Diffstat (limited to 'src/backend/utils/adt/regexp.c')
0 files changed, 0 insertions, 0 deletions