@@ -1392,7 +1392,7 @@ SELECT pgv_free();
13921392
13931393(1 row)
13941394
1395- --Additional tests
1395+ -- Additional tests
13961396SELECT pgv_insert('vars3', 'r1', tab, true) FROM tab;
13971397 pgv_insert
13981398------------
@@ -1598,3 +1598,243 @@ BEGIN;
15981598SELECT pgv_set('vars', 'any1', 'wrong type'::varchar, true);
15991599ERROR: variable "any1" requires "text" value
16001600COMMIT;
1601+ -- THE REMOVAL OF THE VARIABLE MUST BE CANCELED ON ROLLBACK
1602+ SELECT pgv_set('vars', 'any1', 'variable exists'::text, true);
1603+ pgv_set
1604+ ---------
1605+
1606+ (1 row)
1607+
1608+ BEGIN;
1609+ SELECT pgv_remove('vars', 'any1');
1610+ pgv_remove
1611+ ------------
1612+
1613+ (1 row)
1614+
1615+ SELECT pgv_exists('vars', 'any1');
1616+ pgv_exists
1617+ ------------
1618+ f
1619+ (1 row)
1620+
1621+ ROLLBACK;
1622+ SELECT pgv_exists('vars', 'any1');
1623+ pgv_exists
1624+ ------------
1625+ t
1626+ (1 row)
1627+
1628+ SELECT pgv_get('vars', 'any1',NULL::text);
1629+ pgv_get
1630+ -----------------
1631+ variable exists
1632+ (1 row)
1633+
1634+ BEGIN;
1635+ SELECT pgv_remove('vars', 'any1');
1636+ pgv_remove
1637+ ------------
1638+
1639+ (1 row)
1640+
1641+ SELECT pgv_exists('vars', 'any1');
1642+ pgv_exists
1643+ ------------
1644+ f
1645+ (1 row)
1646+
1647+ COMMIT;
1648+ SELECT pgv_exists('vars', 'any1');
1649+ pgv_exists
1650+ ------------
1651+ f
1652+ (1 row)
1653+
1654+ SELECT pgv_get('vars', 'any1',NULL::text);
1655+ ERROR: unrecognized variable "any1"
1656+ SELECT * FROM pgv_list() ORDER BY package, name;
1657+ package | name | is_transactional
1658+ ---------+------+------------------
1659+ vars3 | r1 | t
1660+ (1 row)
1661+
1662+ BEGIN;
1663+ SELECT pgv_free();
1664+ pgv_free
1665+ ----------
1666+
1667+ (1 row)
1668+
1669+ ROLLBACK;
1670+ SELECT * FROM pgv_list() ORDER BY package, name;
1671+ package | name | is_transactional
1672+ ---------+------+------------------
1673+ vars3 | r1 | t
1674+ (1 row)
1675+
1676+ BEGIN;
1677+ SELECT pgv_free();
1678+ pgv_free
1679+ ----------
1680+
1681+ (1 row)
1682+
1683+ COMMIT;
1684+ SELECT * FROM pgv_list() ORDER BY package, name;
1685+ package | name | is_transactional
1686+ ---------+------+------------------
1687+ (0 rows)
1688+
1689+ SELECT pgv_set('vars', 'regular', 'regular variable exists'::text);
1690+ pgv_set
1691+ ---------
1692+
1693+ (1 row)
1694+
1695+ SELECT pgv_set('vars', 'trans1', 'trans1 variable exists'::text, true);
1696+ pgv_set
1697+ ---------
1698+
1699+ (1 row)
1700+
1701+ BEGIN;
1702+ SELECT pgv_free();
1703+ pgv_free
1704+ ----------
1705+
1706+ (1 row)
1707+
1708+ SELECT * FROM pgv_list() ORDER BY package, name;
1709+ package | name | is_transactional
1710+ ---------+------+------------------
1711+ (0 rows)
1712+
1713+ SELECT pgv_set('vars', 'trans2', 'trans2 variable exists'::text, true);
1714+ pgv_set
1715+ ---------
1716+
1717+ (1 row)
1718+
1719+ SELECT * FROM pgv_list() ORDER BY package, name;
1720+ package | name | is_transactional
1721+ ---------+--------+------------------
1722+ vars | trans2 | t
1723+ (1 row)
1724+
1725+ SELECT pgv_remove('vars');
1726+ pgv_remove
1727+ ------------
1728+
1729+ (1 row)
1730+
1731+ SELECT * FROM pgv_list() ORDER BY package, name;
1732+ package | name | is_transactional
1733+ ---------+------+------------------
1734+ (0 rows)
1735+
1736+ ROLLBACK;
1737+ SELECT * FROM pgv_list() ORDER BY package, name;
1738+ package | name | is_transactional
1739+ ---------+--------+------------------
1740+ vars | trans1 | t
1741+ (1 row)
1742+
1743+ BEGIN;
1744+ SAVEPOINT sp1;
1745+ SAVEPOINT sp2;
1746+ SAVEPOINT sp3;
1747+ SELECT pgv_set('vars2', 'trans2', 'trans2 variable exists'::text, true);
1748+ pgv_set
1749+ ---------
1750+
1751+ (1 row)
1752+
1753+ SAVEPOINT sp4;
1754+ SAVEPOINT sp5;
1755+ SELECT pgv_free();
1756+ pgv_free
1757+ ----------
1758+
1759+ (1 row)
1760+
1761+ SELECT package FROM pgv_stats();
1762+ package
1763+ ---------
1764+ vars2
1765+ vars
1766+ (2 rows)
1767+
1768+ SELECT * FROM pgv_list() ORDER BY package, name;
1769+ package | name | is_transactional
1770+ ---------+------+------------------
1771+ (0 rows)
1772+
1773+ RELEASE sp5;
1774+ SELECT package FROM pgv_stats();
1775+ package
1776+ ---------
1777+ vars2
1778+ vars
1779+ (2 rows)
1780+
1781+ SELECT * FROM pgv_list() ORDER BY package, name;
1782+ package | name | is_transactional
1783+ ---------+------+------------------
1784+ (0 rows)
1785+
1786+ RELEASE sp4;
1787+ SELECT package FROM pgv_stats();
1788+ package
1789+ ---------
1790+ vars
1791+ (1 row)
1792+
1793+ SELECT * FROM pgv_list() ORDER BY package, name;
1794+ package | name | is_transactional
1795+ ---------+------+------------------
1796+ (0 rows)
1797+
1798+ COMMIT;
1799+ SELECT package FROM pgv_stats();
1800+ package
1801+ ---------
1802+ (0 rows)
1803+
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+
0 commit comments