]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Test IsInTransactionChain, not IsTransactionBlock, in vac_update_relstats.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 30 Oct 2014 17:03:34 +0000 (13:03 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 30 Oct 2014 17:03:34 +0000 (13:03 -0400)
commitfcf0246b2c58d4b7e480ccb11e1bdaeef023a4f6
treefa926f5b261a3b5c7b4f5d2bfa947ec1b270a704
parent6ec1c3ef8b868dd696e1394a88797e616218e9c1
Test IsInTransactionChain, not IsTransactionBlock, in vac_update_relstats.

As noted by Noah Misch, my initial cut at fixing bug #11638 didn't cover
all cases where ANALYZE might be invoked in an unsafe context.  We need to
test the result of IsInTransactionChain not IsTransactionBlock; which is
notationally a pain because IsInTransactionChain requires an isTopLevel
flag, which would have to be passed down through several levels of callers.
I chose to pass in_outer_xact (ie, the result of IsInTransactionChain)
rather than isTopLevel per se, as that seemed marginally more apropos
for the intermediate functions to know about.
src/backend/commands/analyze.c
src/backend/commands/vacuum.c
src/backend/commands/vacuumlazy.c
src/include/commands/vacuum.h