Обсуждение: pgsql: Test IsInTransactionChain, not IsTransactionBlock, in vac_update

Поиск
Список
Период
Сортировка

pgsql: Test IsInTransactionChain, not IsTransactionBlock, in vac_update

От
Tom Lane
Дата:
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.

Branch
------
REL9_1_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/fcf0246b2c58d4b7e480ccb11e1bdaeef023a4f6

Modified Files
--------------
src/backend/commands/analyze.c    |   23 ++++++++++++++++-------
src/backend/commands/vacuum.c     |   21 ++++++++++++---------
src/backend/commands/vacuumlazy.c |    7 +++++--
src/include/commands/vacuum.h     |    5 +++--
4 files changed, 36 insertions(+), 20 deletions(-)