Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5b8b4bc

Browse files
Add support of package removal rollback
1 parent65d74a6 commit5b8b4bc

File tree

5 files changed

+837
-275
lines changed

5 files changed

+837
-275
lines changed

‎README.md‎

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,14 +335,32 @@ SELECT pgv_get('pack','var_int', NULL::int);
335335
ERROR: unrecognized variable"var_int"
336336
COMMIT;
337337
```
338-
Also you cannot undo removing variable by`ROLLBACK`:
338+
You can undo removal of a transactional variable by`ROLLBACK`, but if you remove
339+
a whole package, all regular variables will be removed permanently:
339340
```sql
340-
SELECT pgv_set('pack','var_int',122, true);
341+
SELECT pgv_set('pack','var_reg',123);
342+
SELECT pgv_set('pack','var_trans',456, true);
341343
BEGIN;
342344
SELECT pgv_free();
345+
SELECT*FROM pgv_list();
346+
package | name | is_transactional
347+
---------+------+------------------
348+
(0 rows)
349+
350+
-- Memory is allocated yet
351+
SELECT*FROM pgv_stats();
352+
package | allocated_memory
353+
---------+------------------
354+
pack |24576
355+
(1 row)
356+
343357
ROLLBACK;
344-
SELECT pgv_get('pack','var_int',NULL::int);
345-
ERROR: unrecognized package"pack"
358+
SELECT*FROM pgv_list();
359+
package | name | is_transactional
360+
---------+-----------+------------------
361+
pack | var_trans | t
362+
(1 row)
363+
346364
```
347365
If you created transactional variable once, you should use flag`is_transactional`
348366
every time when you want to change variable value by functions`pgv_set()`,

‎expected/pg_variables_trans.out‎

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1653,3 +1653,152 @@ SELECT pgv_exists('vars', 'any1');
16531653

16541654
SELECT pgv_get('vars', 'any1',NULL::text);
16551655
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', 'trans', 'variable exists'::text, true);
1748+
pgv_set
1749+
---------
1750+
1751+
(1 row)
1752+
1753+
SAVEPOINT sp4;
1754+
SAVEPOINT sp5;
1755+
--SELECT pgv_remove('vars2');
1756+
SELECT pgv_free();
1757+
pgv_free
1758+
----------
1759+
1760+
(1 row)
1761+
1762+
SELECT pgv_stats();
1763+
pgv_stats
1764+
---------------
1765+
(vars2,24576)
1766+
(vars,24576)
1767+
(2 rows)
1768+
1769+
SELECT pgv_list();
1770+
pgv_list
1771+
----------
1772+
(0 rows)
1773+
1774+
RELEASE sp5;
1775+
SELECT pgv_stats();
1776+
pgv_stats
1777+
---------------
1778+
(vars2,24576)
1779+
(vars,24576)
1780+
(2 rows)
1781+
1782+
SELECT pgv_list();
1783+
pgv_list
1784+
----------
1785+
(0 rows)
1786+
1787+
RELEASE sp4;
1788+
SELECT pgv_stats();
1789+
pgv_stats
1790+
--------------
1791+
(vars,24576)
1792+
(1 row)
1793+
1794+
SELECT pgv_list();
1795+
pgv_list
1796+
----------
1797+
(0 rows)
1798+
1799+
COMMIT;
1800+
SELECT pgv_stats();
1801+
pgv_stats
1802+
-----------
1803+
(0 rows)
1804+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp