Skip to content

Commit 370ddfe

Browse files
Fix a valid state of a newly created variable after removing its package
1 parent e306b3f commit 370ddfe

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

expected/pg_variables_trans.out

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1801,3 +1801,40 @@ SELECT package FROM pgv_stats();
18011801
---------
18021802
(0 rows)
18031803

1804+
BEGIN;
1805+
SELECT pgv_set('vars', 'trans1', 'package created'::text, true);
1806+
pgv_set
1807+
---------
1808+
1809+
(1 row)
1810+
1811+
SELECT pgv_remove('vars');
1812+
pgv_remove
1813+
------------
1814+
1815+
(1 row)
1816+
1817+
SELECT * FROM pgv_list() ORDER BY package, name;
1818+
package | name | is_transactional
1819+
---------+------+------------------
1820+
(0 rows)
1821+
1822+
SELECT pgv_set('vars', 'trans1', 'package restored'::text, true);
1823+
pgv_set
1824+
---------
1825+
1826+
(1 row)
1827+
1828+
SELECT * FROM pgv_list() ORDER BY package, name;
1829+
package | name | is_transactional
1830+
---------+--------+------------------
1831+
vars | trans1 | t
1832+
(1 row)
1833+
1834+
COMMIT;
1835+
SELECT pgv_remove('vars');
1836+
pgv_remove
1837+
------------
1838+
1839+
(1 row)
1840+

pg_variables.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1471,8 +1471,8 @@ createVariableInternal(Package *package, text *name, Oid typid,
14711471
&scalar->typbyval);
14721472
varState->value.scalar.is_null = true;
14731473
}
1474-
varState->state.is_valid = true;
14751474
}
1475+
getActualStateOfContainer(variable)->is_valid = true;
14761476
/* If it is necessary, put variable to changedVars */
14771477
if (is_transactional)
14781478
addToChangedVars(variable);

sql/pg_variables_trans.sql

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,3 +451,12 @@ SELECT package FROM pgv_stats();
451451
SELECT * FROM pgv_list() ORDER BY package, name;
452452
COMMIT;
453453
SELECT package FROM pgv_stats();
454+
455+
BEGIN;
456+
SELECT pgv_set('vars', 'trans1', 'package created'::text, true);
457+
SELECT pgv_remove('vars');
458+
SELECT * FROM pgv_list() ORDER BY package, name;
459+
SELECT pgv_set('vars', 'trans1', 'package restored'::text, true);
460+
SELECT * FROM pgv_list() ORDER BY package, name;
461+
COMMIT;
462+
SELECT pgv_remove('vars');

0 commit comments

Comments
 (0)