@@ -22,7 +22,6 @@ SELECT * FROM pgv_list() order by package, name;
2222-- -------+------+------------------
2323 vars | int1 | f
2424 vars | int2 | f
25- (2 rows)
2625```
2726
2827But if variable created with flag** is_transactional** :
@@ -34,11 +33,9 @@ SELECT pgv_set('vars', 'trans_int', 102, true);
3433ROLLBACK TO sp1;
3534COMMIT ;
3635SELECT pgv_get(' vars' ,' trans_int' ,NULL ::int );
37-
3836 pgv_get
3937-- -------
4038101
41- (1 row)
4239```
4340
4441##License
@@ -194,13 +191,11 @@ SELECT pgv_get('vars', 'int1', NULL::int);
194191 pgv_get_int
195192-- -----------
196193101
197- (1 row)
198194
199195SELECT SELECT pgv_get(' vars' ,' text1' ,NULL ::text );
200196 pgv_get
201197-- -------------
202198text variable
203- (1 row)
204199```
205200
206201Let's assume we have a** tab** table:
@@ -220,34 +215,29 @@ SELECT pgv_select('vars', 'r1');
220215-- ----------
221216 (1 ,str11)
222217 (0 ,str00)
223- (2 rows)
224218
225219SELECT pgv_select(' vars' ,' r1' ,1 );
226220 pgv_select
227221-- ----------
228222 (1 ,str11)
229- (1 row)
230223
231224SELECT pgv_select(' vars' ,' r1' ,0 );
232225 pgv_select
233226-- ----------
234227 (0 ,str00)
235- (1 row)
236228
237229SELECT pgv_select(' vars' ,' r1' , ARRAY[1 ,0 ]);
238230 pgv_select
239231-- ----------
240232 (1 ,str11)
241233 (0 ,str00)
242- (2 rows)
243234
244235SELECT pgv_delete(' vars' ,' r1' ,1 );
245236
246237SELECT pgv_select(' vars' ,' r1' );
247238 pgv_select
248239-- ----------
249240 (0 ,str00)
250- (1 row)
251241```
252242
253243You can list packages and variables:
@@ -259,7 +249,6 @@ SELECT * FROM pgv_list() order by package, name;
259249 vars | int1 | f
260250 vars | r1 | f
261251 vars | text1 | f
262- (3 rows)
263252```
264253
265254And get used memory in bytes:
@@ -269,7 +258,6 @@ SELECT * FROM pgv_stats() order by package;
269258 package | allocated_memory
270259-- -------+------------------
271260 vars |32768
272- (1 row)
273261```
274262
275263You can delete variables or whole packages:
@@ -288,6 +276,7 @@ If you want variables with support of transactions and savepoints, you should
288276add flag` is_transactional = true ` as the last argument in functions` pgv_set() `
289277or` pgv_insert() ` .
290278Following use cases describe behavior of transactional variables:
279+
291280``` sql
292281SELECT pgv_set(' pack' ,' var_text' ,' before transaction block' ::text , true);
293282BEGIN ;
@@ -307,17 +296,17 @@ SELECT pgv_get('pack', 'var_text', NULL::text);
307296 pgv_get
308297-- ----------------
309298 before savepoint
310- (1 row)
311299
312300ROLLBACK ;
313301SELECT pgv_get(' pack' ,' var_text' ,NULL ::text );
314302 pgv_get
315303-- ------------------------
316304 before transaction block
317-
318305```
306+
319307If you create variable after` BEGIN ` or` SAVEPOINT ` statements and than rollback
320308to previous state - variable will not be exist:
309+
321310``` sql
322311BEGIN ;
323312SAVEPOINT sp1;
@@ -328,14 +317,15 @@ SELECT pgv_get('pack', 'var_int', NULL::int);
328317pgv_get
329318-- -------
330319122
331- (1 row)
332320
333321ROLLBACK TO sp1;
334322SELECT pgv_get(' pack' ,' var_int' ,NULL ::int );
335323ERROR: unrecognized variable" var_int"
336324COMMIT ;
337325```
326+
338327Also you cannot undo removing variable by` ROLLBACK ` :
328+
339329``` sql
340330SELECT pgv_set(' pack' ,' var_int' ,122 , true);
341331BEGIN ;
@@ -344,18 +334,17 @@ ROLLBACK;
344334SELECT pgv_get(' pack' ,' var_int' ,NULL ::int );
345335ERROR: unrecognized package" pack"
346336```
337+
347338If you created transactional variable once, you should use flag` is_transactional `
348339every time when you want to change variable value by functions` pgv_set() ` ,
349340` pgv_insert() ` and deprecated setters (i.e.` pgv_set_int() ` ). If you try to
350341change this option, you'll get an error:
342+
351343``` sql
352344SELECT pgv_insert(' pack' ,' var_record' , row(123 ::int ,' text' ::text ), true);
353- pgv_insert
354- -- ----------
355-
356- (1 row)
357345
358346SELECT pgv_insert(' pack' ,' var_record' , row(456 ::int ,' another text' ::text ));
359347ERROR: variable" var_record" already createdas TRANSACTIONAL
360348```
349+
361350Functions` pgv_update() ` and` pgv_delete() ` do not require this flag.