Skip to content

Commit c163b97

Browse files
committed
Improve tests
1 parent 93162b5 commit c163b97

File tree

4 files changed

+102
-2
lines changed

4 files changed

+102
-2
lines changed

expected/pg_variables.out

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,19 @@
11
CREATE EXTENSION pg_variables;
2+
-- Test packages - sanity checks
3+
SELECT pgv_free();
4+
pgv_free
5+
----------
6+
7+
(1 row)
8+
9+
SELECT pgv_exists(NULL); -- fail
10+
ERROR: package name can not be NULL
11+
SELECT pgv_remove(NULL); -- fail
12+
ERROR: package name can not be NULL
13+
SELECT pgv_remove('vars'); -- fail
14+
ERROR: unrecognized package "vars"
15+
SELECT pgv_exists('vars111111111111111111111111111111111111111111111111111111111111'); -- fail
16+
ERROR: name "vars111111111111111111111111111111111111111111111111111111111111" is too long
217
-- Integer variables
318
SELECT pgv_get_int('vars', 'int1');
419
ERROR: unrecognized package "vars"
@@ -553,6 +568,34 @@ SELECT pgv_insert('vars3', 'r1', row(1, 1));
553568
ERROR: new record structure differs from variable "r1" structure
554569
SELECT pgv_insert('vars3', 'r1', row('str1', 'str1'));
555570
ERROR: new record structure differs from variable "r1" structure
571+
SELECT pgv_select('vars3', 'r1', ARRAY[[1,2]]); -- fail
572+
ERROR: searching for elements in multidimensional arrays is not supported
573+
-- Test variables caching
574+
SELECT pgv_insert('vars3', 'r2', row(1, 'str1', 'str2'));
575+
pgv_insert
576+
------------
577+
578+
(1 row)
579+
580+
SELECT pgv_update('vars3', 'r2', row(1, 'str2', 'str1'));
581+
pgv_update
582+
------------
583+
t
584+
(1 row)
585+
586+
-- Test NULL values
587+
SELECT pgv_insert('vars3', 'r2', NULL); -- fail
588+
ERROR: record argument can not be NULL
589+
SELECT pgv_update('vars3', 'r2', NULL); -- fail
590+
ERROR: record argument can not be NULL
591+
select pgv_delete('vars3', 'r2', NULL::int);
592+
pgv_delete
593+
------------
594+
f
595+
(1 row)
596+
597+
SELECT pgv_select('vars3', 'r1', NULL::int[]); -- fail
598+
ERROR: array argument can not be NULL
556599
SELECT pgv_select('vars3', 'r1');
557600
pgv_select
558601
------------
@@ -724,7 +767,8 @@ SELECT * FROM pgv_list() order by package, name;
724767
vars2 | j1 | f
725768
vars2 | j2 | f
726769
vars3 | r1 | f
727-
(22 rows)
770+
vars3 | r2 | f
771+
(23 rows)
728772

729773
SELECT package FROM pgv_stats() order by package;
730774
package
@@ -786,7 +830,8 @@ SELECT * FROM pgv_list() order by package, name;
786830
vars | tstz2 | f
787831
vars | tstzNULL | f
788832
vars3 | r1 | f
789-
(19 rows)
833+
vars3 | r2 | f
834+
(20 rows)
790835

791836
SELECT pgv_free();
792837
pgv_free

expected/pg_variables_trans.out

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1880,6 +1880,34 @@ RELEASE comm;
18801880
SELECT pgv_get('vars', 'any1',NULL::text);
18811881
ERROR: unrecognized package "vars"
18821882
COMMIT;
1883+
-- Test for PGPRO-2440
1884+
SELECT pgv_insert('vars3', 'r3', row(1 :: integer, NULL::varchar), true);
1885+
pgv_insert
1886+
------------
1887+
1888+
(1 row)
1889+
1890+
BEGIN;
1891+
SELECT pgv_insert('vars3', 'r3', row(2 :: integer, NULL::varchar), true);
1892+
pgv_insert
1893+
------------
1894+
1895+
(1 row)
1896+
1897+
SAVEPOINT comm;
1898+
SELECT pgv_insert('vars3', 'r3', row(3 :: integer, NULL::varchar), true);
1899+
pgv_insert
1900+
------------
1901+
1902+
(1 row)
1903+
1904+
COMMIT;
1905+
SELECT pgv_delete('vars3', 'r3', 3);
1906+
pgv_delete
1907+
------------
1908+
t
1909+
(1 row)
1910+
18831911
SELECT pgv_free();
18841912
pgv_free
18851913
----------

sql/pg_variables.sql

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
CREATE EXTENSION pg_variables;
22

3+
-- Test packages - sanity checks
4+
SELECT pgv_free();
5+
SELECT pgv_exists(NULL); -- fail
6+
SELECT pgv_remove(NULL); -- fail
7+
SELECT pgv_remove('vars'); -- fail
8+
SELECT pgv_exists('vars111111111111111111111111111111111111111111111111111111111111'); -- fail
9+
310
-- Integer variables
411
SELECT pgv_get_int('vars', 'int1');
512
SELECT pgv_get_int('vars', 'int1', false);
@@ -152,6 +159,17 @@ SELECT pgv_insert('vars3', 'r1', tab) FROM tab;
152159
SELECT pgv_insert('vars3', 'r1', row(1, 'str1', 'str2'));
153160
SELECT pgv_insert('vars3', 'r1', row(1, 1));
154161
SELECT pgv_insert('vars3', 'r1', row('str1', 'str1'));
162+
SELECT pgv_select('vars3', 'r1', ARRAY[[1,2]]); -- fail
163+
164+
-- Test variables caching
165+
SELECT pgv_insert('vars3', 'r2', row(1, 'str1', 'str2'));
166+
SELECT pgv_update('vars3', 'r2', row(1, 'str2', 'str1'));
167+
168+
-- Test NULL values
169+
SELECT pgv_insert('vars3', 'r2', NULL); -- fail
170+
SELECT pgv_update('vars3', 'r2', NULL); -- fail
171+
select pgv_delete('vars3', 'r2', NULL::int);
172+
SELECT pgv_select('vars3', 'r1', NULL::int[]); -- fail
155173

156174
SELECT pgv_select('vars3', 'r1');
157175
SELECT pgv_select('vars3', 'r1', 1);

sql/pg_variables_trans.sql

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,4 +482,13 @@ RELEASE comm;
482482
SELECT pgv_get('vars', 'any1',NULL::text);
483483
COMMIT;
484484

485+
-- Test for PGPRO-2440
486+
SELECT pgv_insert('vars3', 'r3', row(1 :: integer, NULL::varchar), true);
487+
BEGIN;
488+
SELECT pgv_insert('vars3', 'r3', row(2 :: integer, NULL::varchar), true);
489+
SAVEPOINT comm;
490+
SELECT pgv_insert('vars3', 'r3', row(3 :: integer, NULL::varchar), true);
491+
COMMIT;
492+
SELECT pgv_delete('vars3', 'r3', 3);
493+
485494
SELECT pgv_free();

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy