Skip to content

Commit d136d84

Browse files
Fixed pull request issues
1 parent 0c7a850 commit d136d84

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+
#define pack_hctx(pack, is_trans) \
117+
(is_trans ? pack->hctxTransact : pack->hctxRegular)
118+
#define pack_htab(pack, is_trans) \
119+
(is_trans ? pack->varHashTransact : pack->varHashRegular)
117120

118121
#define PGV_MCXT_MAIN "pg_variables: main memory context"
119122
#define PGV_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_STATUS vstat;
1028+
int i;
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(int i=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 a package to list of created or removed packs in current transaction level
1842+
* Create a changesStack with the required depth.
18451843
*/
18461844
static void
1847-
addToChangedPacks(HashPackageEntry *package)
1845+
prepareChangesStack(void)
18481846
{
1849-
ChangesStackNode *csn;
1850-
18511847
if (!changesStack)
18521848
{
18531849
int level = 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+
static void
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
static void
18801883
addToChangedVars(HashPackageEntry *package, HashVariableEntry *variable)
18811884
{
1882-
ChangesStackNode *csn;
1883-
1884-
if (!changesStack)
1885-
{
1886-
int level = 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
static void
1958-
proceedChanges(Action action)
1949+
processChanges(Action action)
19591950
{
19601951

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

0 commit comments

Comments
 (0)