Skip to content

Commit 9924cd2

Browse files
CherkashinSergeyza-arthur
authored andcommitted
Reset the Package->hctxRegular if package in state
"removed, but not committed yet".
1 parent 49c8a93 commit 9924cd2

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

expected/pg_variables_trans.out

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1705,6 +1705,12 @@ SELECT pgv_free();
17051705

17061706
(1 row)
17071707

1708+
SELECT pgv_free(); -- Check sequential package removal in one subtransaction
1709+
pgv_free
1710+
----------
1711+
1712+
(1 row)
1713+
17081714
SELECT * FROM pgv_list() ORDER BY package, name;
17091715
package | name | is_transactional
17101716
---------+------+------------------

pg_variables.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,11 @@ removePackageInternal(Package *package)
916916
TransObject *transObject;
917917

918918
/* All regular variables will be freed */
919-
MemoryContextDelete(package->hctxRegular);
919+
if (package->hctxRegular)
920+
{
921+
MemoryContextDelete(package->hctxRegular);
922+
package->hctxRegular = NULL;
923+
}
920924

921925
/* Add to changes list */
922926
transObject = &package->transObject;

sql/pg_variables_trans.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,7 @@ SELECT pgv_set('vars', 'regular', 'regular variable exists'::text);
425425
SELECT pgv_set('vars', 'trans1', 'trans1 variable exists'::text, true);
426426
BEGIN;
427427
SELECT pgv_free();
428+
SELECT pgv_free(); -- Check sequential package removal in one subtransaction
428429
SELECT * FROM pgv_list() ORDER BY package, name;
429430
SELECT pgv_set('vars', 'trans2', 'trans2 variable exists'::text, true);
430431
SELECT * FROM pgv_list() ORDER BY package, name;

0 commit comments

Comments
 (0)