mirror of https://github.com/postgres/postgres
This eases manipulation of query results in psql scripts. Pavel Stehule, reviewed by Piyush Newe, Shigeru Hanada, and Tom Lanepull/3/head
parent
101d6ae755
commit
d2d153fdb0
@ -0,0 +1,54 @@ |
||||
-- |
||||
-- Tests for psql features that aren't closely connected to any |
||||
-- specific server features |
||||
-- |
||||
-- \gset |
||||
select 10 as test01, 20 as test02, 'Hello' as test03 \gset pref01_ |
||||
\echo :pref01_test01 :pref01_test02 :pref01_test03 |
||||
10 20 Hello |
||||
-- should fail: bad variable name |
||||
select 10 as "bad name" |
||||
\gset |
||||
could not set variable "bad name" |
||||
-- multiple backslash commands in one line |
||||
select 1 as x, 2 as y \gset pref01_ \\ \echo :pref01_x |
||||
1 |
||||
select 3 as x, 4 as y \gset pref01_ \echo :pref01_x \echo :pref01_y |
||||
3 |
||||
4 |
||||
select 5 as x, 6 as y \gset pref01_ \\ \g \echo :pref01_x :pref01_y |
||||
x | y |
||||
---+--- |
||||
5 | 6 |
||||
(1 row) |
||||
|
||||
5 6 |
||||
select 7 as x, 8 as y \g \gset pref01_ \echo :pref01_x :pref01_y |
||||
x | y |
||||
---+--- |
||||
7 | 8 |
||||
(1 row) |
||||
|
||||
7 8 |
||||
-- NULL should unset the variable |
||||
\set var2 xyz |
||||
select 1 as var1, NULL as var2, 3 as var3 \gset |
||||
\echo :var1 :var2 :var3 |
||||
1 :var2 3 |
||||
-- \gset requires just one tuple |
||||
select 10 as test01, 20 as test02 from generate_series(1,3) \gset |
||||
more than one row returned for \gset |
||||
select 10 as test01, 20 as test02 from generate_series(1,0) \gset |
||||
no rows returned for \gset |
||||
-- \gset should work in FETCH_COUNT mode too |
||||
\set FETCH_COUNT 1 |
||||
select 1 as x, 2 as y \gset pref01_ \\ \echo :pref01_x |
||||
1 |
||||
select 3 as x, 4 as y \gset pref01_ \echo :pref01_x \echo :pref01_y |
||||
3 |
||||
4 |
||||
select 10 as test01, 20 as test02 from generate_series(1,3) \gset |
||||
more than one row returned for \gset |
||||
select 10 as test01, 20 as test02 from generate_series(1,0) \gset |
||||
no rows returned for \gset |
||||
\unset FETCH_COUNT |
@ -0,0 +1,39 @@ |
||||
-- |
||||
-- Tests for psql features that aren't closely connected to any |
||||
-- specific server features |
||||
-- |
||||
|
||||
-- \gset |
||||
|
||||
select 10 as test01, 20 as test02, 'Hello' as test03 \gset pref01_ |
||||
|
||||
\echo :pref01_test01 :pref01_test02 :pref01_test03 |
||||
|
||||
-- should fail: bad variable name |
||||
select 10 as "bad name" |
||||
\gset |
||||
|
||||
-- multiple backslash commands in one line |
||||
select 1 as x, 2 as y \gset pref01_ \\ \echo :pref01_x |
||||
select 3 as x, 4 as y \gset pref01_ \echo :pref01_x \echo :pref01_y |
||||
select 5 as x, 6 as y \gset pref01_ \\ \g \echo :pref01_x :pref01_y |
||||
select 7 as x, 8 as y \g \gset pref01_ \echo :pref01_x :pref01_y |
||||
|
||||
-- NULL should unset the variable |
||||
\set var2 xyz |
||||
select 1 as var1, NULL as var2, 3 as var3 \gset |
||||
\echo :var1 :var2 :var3 |
||||
|
||||
-- \gset requires just one tuple |
||||
select 10 as test01, 20 as test02 from generate_series(1,3) \gset |
||||
select 10 as test01, 20 as test02 from generate_series(1,0) \gset |
||||
|
||||
-- \gset should work in FETCH_COUNT mode too |
||||
\set FETCH_COUNT 1 |
||||
|
||||
select 1 as x, 2 as y \gset pref01_ \\ \echo :pref01_x |
||||
select 3 as x, 4 as y \gset pref01_ \echo :pref01_x \echo :pref01_y |
||||
select 10 as test01, 20 as test02 from generate_series(1,3) \gset |
||||
select 10 as test01, 20 as test02 from generate_series(1,0) \gset |
||||
|
||||
\unset FETCH_COUNT |
Loading…
Reference in new issue