Skip to content

Commit a3cefd3

Browse files
Optimization of memory context proceedeng. Typos corrected
1 parent e7c12d9 commit a3cefd3

File tree

4 files changed

+15
-19
lines changed

4 files changed

+15
-19
lines changed

expected/pg_variables_trans.out

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -979,7 +979,7 @@ SELECT pgv_free();
979979

980980
(1 row)
981981

982-
-- CHECK ROLLBACK AFTER COMMITING SUBTRANSACTION
982+
-- CHECK ROLLBACK AFTER COMMITTING SUBTRANSACTION
983983
BEGIN;
984984
SELECT pgv_set('vars', 'any1', 'before savepoint sp1'::text, true);
985985
pgv_set
@@ -1319,7 +1319,7 @@ SELECT pgv_remove('vars');
13191319

13201320
(1 row)
13211321

1322-
-- CHECK ROLLBACK AFTER COMMITING SUBTRANSACTION
1322+
-- CHECK ROLLBACK AFTER COMMITTING SUBTRANSACTION
13231323
SELECT pgv_set('vars', 'any1', 'before transaction block'::text, true);
13241324
pgv_set
13251325
---------

pg_variables.c

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ variable_set(text *package_name, text *var_name,
127127
MemoryContext oldcxt;
128128

129129
package = getPackageByName(package_name, true, false);
130-
oldcxt = MemoryContextSwitchTo(package->hctx);
131130
variable = createVariableInternal(package, var_name, typid,
132131
is_transactional);
133132

@@ -138,10 +137,13 @@ variable_set(text *package_name, text *var_name,
138137

139138
scalar->is_null = is_null;
140139
if (!scalar->is_null)
140+
{
141+
oldcxt = MemoryContextSwitchTo(package->hctx);
141142
scalar->value = datumCopy(value, scalar->typbyval, scalar->typlen);
143+
MemoryContextSwitchTo(oldcxt);
144+
}
142145
else
143146
scalar->value = 0;
144-
MemoryContextSwitchTo(oldcxt);
145147
}
146148

147149
static Datum
@@ -604,12 +606,9 @@ variable_insert(PG_FUNCTION_ARGS)
604606
strncmp(VARDATA_ANY(var_name), LastVariable->name,
605607
VARSIZE_ANY_EXHDR(var_name)) != 0)
606608
{
607-
MemoryContext oldcxt;
608-
oldcxt = MemoryContextSwitchTo(package->hctx);
609609
variable = createVariableInternal(package, var_name, RECORDOID,
610610
is_transactional);
611611
LastVariable = variable;
612-
MemoryContextSwitchTo(oldcxt);
613612
}
614613
else
615614
{
@@ -981,7 +980,7 @@ variable_select_by_values(PG_FUNCTION_ARGS)
981980
oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
982981

983982
funcctx->tuple_desc = CreateTupleDescCopy(
984-
(*get_actual_value_record(variable)).tupdesc);
983+
get_actual_value_record(variable)->tupdesc);
985984

986985
var = (VariableIteratorRec *) palloc(sizeof(VariableIteratorRec));
987986
var->iterator = array_create_iterator(values, 0, NULL);
@@ -1675,11 +1674,11 @@ createVariableInternal(HashPackageEntry *package, text *name, Oid typid,
16751674
if (variable)
16761675
{
16771676
ValueHistoryEntry *historyEntry;
1678-
memset(&variable->data, 0, sizeof(variable->data));
16791677
variable->typid = typid;
16801678
variable->is_transactional = is_transactional;
16811679
dlist_init(&(variable->data));
1682-
historyEntry = palloc0(sizeof(ValueHistoryEntry));
1680+
historyEntry = MemoryContextAllocZero(package->hctx,
1681+
sizeof(ValueHistoryEntry));
16831682
dlist_push_head(&variable->data, &historyEntry->node);
16841683
if (typid != RECORDOID)
16851684
{
@@ -1895,7 +1894,6 @@ popChangedVarsStack()
18951894
static void
18961895
addToChangedVars(HashPackageEntry *package, HashVariableEntry *variable)
18971896
{
1898-
MemoryContext oldcxt;
18991897
ChangedVarsStackNode *cvsn;
19001898
if (!changedVarsStack)
19011899
{
@@ -1911,12 +1909,10 @@ addToChangedVars(HashPackageEntry *package, HashVariableEntry *variable)
19111909
{
19121910
ChangedVarsNode *cvn;
19131911
cvsn = dlist_head_element(ChangedVarsStackNode, node, changedVarsStack);
1914-
oldcxt = MemoryContextSwitchTo(cvsn->ctx);
1915-
cvn = palloc0(sizeof(ChangedVarsNode));
1912+
cvn = MemoryContextAllocZero(cvsn->ctx, sizeof(ChangedVarsNode));
19161913
cvn->package = package;
19171914
cvn->variable = variable;
19181915
dlist_push_head(cvsn->changedVarsList, &cvn->node);
1919-
MemoryContextSwitchTo(oldcxt);
19201916
}
19211917
}
19221918

@@ -1927,7 +1923,7 @@ addToChangedVars(HashPackageEntry *package, HashVariableEntry *variable)
19271923
* upper level, it has savepoint there, so we need to release it.
19281924
*/
19291925
static void
1930-
lelevUpOrRelease()
1926+
levelUpOrRelease()
19311927
{
19321928
if (changedVarsStack)
19331929
{
@@ -2001,7 +1997,7 @@ pgvSubTransCallback(SubXactEvent event, SubTransactionId mySubid,
20011997
pushChangedVarsStack();
20021998
break;
20031999
case SUBXACT_EVENT_COMMIT_SUB:
2004-
lelevUpOrRelease();
2000+
levelUpOrRelease();
20052001
break;
20062002
case SUBXACT_EVENT_ABORT_SUB:
20072003
applyActionOnChangedVars(ROLLBACK_TO_SAVEPOINT);

pg_variables_record.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ insert_savepoint(HashVariableEntry *variable, MemoryContext packageContext)
361361

362362
Assert(variable->typid == RECORDOID);
363363

364-
/* Create new hstory entry */
364+
/* Create new history entry */
365365
record_prev = get_actual_value_record(variable);
366366
oldcxt = MemoryContextSwitchTo(packageContext);
367367
history_entry_new = palloc0(sizeof(ValueHistoryEntry));

sql/pg_variables_trans.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ SELECT pgv_select('vars3', 'r2');
216216
SELECT pgv_free();
217217

218218

219-
-- CHECK ROLLBACK AFTER COMMITING SUBTRANSACTION
219+
-- CHECK ROLLBACK AFTER COMMITTING SUBTRANSACTION
220220
BEGIN;
221221
SELECT pgv_set('vars', 'any1', 'before savepoint sp1'::text, true);
222222
SAVEPOINT sp1;
@@ -314,7 +314,7 @@ SELECT pgv_select('vars', 'r2');
314314
SELECT pgv_remove('vars');
315315

316316

317-
-- CHECK ROLLBACK AFTER COMMITING SUBTRANSACTION
317+
-- CHECK ROLLBACK AFTER COMMITTING SUBTRANSACTION
318318
SELECT pgv_set('vars', 'any1', 'before transaction block'::text, true);
319319
BEGIN;
320320
SELECT pgv_set('vars', 'any1', 'before savepoint sp1'::text, true);

0 commit comments

Comments
 (0)