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

Commitd136d84

Browse files
Fixed pull request issues
1 parent0c7a850 commitd136d84

File tree

1 file changed

+34
-43
lines changed

1 file changed

+34
-43
lines changed

‎pg_variables.c‎

Lines changed: 34 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,10 @@ static MemoryContext changesStackContext = NULL;
113113
AssertMacro(changesStack != NULL), \
114114
(dlist_head_element(ChangesStackNode, node, changesStack)) \
115115
)
116-
116+
#definepack_hctx(pack,is_trans) \
117+
(is_trans ? pack->hctxTransact : pack->hctxRegular)
118+
#definepack_htab(pack,is_trans) \
119+
(is_trans ? pack->varHashTransact : pack->varHashRegular)
117120

118121
#definePGV_MCXT_MAIN"pg_variables: main memory context"
119122
#definePGV_MCXT_VARS"pg_variables: variables hash"
@@ -157,9 +160,7 @@ variable_set(text *package_name, text *var_name,
157160
scalar->is_null=is_null;
158161
if (!scalar->is_null)
159162
{
160-
oldcxt=MemoryContextSwitchTo(is_transactional ?
161-
package->hctxTransact :
162-
package->hctxRegular);
163+
oldcxt=MemoryContextSwitchTo(pack_hctx(package,is_transactional));
163164
scalar->value=datumCopy(value,scalar->typbyval,scalar->typlen);
164165
MemoryContextSwitchTo(oldcxt);
165166
}
@@ -357,8 +358,7 @@ variable_insert(PG_FUNCTION_ARGS)
357358
/*
358359
* This is the first record for the var_name. Initialize attributes.
359360
*/
360-
init_attributes(variable,tupdesc,is_transactional ?
361-
package->hctxTransact :package->hctxRegular);
361+
init_attributes(variable,tupdesc,pack_hctx(package,is_transactional));
362362
}
363363
else
364364
check_attributes(variable,tupdesc);
@@ -1025,12 +1025,13 @@ get_packages_and_variables(PG_FUNCTION_ARGS)
10251025
{
10261026
HashVariableEntry*variable;
10271027
HASH_SEQ_STATUSvstat;
1028+
inti;
10281029

10291030
/* Skip packages marked as deleted */
10301031
if (!get_actual_pack_state(package)->is_valid)
10311032
continue;
10321033
/* Get variables list for package */
1033-
for(inti=0;i<2;i++)
1034+
for (i=0;i<2;i++)
10341035
{
10351036
hash_seq_init(&vstat,i ?package->varHashTransact :
10361037
package->varHashRegular);
@@ -1268,7 +1269,7 @@ makePackHTAB(HashPackageEntry *package, bool is_trans)
12681269
package->hctxRegular=AllocSetContextCreate(ModuleContext,
12691270
PGV_MCXT_VARS,
12701271
ALLOCSET_DEFAULT_SIZES);
1271-
sprintf(hash_name,"%s variables hash for package \"%s\"",
1272+
snprintf(hash_name,BUFSIZ,"%s variables hash for package \"%s\"",
12721273
is_trans ?"Transactional" :"Regular",key);
12731274
ctl.keysize=NAMEDATALEN;
12741275
ctl.entrysize=sizeof(HashVariableEntry);
@@ -1447,9 +1448,8 @@ createVariableInternal(HashPackageEntry *package, text *name, Oid typid,
14471448
errmsg("variable \"%s\" already created as %sTRANSACTIONAL",
14481449
key,is_transactional ?"NOT " :"")));
14491450

1450-
variable= (HashVariableEntry*)hash_search(is_transactional ?
1451-
package->varHashTransact :
1452-
package->varHashRegular,
1451+
variable= (HashVariableEntry*)hash_search(
1452+
pack_htab(package,is_transactional),
14531453
key,HASH_ENTER,&found);
14541454

14551455
/* Check variable type */
@@ -1486,9 +1486,7 @@ createVariableInternal(HashPackageEntry *package, text *name, Oid typid,
14861486
variable->typid=typid;
14871487
variable->is_transactional=is_transactional;
14881488
dlist_init(&variable->data);
1489-
historyEntry=MemoryContextAllocZero(is_transactional ?
1490-
package->hctxTransact :
1491-
package->hctxRegular,
1489+
historyEntry=MemoryContextAllocZero(pack_hctx(package,is_transactional),
14921490
sizeof(ValueHistoryEntry));
14931491

14941492
dlist_push_head(&variable->data,&historyEntry->node);
@@ -1816,15 +1814,15 @@ pushChangesStack(void)
18161814
changesStackContext=AllocSetContextCreate(ModuleContext,
18171815
PGV_MCXT_STACK,
18181816
ALLOCSET_START_SMALL_SIZES);
1819-
1817+
Assert(changesStackContext);
18201818
oldcxt=MemoryContextSwitchTo(changesStackContext);
18211819

18221820
if (!changesStack)
18231821
{
18241822
changesStack=palloc0(sizeof(dlist_head));
18251823
dlist_init(changesStack);
18261824
}
1827-
1825+
Assert(changesStack);
18281826
csn=palloc0(sizeof(ChangesStackNode));
18291827
csn->changedVarsList=palloc0(sizeof(dlist_head));
18301828
csn->changedPacksList=palloc0(sizeof(dlist_head));
@@ -1841,13 +1839,11 @@ pushChangesStack(void)
18411839
}
18421840

18431841
/*
1844-
*Add apackage to list of created or removed packs in current transaction level
1842+
*Create achangesStack with the required depth.
18451843
*/
18461844
staticvoid
1847-
addToChangedPacks(HashPackageEntry*package)
1845+
prepareChangesStack(void)
18481846
{
1849-
ChangesStackNode*csn;
1850-
18511847
if (!changesStack)
18521848
{
18531849
intlevel=GetCurrentTransactionNestLevel();
@@ -1857,11 +1853,18 @@ addToChangedPacks(HashPackageEntry *package)
18571853
pushChangesStack();
18581854
}
18591855
}
1856+
}
18601857

1861-
Assert(changesStack&&changesStackContext);
1862-
1858+
/*
1859+
* Add a package to list of created or removed packs in current transaction level
1860+
*/
1861+
staticvoid
1862+
addToChangedPacks(HashPackageEntry*package)
1863+
{
1864+
prepareChangesStack();
18631865
if (!isPackChangedInCurrentTrans(package))
18641866
{
1867+
ChangesStackNode*csn;
18651868
ChangedPacksNode*cpn;
18661869

18671870
csn=get_actual_changes_list();
@@ -1879,22 +1882,10 @@ addToChangedPacks(HashPackageEntry *package)
18791882
staticvoid
18801883
addToChangedVars(HashPackageEntry*package,HashVariableEntry*variable)
18811884
{
1882-
ChangesStackNode*csn;
1883-
1884-
if (!changesStack)
1885-
{
1886-
intlevel=GetCurrentTransactionNestLevel();
1887-
1888-
while (level-->0)
1889-
{
1890-
pushChangesStack();
1891-
}
1892-
}
1893-
1894-
Assert(changesStack&&changesStackContext);
1895-
1885+
prepareChangesStack();
18961886
if (!isVarChangedInCurrentTrans(variable))
18971887
{
1888+
ChangesStackNode*csn;
18981889
ChangedVarsNode*cvn;
18991890

19001891
csn=get_actual_changes_list();
@@ -1955,7 +1946,7 @@ typedef enum Action
19551946
* apply corresponding action on them
19561947
*/
19571948
staticvoid
1958-
proceedChanges(Actionaction)
1949+
processChanges(Actionaction)
19591950
{
19601951

19611952
ChangesStackNode*bottom_list;
@@ -2093,10 +2084,10 @@ pgvSubTransCallback(SubXactEvent event, SubTransactionId mySubid,
20932084
pushChangesStack();
20942085
break;
20952086
caseSUBXACT_EVENT_COMMIT_SUB:
2096-
proceedChanges(RELEASE_SAVEPOINT);
2087+
processChanges(RELEASE_SAVEPOINT);
20972088
break;
20982089
caseSUBXACT_EVENT_ABORT_SUB:
2099-
proceedChanges(ROLLBACK_TO_SAVEPOINT);
2090+
processChanges(ROLLBACK_TO_SAVEPOINT);
21002091
break;
21012092
caseSUBXACT_EVENT_PRE_COMMIT_SUB:
21022093
break;
@@ -2115,16 +2106,16 @@ pgvTransCallback(XactEvent event, void *arg)
21152106
switch (event)
21162107
{
21172108
caseXACT_EVENT_PRE_COMMIT:
2118-
proceedChanges(RELEASE_SAVEPOINT);
2109+
processChanges(RELEASE_SAVEPOINT);
21192110
break;
21202111
caseXACT_EVENT_ABORT:
2121-
proceedChanges(ROLLBACK_TO_SAVEPOINT);
2112+
processChanges(ROLLBACK_TO_SAVEPOINT);
21222113
break;
21232114
caseXACT_EVENT_PARALLEL_PRE_COMMIT:
2124-
proceedChanges(RELEASE_SAVEPOINT);
2115+
processChanges(RELEASE_SAVEPOINT);
21252116
break;
21262117
caseXACT_EVENT_PARALLEL_ABORT:
2127-
proceedChanges(ROLLBACK_TO_SAVEPOINT);
2118+
processChanges(ROLLBACK_TO_SAVEPOINT);
21282119
break;
21292120
default:
21302121
break;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp