@@ -1392,7 +1392,7 @@ SELECT pgv_free();
1392
1392
1393
1393
(1 row)
1394
1394
1395
- --Additional tests
1395
+ -- Additional tests
1396
1396
SELECT pgv_insert('vars3', 'r1', tab, true) FROM tab;
1397
1397
pgv_insert
1398
1398
------------
@@ -1598,3 +1598,243 @@ BEGIN;
1598
1598
SELECT pgv_set('vars', 'any1', 'wrong type'::varchar, true);
1599
1599
ERROR: variable "any1" requires "text" value
1600
1600
COMMIT;
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