Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfd3ce52

Browse files
committed
Do not perform AtEOXact for autonomous transactions for SMgr, pending delete, multixacts
1 parentd618b75 commitfd3ce52

File tree

1 file changed

+27
-17
lines changed
  • src/backend/access/transam

1 file changed

+27
-17
lines changed

‎src/backend/access/transam/xact.c

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2013,8 +2013,11 @@ CommitTransaction(void)
20132013
TransactionStates=CurrentTransactionState;
20142014
TransactionIdlatestXid;
20152015
boolis_parallel_worker;
2016+
boolis_autonomous_transaction;
20162017

20172018
is_parallel_worker= (s->blockState==TBLOCK_PARALLEL_INPROGRESS);
2019+
is_autonomous_transaction=getNestLevelATX()!=0;
2020+
20182021

20192022
/* Enforce parallel mode restrictions during parallel worker commit. */
20202023
if (is_parallel_worker)
@@ -2048,7 +2051,7 @@ CommitTransaction(void)
20482051
* If there weren't any, we are done ... otherwise loop back to check
20492052
* if they queued deferred triggers. Lather, rinse, repeat.
20502053
*/
2051-
if (getNestLevelATX()!=0|| !PreCommit_Portals(false))
2054+
if (is_autonomous_transaction|| !PreCommit_Portals(false))
20522055
break;
20532056
}
20542057

@@ -2160,7 +2163,7 @@ CommitTransaction(void)
21602163
RESOURCE_RELEASE_BEFORE_LOCKS,
21612164
true, true);
21622165

2163-
if (getNestLevelATX()==0)
2166+
if (!is_autonomous_transaction)
21642167
{
21652168
/* Check we've released all buffer pins */
21662169
AtEOXact_Buffers(true);
@@ -2180,38 +2183,45 @@ CommitTransaction(void)
21802183
xactHasRelcacheInvalidationMessages=HasRelcacheInvalidationMessages();
21812184
AtEOXact_Inval(true);
21822185

2183-
AtEOXact_MultiXact();
2184-
2186+
if (!is_autonomous_transaction)
2187+
{
2188+
AtEOXact_MultiXact();
2189+
}
21852190
ResourceOwnerRelease(TopTransactionResourceOwner,
21862191
RESOURCE_RELEASE_LOCKS,
21872192
true, true);
21882193
ResourceOwnerRelease(TopTransactionResourceOwner,
21892194
RESOURCE_RELEASE_AFTER_LOCKS,
21902195
true, true);
21912196

2192-
/*
2193-
* Likewise, dropping of files deleted during the transaction is best done
2194-
* after releasing relcache and buffer pins. (This is not strictly
2195-
* necessary during commit, since such pins should have been released
2196-
* already, but this ordering is definitely critical during abort.) Since
2197-
* this may take many seconds, also delay until after releasing locks.
2198-
* Other backends will observe the attendant catalog changes and not
2199-
* attempt to access affected files.
2200-
*/
2201-
smgrDoPendingDeletes(true);
2197+
if (!is_autonomous_transaction)
2198+
{
2199+
/*
2200+
* Likewise, dropping of files deleted during the transaction is best done
2201+
* after releasing relcache and buffer pins. (This is not strictly
2202+
* necessary during commit, since such pins should have been released
2203+
* already, but this ordering is definitely critical during abort.) Since
2204+
* this may take many seconds, also delay until after releasing locks.
2205+
* Other backends will observe the attendant catalog changes and not
2206+
* attempt to access affected files.
2207+
*/
2208+
smgrDoPendingDeletes(true);
2209+
}
22022210

22032211
/* Check we've released all catcache entries */
22042212
AtEOXact_CatCache(true);
22052213

22062214
AtCommit_Notify();
22072215
AtEOXact_GUC(true,s->gucNestLevel);
2208-
if (getNestLevelATX()==0)
2216+
if (!is_autonomous_transaction)
2217+
{
22092218
AtEOXact_SPI(true);
2219+
}
22102220
AtEOXact_on_commit_actions(true);
22112221
AtEOXact_Namespace(true,is_parallel_worker);
2212-
AtEOXact_SMgr();
2213-
if (getNestLevelATX()==0)
2222+
if (!is_autonomous_transaction)
22142223
{
2224+
AtEOXact_SMgr();
22152225
AtEOXact_Files();
22162226
AtEOXact_ComboCid();
22172227
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp