
This introduces the concept of table access methods, i.e. CREATE ACCESS METHOD ... TYPE TABLE and CREATE TABLE ... USING (storage-engine). No table access functionality is delegated to table AMs as of this commit, that'll be done in following commits. Subsequent commits will incrementally abstract table access functionality to be routed through table access methods. That change is too large to be reviewed & committed at once, so it'll be done incrementally. Docs will be updated at the end, as adding them incrementally would likely make them less coherent, and definitely is a lot more work, without a lot of benefit. Table access methods are specified similar to index access methods, i.e. pg_am.amhandler returns, as INTERNAL, a pointer to a struct with callbacks. In contrast to index AMs that struct needs to live as long as a backend, typically that's achieved by just returning a pointer to a constant struct. Psql's \d+ now displays a table's access method. That can be disabled with HIDE_TABLEAM=true, which is mainly useful so regression tests can be run against different AMs. It's quite possible that this behaviour still needs to be fine tuned. For now it's not allowed to set a table AM for a partitioned table, as we've not resolved how partitions would inherit that. Disallowing allows us to introduce, if we decide that's the way forward, such a behaviour without a compatibility break. Catversion bumped, to add the heap table AM and references to it. Author: Haribabu Kommi, Andres Freund, Alvaro Herrera, Dimitri Golgov and others Discussion: https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de https://postgr.es/m/20160812231527.GA690404@alvherre.pgsql https://postgr.es/m/20190107235616.6lur25ph22u5u5av@alap3.anarazel.de https://postgr.es/m/20190304234700.w5tmhducs5wxgzls@alap3.anarazel.de
4581 lines
104 KiB
Plaintext
4581 lines
104 KiB
Plaintext
--
|
|
-- Tests for psql features that aren't closely connected to any
|
|
-- specific server features
|
|
--
|
|
-- \set
|
|
-- fail: invalid name
|
|
\set invalid/name foo
|
|
invalid variable name: "invalid/name"
|
|
-- fail: invalid value for special variable
|
|
\set AUTOCOMMIT foo
|
|
unrecognized value "foo" for "AUTOCOMMIT": Boolean expected
|
|
\set FETCH_COUNT foo
|
|
invalid value "foo" for "FETCH_COUNT": integer expected
|
|
-- check handling of built-in boolean variable
|
|
\echo :ON_ERROR_ROLLBACK
|
|
off
|
|
\set ON_ERROR_ROLLBACK
|
|
\echo :ON_ERROR_ROLLBACK
|
|
on
|
|
\set ON_ERROR_ROLLBACK foo
|
|
unrecognized value "foo" for "ON_ERROR_ROLLBACK"
|
|
Available values are: on, off, interactive.
|
|
\echo :ON_ERROR_ROLLBACK
|
|
on
|
|
\set ON_ERROR_ROLLBACK on
|
|
\echo :ON_ERROR_ROLLBACK
|
|
on
|
|
\unset ON_ERROR_ROLLBACK
|
|
\echo :ON_ERROR_ROLLBACK
|
|
off
|
|
-- \g and \gx
|
|
SELECT 1 as one, 2 as two \g
|
|
one | two
|
|
-----+-----
|
|
1 | 2
|
|
(1 row)
|
|
|
|
\gx
|
|
-[ RECORD 1 ]
|
|
one | 1
|
|
two | 2
|
|
|
|
SELECT 3 as three, 4 as four \gx
|
|
-[ RECORD 1 ]
|
|
three | 3
|
|
four | 4
|
|
|
|
\g
|
|
three | four
|
|
-------+------
|
|
3 | 4
|
|
(1 row)
|
|
|
|
-- \gx should work in FETCH_COUNT mode too
|
|
\set FETCH_COUNT 1
|
|
SELECT 1 as one, 2 as two \g
|
|
one | two
|
|
-----+-----
|
|
1 | 2
|
|
(1 row)
|
|
|
|
\gx
|
|
-[ RECORD 1 ]
|
|
one | 1
|
|
two | 2
|
|
|
|
SELECT 3 as three, 4 as four \gx
|
|
-[ RECORD 1 ]
|
|
three | 3
|
|
four | 4
|
|
|
|
\g
|
|
three | four
|
|
-------+------
|
|
3 | 4
|
|
(1 row)
|
|
|
|
\unset FETCH_COUNT
|
|
-- \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
|
|
invalid variable name: "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
|
|
-- \gdesc
|
|
SELECT
|
|
NULL AS zero,
|
|
1 AS one,
|
|
2.0 AS two,
|
|
'three' AS three,
|
|
$1 AS four,
|
|
sin($2) as five,
|
|
'foo'::varchar(4) as six,
|
|
CURRENT_DATE AS now
|
|
\gdesc
|
|
Column | Type
|
|
--------+----------------------
|
|
zero | text
|
|
one | integer
|
|
two | numeric
|
|
three | text
|
|
four | text
|
|
five | double precision
|
|
six | character varying(4)
|
|
now | date
|
|
(8 rows)
|
|
|
|
-- should work with tuple-returning utilities, such as EXECUTE
|
|
PREPARE test AS SELECT 1 AS first, 2 AS second;
|
|
EXECUTE test \gdesc
|
|
Column | Type
|
|
--------+---------
|
|
first | integer
|
|
second | integer
|
|
(2 rows)
|
|
|
|
EXPLAIN EXECUTE test \gdesc
|
|
Column | Type
|
|
------------+------
|
|
QUERY PLAN | text
|
|
(1 row)
|
|
|
|
-- should fail cleanly - syntax error
|
|
SELECT 1 + \gdesc
|
|
ERROR: syntax error at end of input
|
|
LINE 1: SELECT 1 +
|
|
^
|
|
-- check behavior with empty results
|
|
SELECT \gdesc
|
|
The command has no result, or the result has no columns.
|
|
CREATE TABLE bububu(a int) \gdesc
|
|
The command has no result, or the result has no columns.
|
|
-- subject command should not have executed
|
|
TABLE bububu; -- fail
|
|
ERROR: relation "bububu" does not exist
|
|
LINE 1: TABLE bububu;
|
|
^
|
|
-- query buffer should remain unchanged
|
|
SELECT 1 AS x, 'Hello', 2 AS y, true AS "dirty\name"
|
|
\gdesc
|
|
Column | Type
|
|
------------+---------
|
|
x | integer
|
|
?column? | text
|
|
y | integer
|
|
dirty\name | boolean
|
|
(4 rows)
|
|
|
|
\g
|
|
x | ?column? | y | dirty\name
|
|
---+----------+---+------------
|
|
1 | Hello | 2 | t
|
|
(1 row)
|
|
|
|
-- all on one line
|
|
SELECT 3 AS x, 'Hello', 4 AS y, true AS "dirty\name" \gdesc \g
|
|
Column | Type
|
|
------------+---------
|
|
x | integer
|
|
?column? | text
|
|
y | integer
|
|
dirty\name | boolean
|
|
(4 rows)
|
|
|
|
x | ?column? | y | dirty\name
|
|
---+----------+---+------------
|
|
3 | Hello | 4 | t
|
|
(1 row)
|
|
|
|
-- \gexec
|
|
create temporary table gexec_test(a int, b text, c date, d float);
|
|
select format('create index on gexec_test(%I)', attname)
|
|
from pg_attribute
|
|
where attrelid = 'gexec_test'::regclass and attnum > 0
|
|
order by attnum
|
|
\gexec
|
|
create index on gexec_test(a)
|
|
create index on gexec_test(b)
|
|
create index on gexec_test(c)
|
|
create index on gexec_test(d)
|
|
-- \gexec should work in FETCH_COUNT mode too
|
|
-- (though the fetch limit applies to the executed queries not the meta query)
|
|
\set FETCH_COUNT 1
|
|
select 'select 1 as ones', 'select x.y, x.y*2 as double from generate_series(1,4) as x(y)'
|
|
union all
|
|
select 'drop table gexec_test', NULL
|
|
union all
|
|
select 'drop table gexec_test', 'select ''2000-01-01''::date as party_over'
|
|
\gexec
|
|
select 1 as ones
|
|
ones
|
|
------
|
|
1
|
|
(1 row)
|
|
|
|
select x.y, x.y*2 as double from generate_series(1,4) as x(y)
|
|
y | double
|
|
---+--------
|
|
1 | 2
|
|
2 | 4
|
|
3 | 6
|
|
4 | 8
|
|
(4 rows)
|
|
|
|
drop table gexec_test
|
|
drop table gexec_test
|
|
ERROR: table "gexec_test" does not exist
|
|
select '2000-01-01'::date as party_over
|
|
party_over
|
|
------------
|
|
01-01-2000
|
|
(1 row)
|
|
|
|
\unset FETCH_COUNT
|
|
-- show all pset options
|
|
\pset
|
|
border 1
|
|
columns 0
|
|
csv_fieldsep ','
|
|
expanded off
|
|
fieldsep '|'
|
|
fieldsep_zero off
|
|
footer on
|
|
format aligned
|
|
linestyle ascii
|
|
null ''
|
|
numericlocale off
|
|
pager 1
|
|
pager_min_lines 0
|
|
recordsep '\n'
|
|
recordsep_zero off
|
|
tableattr
|
|
title
|
|
tuples_only off
|
|
unicode_border_linestyle single
|
|
unicode_column_linestyle single
|
|
unicode_header_linestyle single
|
|
-- test multi-line headers, wrapping, and newline indicators
|
|
-- in aligned, unaligned, and wrapped formats
|
|
prepare q as select array_to_string(array_agg(repeat('x',2*n)),E'\n') as "ab
|
|
|
|
c", array_to_string(array_agg(repeat('y',20-2*n)),E'\n') as "a
|
|
bc" from generate_series(1,10) as n(n) group by n>1 order by n>1;
|
|
\pset linestyle ascii
|
|
\pset expanded off
|
|
\pset columns 40
|
|
\pset border 0
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|a
|
|
bc
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
(2 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
ab + a +
|
|
+ bc
|
|
c
|
|
-------------------- ------------------
|
|
xx yyyyyyyyyyyyyyyyyy
|
|
xxxx +yyyyyyyyyyyyyyyy +
|
|
xxxxxx +yyyyyyyyyyyyyy +
|
|
xxxxxxxx +yyyyyyyyyyyy +
|
|
xxxxxxxxxx +yyyyyyyyyy +
|
|
xxxxxxxxxxxx +yyyyyyyy +
|
|
xxxxxxxxxxxxxx +yyyyyy +
|
|
xxxxxxxxxxxxxxxx +yyyy +
|
|
xxxxxxxxxxxxxxxxxx +yy +
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
(2 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
ab + a +
|
|
+ bc
|
|
c
|
|
-------------------- ------------------
|
|
xx yyyyyyyyyyyyyyyyyy
|
|
xxxx +yyyyyyyyyyyyyyyy +
|
|
xxxxxx +yyyyyyyyyyyyyy +
|
|
xxxxxxxx +yyyyyyyyyyyy +
|
|
xxxxxxxxxx +yyyyyyyyyy +
|
|
xxxxxxxxxxxx +yyyyyyyy +
|
|
xxxxxxxxxxxxxx +yyyyyy +
|
|
xxxxxxxxxxxxxxxx +yyyy +
|
|
xxxxxxxxxxxxxxxxxx +yy +
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
(2 rows)
|
|
|
|
\pset border 1
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|a
|
|
bc
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
(2 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
ab +| a +
|
|
+| bc
|
|
c |
|
|
----------------------+--------------------
|
|
xx | yyyyyyyyyyyyyyyyyy
|
|
xxxx +| yyyyyyyyyyyyyyyy +
|
|
xxxxxx +| yyyyyyyyyyyyyy +
|
|
xxxxxxxx +| yyyyyyyyyyyy +
|
|
xxxxxxxxxx +| yyyyyyyyyy +
|
|
xxxxxxxxxxxx +| yyyyyyyy +
|
|
xxxxxxxxxxxxxx +| yyyyyy +
|
|
xxxxxxxxxxxxxxxx +| yyyy +
|
|
xxxxxxxxxxxxxxxxxx +| yy +
|
|
xxxxxxxxxxxxxxxxxxxx |
|
|
(2 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
ab +| a +
|
|
+| bc
|
|
c |
|
|
-------------------+--------------------
|
|
xx | yyyyyyyyyyyyyyyyyy
|
|
xxxx +| yyyyyyyyyyyyyyyy +
|
|
xxxxxx +| yyyyyyyyyyyyyy +
|
|
xxxxxxxx +| yyyyyyyyyyyy +
|
|
xxxxxxxxxx +| yyyyyyyyyy +
|
|
xxxxxxxxxxxx +| yyyyyyyy +
|
|
xxxxxxxxxxxxxx +| yyyyyy +
|
|
xxxxxxxxxxxxxxxx +| yyyy +
|
|
xxxxxxxxxxxxxxxxx.| yy +
|
|
.x +|
|
|
xxxxxxxxxxxxxxxxx.|
|
|
.xxx |
|
|
(2 rows)
|
|
|
|
\pset border 2
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|a
|
|
bc
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
(2 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
+----------------------+--------------------+
|
|
| ab +| a +|
|
|
| +| bc |
|
|
| c | |
|
|
+----------------------+--------------------+
|
|
| xx | yyyyyyyyyyyyyyyyyy |
|
|
| xxxx +| yyyyyyyyyyyyyyyy +|
|
|
| xxxxxx +| yyyyyyyyyyyyyy +|
|
|
| xxxxxxxx +| yyyyyyyyyyyy +|
|
|
| xxxxxxxxxx +| yyyyyyyyyy +|
|
|
| xxxxxxxxxxxx +| yyyyyyyy +|
|
|
| xxxxxxxxxxxxxx +| yyyyyy +|
|
|
| xxxxxxxxxxxxxxxx +| yyyy +|
|
|
| xxxxxxxxxxxxxxxxxx +| yy +|
|
|
| xxxxxxxxxxxxxxxxxxxx | |
|
|
+----------------------+--------------------+
|
|
(2 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
+-----------------+--------------------+
|
|
| ab +| a +|
|
|
| +| bc |
|
|
| c | |
|
|
+-----------------+--------------------+
|
|
| xx | yyyyyyyyyyyyyyyyyy |
|
|
| xxxx +| yyyyyyyyyyyyyyyy +|
|
|
| xxxxxx +| yyyyyyyyyyyyyy +|
|
|
| xxxxxxxx +| yyyyyyyyyyyy +|
|
|
| xxxxxxxxxx +| yyyyyyyyyy +|
|
|
| xxxxxxxxxxxx +| yyyyyyyy +|
|
|
| xxxxxxxxxxxxxx +| yyyyyy +|
|
|
| xxxxxxxxxxxxxxx.| yyyy +|
|
|
|.x +| yy +|
|
|
| xxxxxxxxxxxxxxx.| |
|
|
|.xxx +| |
|
|
| xxxxxxxxxxxxxxx.| |
|
|
|.xxxxx | |
|
|
+-----------------+--------------------+
|
|
(2 rows)
|
|
|
|
\pset expanded on
|
|
\pset columns 20
|
|
\pset border 0
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|xx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyyyy
|
|
|
|
ab
|
|
|
|
c|xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
\pset format aligned
|
|
execute q;
|
|
* Record 1
|
|
ab+ xx
|
|
+
|
|
c
|
|
a + yyyyyyyyyyyyyyyyyy
|
|
bc
|
|
* Record 2
|
|
ab+ xxxx +
|
|
+ xxxxxx +
|
|
c xxxxxxxx +
|
|
xxxxxxxxxx +
|
|
xxxxxxxxxxxx +
|
|
xxxxxxxxxxxxxx +
|
|
xxxxxxxxxxxxxxxx +
|
|
xxxxxxxxxxxxxxxxxx +
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
a + yyyyyyyyyyyyyyyy +
|
|
bc yyyyyyyyyyyyyy +
|
|
yyyyyyyyyyyy +
|
|
yyyyyyyyyy +
|
|
yyyyyyyy +
|
|
yyyyyy +
|
|
yyyy +
|
|
yy +
|
|
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
* Record 1
|
|
ab+ xx
|
|
+
|
|
c
|
|
a + yyyyyyyyyyyyyyy.
|
|
bc .yyy
|
|
* Record 2
|
|
ab+ xxxx +
|
|
+ xxxxxx +
|
|
c xxxxxxxx +
|
|
xxxxxxxxxx +
|
|
xxxxxxxxxxxx +
|
|
xxxxxxxxxxxxxx +
|
|
xxxxxxxxxxxxxxx.
|
|
.x +
|
|
xxxxxxxxxxxxxxx.
|
|
.xxx +
|
|
xxxxxxxxxxxxxxx.
|
|
.xxxxx
|
|
a + yyyyyyyyyyyyyyy.
|
|
bc .y +
|
|
yyyyyyyyyyyyyy +
|
|
yyyyyyyyyyyy +
|
|
yyyyyyyyyy +
|
|
yyyyyyyy +
|
|
yyyyyy +
|
|
yyyy +
|
|
yy +
|
|
|
|
|
|
\pset border 1
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|xx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyyyy
|
|
|
|
ab
|
|
|
|
c|xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
\pset format aligned
|
|
execute q;
|
|
-[ RECORD 1 ]------------
|
|
ab+| xx
|
|
+|
|
|
c |
|
|
a +| yyyyyyyyyyyyyyyyyy
|
|
bc |
|
|
-[ RECORD 2 ]------------
|
|
ab+| xxxx +
|
|
+| xxxxxx +
|
|
c | xxxxxxxx +
|
|
| xxxxxxxxxx +
|
|
| xxxxxxxxxxxx +
|
|
| xxxxxxxxxxxxxx +
|
|
| xxxxxxxxxxxxxxxx +
|
|
| xxxxxxxxxxxxxxxxxx +
|
|
| xxxxxxxxxxxxxxxxxxxx
|
|
a +| yyyyyyyyyyyyyyyy +
|
|
bc | yyyyyyyyyyyyyy +
|
|
| yyyyyyyyyyyy +
|
|
| yyyyyyyyyy +
|
|
| yyyyyyyy +
|
|
| yyyyyy +
|
|
| yyyy +
|
|
| yy +
|
|
|
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
-[ RECORD 1 ]------
|
|
ab+| xx
|
|
+|
|
|
c |
|
|
a +| yyyyyyyyyyyyyy.
|
|
bc |.yyyy
|
|
-[ RECORD 2 ]------
|
|
ab+| xxxx +
|
|
+| xxxxxx +
|
|
c | xxxxxxxx +
|
|
| xxxxxxxxxx +
|
|
| xxxxxxxxxxxx +
|
|
| xxxxxxxxxxxxxx+
|
|
| xxxxxxxxxxxxxx.
|
|
|.xx +
|
|
| xxxxxxxxxxxxxx.
|
|
|.xxxx +
|
|
| xxxxxxxxxxxxxx.
|
|
|.xxxxxx
|
|
a +| yyyyyyyyyyyyyy.
|
|
bc |.yy +
|
|
| yyyyyyyyyyyyyy+
|
|
| yyyyyyyyyyyy +
|
|
| yyyyyyyyyy +
|
|
| yyyyyyyy +
|
|
| yyyyyy +
|
|
| yyyy +
|
|
| yy +
|
|
|
|
|
|
|
\pset border 2
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|xx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyyyy
|
|
|
|
ab
|
|
|
|
c|xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
\pset format aligned
|
|
execute q;
|
|
+-[ RECORD 1 ]--------------+
|
|
| ab+| xx |
|
|
| +| |
|
|
| c | |
|
|
| a +| yyyyyyyyyyyyyyyyyy |
|
|
| bc | |
|
|
+-[ RECORD 2 ]--------------+
|
|
| ab+| xxxx +|
|
|
| +| xxxxxx +|
|
|
| c | xxxxxxxx +|
|
|
| | xxxxxxxxxx +|
|
|
| | xxxxxxxxxxxx +|
|
|
| | xxxxxxxxxxxxxx +|
|
|
| | xxxxxxxxxxxxxxxx +|
|
|
| | xxxxxxxxxxxxxxxxxx +|
|
|
| | xxxxxxxxxxxxxxxxxxxx |
|
|
| a +| yyyyyyyyyyyyyyyy +|
|
|
| bc | yyyyyyyyyyyyyy +|
|
|
| | yyyyyyyyyyyy +|
|
|
| | yyyyyyyyyy +|
|
|
| | yyyyyyyy +|
|
|
| | yyyyyy +|
|
|
| | yyyy +|
|
|
| | yy +|
|
|
| | |
|
|
+----+----------------------+
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
+-[ RECORD 1 ]-----+
|
|
| ab+| xx |
|
|
| +| |
|
|
| c | |
|
|
| a +| yyyyyyyyyyy.|
|
|
| bc |.yyyyyyy |
|
|
+-[ RECORD 2 ]-----+
|
|
| ab+| xxxx +|
|
|
| +| xxxxxx +|
|
|
| c | xxxxxxxx +|
|
|
| | xxxxxxxxxx +|
|
|
| | xxxxxxxxxxx.|
|
|
| |.x +|
|
|
| | xxxxxxxxxxx.|
|
|
| |.xxx +|
|
|
| | xxxxxxxxxxx.|
|
|
| |.xxxxx +|
|
|
| | xxxxxxxxxxx.|
|
|
| |.xxxxxxx +|
|
|
| | xxxxxxxxxxx.|
|
|
| |.xxxxxxxxx |
|
|
| a +| yyyyyyyyyyy.|
|
|
| bc |.yyyyy +|
|
|
| | yyyyyyyyyyy.|
|
|
| |.yyy +|
|
|
| | yyyyyyyyyyy.|
|
|
| |.y +|
|
|
| | yyyyyyyyyy +|
|
|
| | yyyyyyyy +|
|
|
| | yyyyyy +|
|
|
| | yyyy +|
|
|
| | yy +|
|
|
| | |
|
|
+----+-------------+
|
|
|
|
\pset linestyle old-ascii
|
|
\pset expanded off
|
|
\pset columns 40
|
|
\pset border 0
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|a
|
|
bc
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
(2 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
ab a
|
|
+ bc
|
|
c +
|
|
-------------------- ------------------
|
|
xx yyyyyyyyyyyyyyyyyy
|
|
xxxx yyyyyyyyyyyyyyyy
|
|
xxxxxx yyyyyyyyyyyyyy
|
|
xxxxxxxx yyyyyyyyyyyy
|
|
xxxxxxxxxx yyyyyyyyyy
|
|
xxxxxxxxxxxx yyyyyyyy
|
|
xxxxxxxxxxxxxx yyyyyy
|
|
xxxxxxxxxxxxxxxx yyyy
|
|
xxxxxxxxxxxxxxxxxx yy
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
(2 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
ab a
|
|
+ bc
|
|
c +
|
|
-------------------- ------------------
|
|
xx yyyyyyyyyyyyyyyyyy
|
|
xxxx yyyyyyyyyyyyyyyy
|
|
xxxxxx yyyyyyyyyyyyyy
|
|
xxxxxxxx yyyyyyyyyyyy
|
|
xxxxxxxxxx yyyyyyyyyy
|
|
xxxxxxxxxxxx yyyyyyyy
|
|
xxxxxxxxxxxxxx yyyyyy
|
|
xxxxxxxxxxxxxxxx yyyy
|
|
xxxxxxxxxxxxxxxxxx yy
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
(2 rows)
|
|
|
|
\pset border 1
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|a
|
|
bc
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
(2 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
ab | a
|
|
+ |+ bc
|
|
+ c |+
|
|
----------------------+--------------------
|
|
xx | yyyyyyyyyyyyyyyyyy
|
|
xxxx | yyyyyyyyyyyyyyyy
|
|
xxxxxx : yyyyyyyyyyyyyy
|
|
xxxxxxxx : yyyyyyyyyyyy
|
|
xxxxxxxxxx : yyyyyyyyyy
|
|
xxxxxxxxxxxx : yyyyyyyy
|
|
xxxxxxxxxxxxxx : yyyyyy
|
|
xxxxxxxxxxxxxxxx : yyyy
|
|
xxxxxxxxxxxxxxxxxx : yy
|
|
xxxxxxxxxxxxxxxxxxxx :
|
|
(2 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
ab | a
|
|
+ |+ bc
|
|
+ c |+
|
|
-------------------+--------------------
|
|
xx | yyyyyyyyyyyyyyyyyy
|
|
xxxx | yyyyyyyyyyyyyyyy
|
|
xxxxxx : yyyyyyyyyyyyyy
|
|
xxxxxxxx : yyyyyyyyyyyy
|
|
xxxxxxxxxx : yyyyyyyyyy
|
|
xxxxxxxxxxxx : yyyyyyyy
|
|
xxxxxxxxxxxxxx : yyyyyy
|
|
xxxxxxxxxxxxxxxx : yyyy
|
|
xxxxxxxxxxxxxxxxx : yy
|
|
x :
|
|
xxxxxxxxxxxxxxxxx
|
|
xxx
|
|
(2 rows)
|
|
|
|
\pset border 2
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|a
|
|
bc
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
(2 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
+----------------------+--------------------+
|
|
| ab | a |
|
|
|+ |+ bc |
|
|
|+ c |+ |
|
|
+----------------------+--------------------+
|
|
| xx | yyyyyyyyyyyyyyyyyy |
|
|
| xxxx | yyyyyyyyyyyyyyyy |
|
|
| xxxxxx : yyyyyyyyyyyyyy |
|
|
| xxxxxxxx : yyyyyyyyyyyy |
|
|
| xxxxxxxxxx : yyyyyyyyyy |
|
|
| xxxxxxxxxxxx : yyyyyyyy |
|
|
| xxxxxxxxxxxxxx : yyyyyy |
|
|
| xxxxxxxxxxxxxxxx : yyyy |
|
|
| xxxxxxxxxxxxxxxxxx : yy |
|
|
| xxxxxxxxxxxxxxxxxxxx : |
|
|
+----------------------+--------------------+
|
|
(2 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
+-----------------+--------------------+
|
|
| ab | a |
|
|
|+ |+ bc |
|
|
|+ c |+ |
|
|
+-----------------+--------------------+
|
|
| xx | yyyyyyyyyyyyyyyyyy |
|
|
| xxxx | yyyyyyyyyyyyyyyy |
|
|
| xxxxxx : yyyyyyyyyyyyyy |
|
|
| xxxxxxxx : yyyyyyyyyyyy |
|
|
| xxxxxxxxxx : yyyyyyyyyy |
|
|
| xxxxxxxxxxxx : yyyyyyyy |
|
|
| xxxxxxxxxxxxxx : yyyyyy |
|
|
| xxxxxxxxxxxxxxx : yyyy |
|
|
| x : yy |
|
|
| xxxxxxxxxxxxxxx : |
|
|
| xxx |
|
|
| xxxxxxxxxxxxxxx |
|
|
| xxxxx |
|
|
+-----------------+--------------------+
|
|
(2 rows)
|
|
|
|
\pset expanded on
|
|
\pset columns 20
|
|
\pset border 0
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|xx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyyyy
|
|
|
|
ab
|
|
|
|
c|xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
\pset format aligned
|
|
execute q;
|
|
* Record 1
|
|
ab xx
|
|
+
|
|
+c
|
|
a yyyyyyyyyyyyyyyyyy
|
|
+bc
|
|
* Record 2
|
|
ab xxxx
|
|
+ xxxxxx
|
|
+c xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
a yyyyyyyyyyyyyyyy
|
|
+bc yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
* Record 1
|
|
ab xx
|
|
+
|
|
+c
|
|
a yyyyyyyyyyyyyyyy
|
|
+bc yy
|
|
* Record 2
|
|
ab xxxx
|
|
+ xxxxxx
|
|
+c xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxx
|
|
a yyyyyyyyyyyyyyyy
|
|
+bc yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
|
|
\pset border 1
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|xx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyyyy
|
|
|
|
ab
|
|
|
|
c|xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
\pset format aligned
|
|
execute q;
|
|
-[ RECORD 1 ]-------------
|
|
ab | xx
|
|
+ ;
|
|
+c ;
|
|
a | yyyyyyyyyyyyyyyyyy
|
|
+bc ;
|
|
-[ RECORD 2 ]-------------
|
|
ab | xxxx
|
|
+ : xxxxxx
|
|
+c : xxxxxxxx
|
|
: xxxxxxxxxx
|
|
: xxxxxxxxxxxx
|
|
: xxxxxxxxxxxxxx
|
|
: xxxxxxxxxxxxxxxx
|
|
: xxxxxxxxxxxxxxxxxx
|
|
: xxxxxxxxxxxxxxxxxxxx
|
|
a | yyyyyyyyyyyyyyyy
|
|
+bc : yyyyyyyyyyyyyy
|
|
: yyyyyyyyyyyy
|
|
: yyyyyyyyyy
|
|
: yyyyyyyy
|
|
: yyyyyy
|
|
: yyyy
|
|
: yy
|
|
:
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
-[ RECORD 1 ]-------
|
|
ab | xx
|
|
+ ;
|
|
+c ;
|
|
a | yyyyyyyyyyyyyy
|
|
+bc ; yyyy
|
|
-[ RECORD 2 ]-------
|
|
ab | xxxx
|
|
+ : xxxxxx
|
|
+c : xxxxxxxx
|
|
: xxxxxxxxxx
|
|
: xxxxxxxxxxxx
|
|
: xxxxxxxxxxxxxx
|
|
: xxxxxxxxxxxxxx
|
|
; xx
|
|
: xxxxxxxxxxxxxx
|
|
; xxxx
|
|
: xxxxxxxxxxxxxx
|
|
; xxxxxx
|
|
a | yyyyyyyyyyyyyy
|
|
+bc ; yy
|
|
: yyyyyyyyyyyyyy
|
|
: yyyyyyyyyyyy
|
|
: yyyyyyyyyy
|
|
: yyyyyyyy
|
|
: yyyyyy
|
|
: yyyy
|
|
: yy
|
|
:
|
|
|
|
\pset border 2
|
|
\pset format unaligned
|
|
execute q;
|
|
ab
|
|
|
|
c|xx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyyyy
|
|
|
|
ab
|
|
|
|
c|xxxx
|
|
xxxxxx
|
|
xxxxxxxx
|
|
xxxxxxxxxx
|
|
xxxxxxxxxxxx
|
|
xxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxx
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
a
|
|
bc|yyyyyyyyyyyyyyyy
|
|
yyyyyyyyyyyyyy
|
|
yyyyyyyyyyyy
|
|
yyyyyyyyyy
|
|
yyyyyyyy
|
|
yyyyyy
|
|
yyyy
|
|
yy
|
|
|
|
\pset format aligned
|
|
execute q;
|
|
+-[ RECORD 1 ]--------------+
|
|
| ab | xx |
|
|
|+ ; |
|
|
|+c ; |
|
|
| a | yyyyyyyyyyyyyyyyyy |
|
|
|+bc ; |
|
|
+-[ RECORD 2 ]--------------+
|
|
| ab | xxxx |
|
|
|+ : xxxxxx |
|
|
|+c : xxxxxxxx |
|
|
| : xxxxxxxxxx |
|
|
| : xxxxxxxxxxxx |
|
|
| : xxxxxxxxxxxxxx |
|
|
| : xxxxxxxxxxxxxxxx |
|
|
| : xxxxxxxxxxxxxxxxxx |
|
|
| : xxxxxxxxxxxxxxxxxxxx |
|
|
| a | yyyyyyyyyyyyyyyy |
|
|
|+bc : yyyyyyyyyyyyyy |
|
|
| : yyyyyyyyyyyy |
|
|
| : yyyyyyyyyy |
|
|
| : yyyyyyyy |
|
|
| : yyyyyy |
|
|
| : yyyy |
|
|
| : yy |
|
|
| : |
|
|
+----+----------------------+
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
+-[ RECORD 1 ]-----+
|
|
| ab | xx |
|
|
|+ ; |
|
|
|+c ; |
|
|
| a | yyyyyyyyyyy |
|
|
|+bc ; yyyyyyy |
|
|
+-[ RECORD 2 ]-----+
|
|
| ab | xxxx |
|
|
|+ : xxxxxx |
|
|
|+c : xxxxxxxx |
|
|
| : xxxxxxxxxx |
|
|
| : xxxxxxxxxxx |
|
|
| ; x |
|
|
| : xxxxxxxxxxx |
|
|
| ; xxx |
|
|
| : xxxxxxxxxxx |
|
|
| ; xxxxx |
|
|
| : xxxxxxxxxxx |
|
|
| ; xxxxxxx |
|
|
| : xxxxxxxxxxx |
|
|
| ; xxxxxxxxx |
|
|
| a | yyyyyyyyyyy |
|
|
|+bc ; yyyyy |
|
|
| : yyyyyyyyyyy |
|
|
| ; yyy |
|
|
| : yyyyyyyyyyy |
|
|
| ; y |
|
|
| : yyyyyyyyyy |
|
|
| : yyyyyyyy |
|
|
| : yyyyyy |
|
|
| : yyyy |
|
|
| : yy |
|
|
| : |
|
|
+----+-------------+
|
|
|
|
deallocate q;
|
|
-- test single-line header and data
|
|
prepare q as select repeat('x',2*n) as "0123456789abcdef", repeat('y',20-2*n) as "0123456789" from generate_series(1,10) as n;
|
|
\pset linestyle ascii
|
|
\pset expanded off
|
|
\pset columns 40
|
|
\pset border 0
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|0123456789
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx|yyyyyyyyyyyyyyyy
|
|
xxxxxx|yyyyyyyyyyyyyy
|
|
xxxxxxxx|yyyyyyyyyyyy
|
|
xxxxxxxxxx|yyyyyyyyyy
|
|
xxxxxxxxxxxx|yyyyyyyy
|
|
xxxxxxxxxxxxxx|yyyyyy
|
|
xxxxxxxxxxxxxxxx|yyyy
|
|
xxxxxxxxxxxxxxxxxx|yy
|
|
xxxxxxxxxxxxxxxxxxxx|
|
|
(10 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
0123456789abcdef 0123456789
|
|
-------------------- ------------------
|
|
xx yyyyyyyyyyyyyyyyyy
|
|
xxxx yyyyyyyyyyyyyyyy
|
|
xxxxxx yyyyyyyyyyyyyy
|
|
xxxxxxxx yyyyyyyyyyyy
|
|
xxxxxxxxxx yyyyyyyyyy
|
|
xxxxxxxxxxxx yyyyyyyy
|
|
xxxxxxxxxxxxxx yyyyyy
|
|
xxxxxxxxxxxxxxxx yyyy
|
|
xxxxxxxxxxxxxxxxxx yy
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
(10 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
0123456789abcdef 0123456789
|
|
-------------------- ------------------
|
|
xx yyyyyyyyyyyyyyyyyy
|
|
xxxx yyyyyyyyyyyyyyyy
|
|
xxxxxx yyyyyyyyyyyyyy
|
|
xxxxxxxx yyyyyyyyyyyy
|
|
xxxxxxxxxx yyyyyyyyyy
|
|
xxxxxxxxxxxx yyyyyyyy
|
|
xxxxxxxxxxxxxx yyyyyy
|
|
xxxxxxxxxxxxxxxx yyyy
|
|
xxxxxxxxxxxxxxxxxx yy
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
(10 rows)
|
|
|
|
\pset border 1
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|0123456789
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx|yyyyyyyyyyyyyyyy
|
|
xxxxxx|yyyyyyyyyyyyyy
|
|
xxxxxxxx|yyyyyyyyyyyy
|
|
xxxxxxxxxx|yyyyyyyyyy
|
|
xxxxxxxxxxxx|yyyyyyyy
|
|
xxxxxxxxxxxxxx|yyyyyy
|
|
xxxxxxxxxxxxxxxx|yyyy
|
|
xxxxxxxxxxxxxxxxxx|yy
|
|
xxxxxxxxxxxxxxxxxxxx|
|
|
(10 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
0123456789abcdef | 0123456789
|
|
----------------------+--------------------
|
|
xx | yyyyyyyyyyyyyyyyyy
|
|
xxxx | yyyyyyyyyyyyyyyy
|
|
xxxxxx | yyyyyyyyyyyyyy
|
|
xxxxxxxx | yyyyyyyyyyyy
|
|
xxxxxxxxxx | yyyyyyyyyy
|
|
xxxxxxxxxxxx | yyyyyyyy
|
|
xxxxxxxxxxxxxx | yyyyyy
|
|
xxxxxxxxxxxxxxxx | yyyy
|
|
xxxxxxxxxxxxxxxxxx | yy
|
|
xxxxxxxxxxxxxxxxxxxx |
|
|
(10 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
0123456789abcdef | 0123456789
|
|
---------------------+------------------
|
|
xx | yyyyyyyyyyyyyyyy.
|
|
|.yy
|
|
xxxx | yyyyyyyyyyyyyyyy
|
|
xxxxxx | yyyyyyyyyyyyyy
|
|
xxxxxxxx | yyyyyyyyyyyy
|
|
xxxxxxxxxx | yyyyyyyyyy
|
|
xxxxxxxxxxxx | yyyyyyyy
|
|
xxxxxxxxxxxxxx | yyyyyy
|
|
xxxxxxxxxxxxxxxx | yyyy
|
|
xxxxxxxxxxxxxxxxxx | yy
|
|
xxxxxxxxxxxxxxxxxxx.|
|
|
.x |
|
|
(10 rows)
|
|
|
|
\pset border 2
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|0123456789
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx|yyyyyyyyyyyyyyyy
|
|
xxxxxx|yyyyyyyyyyyyyy
|
|
xxxxxxxx|yyyyyyyyyyyy
|
|
xxxxxxxxxx|yyyyyyyyyy
|
|
xxxxxxxxxxxx|yyyyyyyy
|
|
xxxxxxxxxxxxxx|yyyyyy
|
|
xxxxxxxxxxxxxxxx|yyyy
|
|
xxxxxxxxxxxxxxxxxx|yy
|
|
xxxxxxxxxxxxxxxxxxxx|
|
|
(10 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
+----------------------+--------------------+
|
|
| 0123456789abcdef | 0123456789 |
|
|
+----------------------+--------------------+
|
|
| xx | yyyyyyyyyyyyyyyyyy |
|
|
| xxxx | yyyyyyyyyyyyyyyy |
|
|
| xxxxxx | yyyyyyyyyyyyyy |
|
|
| xxxxxxxx | yyyyyyyyyyyy |
|
|
| xxxxxxxxxx | yyyyyyyyyy |
|
|
| xxxxxxxxxxxx | yyyyyyyy |
|
|
| xxxxxxxxxxxxxx | yyyyyy |
|
|
| xxxxxxxxxxxxxxxx | yyyy |
|
|
| xxxxxxxxxxxxxxxxxx | yy |
|
|
| xxxxxxxxxxxxxxxxxxxx | |
|
|
+----------------------+--------------------+
|
|
(10 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
+--------------------+-----------------+
|
|
| 0123456789abcdef | 0123456789 |
|
|
+--------------------+-----------------+
|
|
| xx | yyyyyyyyyyyyyyy.|
|
|
| |.yyy |
|
|
| xxxx | yyyyyyyyyyyyyyy.|
|
|
| |.y |
|
|
| xxxxxx | yyyyyyyyyyyyyy |
|
|
| xxxxxxxx | yyyyyyyyyyyy |
|
|
| xxxxxxxxxx | yyyyyyyyyy |
|
|
| xxxxxxxxxxxx | yyyyyyyy |
|
|
| xxxxxxxxxxxxxx | yyyyyy |
|
|
| xxxxxxxxxxxxxxxx | yyyy |
|
|
| xxxxxxxxxxxxxxxxxx | yy |
|
|
| xxxxxxxxxxxxxxxxxx.| |
|
|
|.xx | |
|
|
+--------------------+-----------------+
|
|
(10 rows)
|
|
|
|
\pset expanded on
|
|
\pset columns 30
|
|
\pset border 0
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|xx
|
|
0123456789|yyyyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxx
|
|
0123456789|yyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxx
|
|
0123456789|yyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxx
|
|
0123456789|yyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxx
|
|
0123456789|yyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxx
|
|
0123456789|yyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxx
|
|
0123456789|yyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxx
|
|
0123456789|yyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxx
|
|
0123456789|yy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxxxx
|
|
0123456789|
|
|
\pset format aligned
|
|
execute q;
|
|
* Record 1
|
|
0123456789abcdef xx
|
|
0123456789 yyyyyyyyyyyyyyyyyy
|
|
* Record 2
|
|
0123456789abcdef xxxx
|
|
0123456789 yyyyyyyyyyyyyyyy
|
|
* Record 3
|
|
0123456789abcdef xxxxxx
|
|
0123456789 yyyyyyyyyyyyyy
|
|
* Record 4
|
|
0123456789abcdef xxxxxxxx
|
|
0123456789 yyyyyyyyyyyy
|
|
* Record 5
|
|
0123456789abcdef xxxxxxxxxx
|
|
0123456789 yyyyyyyyyy
|
|
* Record 6
|
|
0123456789abcdef xxxxxxxxxxxx
|
|
0123456789 yyyyyyyy
|
|
* Record 7
|
|
0123456789abcdef xxxxxxxxxxxxxx
|
|
0123456789 yyyyyy
|
|
* Record 8
|
|
0123456789abcdef xxxxxxxxxxxxxxxx
|
|
0123456789 yyyy
|
|
* Record 9
|
|
0123456789abcdef xxxxxxxxxxxxxxxxxx
|
|
0123456789 yy
|
|
* Record 10
|
|
0123456789abcdef xxxxxxxxxxxxxxxxxxxx
|
|
0123456789
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
* Record 1
|
|
0123456789abcdef xx
|
|
0123456789 yyyyyyyyyyyy.
|
|
.yyyyyy
|
|
* Record 2
|
|
0123456789abcdef xxxx
|
|
0123456789 yyyyyyyyyyyy.
|
|
.yyyy
|
|
* Record 3
|
|
0123456789abcdef xxxxxx
|
|
0123456789 yyyyyyyyyyyy.
|
|
.yy
|
|
* Record 4
|
|
0123456789abcdef xxxxxxxx
|
|
0123456789 yyyyyyyyyyyy
|
|
* Record 5
|
|
0123456789abcdef xxxxxxxxxx
|
|
0123456789 yyyyyyyyyy
|
|
* Record 6
|
|
0123456789abcdef xxxxxxxxxxxx
|
|
0123456789 yyyyyyyy
|
|
* Record 7
|
|
0123456789abcdef xxxxxxxxxxxx.
|
|
.xx
|
|
0123456789 yyyyyy
|
|
* Record 8
|
|
0123456789abcdef xxxxxxxxxxxx.
|
|
.xxxx
|
|
0123456789 yyyy
|
|
* Record 9
|
|
0123456789abcdef xxxxxxxxxxxx.
|
|
.xxxxxx
|
|
0123456789 yy
|
|
* Record 10
|
|
0123456789abcdef xxxxxxxxxxxx.
|
|
.xxxxxxxx
|
|
0123456789
|
|
|
|
\pset border 1
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|xx
|
|
0123456789|yyyyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxx
|
|
0123456789|yyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxx
|
|
0123456789|yyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxx
|
|
0123456789|yyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxx
|
|
0123456789|yyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxx
|
|
0123456789|yyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxx
|
|
0123456789|yyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxx
|
|
0123456789|yyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxx
|
|
0123456789|yy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxxxx
|
|
0123456789|
|
|
\pset format aligned
|
|
execute q;
|
|
-[ RECORD 1 ]----+---------------------
|
|
0123456789abcdef | xx
|
|
0123456789 | yyyyyyyyyyyyyyyyyy
|
|
-[ RECORD 2 ]----+---------------------
|
|
0123456789abcdef | xxxx
|
|
0123456789 | yyyyyyyyyyyyyyyy
|
|
-[ RECORD 3 ]----+---------------------
|
|
0123456789abcdef | xxxxxx
|
|
0123456789 | yyyyyyyyyyyyyy
|
|
-[ RECORD 4 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxx
|
|
0123456789 | yyyyyyyyyyyy
|
|
-[ RECORD 5 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxx
|
|
0123456789 | yyyyyyyyyy
|
|
-[ RECORD 6 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxx
|
|
0123456789 | yyyyyyyy
|
|
-[ RECORD 7 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxx
|
|
0123456789 | yyyyyy
|
|
-[ RECORD 8 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxx
|
|
0123456789 | yyyy
|
|
-[ RECORD 9 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxxxx
|
|
0123456789 | yy
|
|
-[ RECORD 10 ]---+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxxxxxx
|
|
0123456789 |
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
-[ RECORD 1 ]----+-----------
|
|
0123456789abcdef | xx
|
|
0123456789 | yyyyyyyyyy.
|
|
|.yyyyyyyy
|
|
-[ RECORD 2 ]----+-----------
|
|
0123456789abcdef | xxxx
|
|
0123456789 | yyyyyyyyyy.
|
|
|.yyyyyy
|
|
-[ RECORD 3 ]----+-----------
|
|
0123456789abcdef | xxxxxx
|
|
0123456789 | yyyyyyyyyy.
|
|
|.yyyy
|
|
-[ RECORD 4 ]----+-----------
|
|
0123456789abcdef | xxxxxxxx
|
|
0123456789 | yyyyyyyyyy.
|
|
|.yy
|
|
-[ RECORD 5 ]----+-----------
|
|
0123456789abcdef | xxxxxxxxxx
|
|
0123456789 | yyyyyyyyyy
|
|
-[ RECORD 6 ]----+-----------
|
|
0123456789abcdef | xxxxxxxxxx.
|
|
|.xx
|
|
0123456789 | yyyyyyyy
|
|
-[ RECORD 7 ]----+-----------
|
|
0123456789abcdef | xxxxxxxxxx.
|
|
|.xxxx
|
|
0123456789 | yyyyyy
|
|
-[ RECORD 8 ]----+-----------
|
|
0123456789abcdef | xxxxxxxxxx.
|
|
|.xxxxxx
|
|
0123456789 | yyyy
|
|
-[ RECORD 9 ]----+-----------
|
|
0123456789abcdef | xxxxxxxxxx.
|
|
|.xxxxxxxx
|
|
0123456789 | yy
|
|
-[ RECORD 10 ]---+-----------
|
|
0123456789abcdef | xxxxxxxxxx.
|
|
|.xxxxxxxxxx
|
|
0123456789 |
|
|
|
|
\pset border 2
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|xx
|
|
0123456789|yyyyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxx
|
|
0123456789|yyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxx
|
|
0123456789|yyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxx
|
|
0123456789|yyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxx
|
|
0123456789|yyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxx
|
|
0123456789|yyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxx
|
|
0123456789|yyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxx
|
|
0123456789|yyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxx
|
|
0123456789|yy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxxxx
|
|
0123456789|
|
|
\pset format aligned
|
|
execute q;
|
|
+-[ RECORD 1 ]-----+----------------------+
|
|
| 0123456789abcdef | xx |
|
|
| 0123456789 | yyyyyyyyyyyyyyyyyy |
|
|
+-[ RECORD 2 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxx |
|
|
| 0123456789 | yyyyyyyyyyyyyyyy |
|
|
+-[ RECORD 3 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxx |
|
|
| 0123456789 | yyyyyyyyyyyyyy |
|
|
+-[ RECORD 4 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxx |
|
|
| 0123456789 | yyyyyyyyyyyy |
|
|
+-[ RECORD 5 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxx |
|
|
| 0123456789 | yyyyyyyyyy |
|
|
+-[ RECORD 6 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxx |
|
|
| 0123456789 | yyyyyyyy |
|
|
+-[ RECORD 7 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxx |
|
|
| 0123456789 | yyyyyy |
|
|
+-[ RECORD 8 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxx |
|
|
| 0123456789 | yyyy |
|
|
+-[ RECORD 9 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxxxx |
|
|
| 0123456789 | yy |
|
|
+-[ RECORD 10 ]----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxxxxxx |
|
|
| 0123456789 | |
|
|
+------------------+----------------------+
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
+-[ RECORD 1 ]-----+---------+
|
|
| 0123456789abcdef | xx |
|
|
| 0123456789 | yyyyyyy.|
|
|
| |.yyyyyyy.|
|
|
| |.yyyy |
|
|
+-[ RECORD 2 ]-----+---------+
|
|
| 0123456789abcdef | xxxx |
|
|
| 0123456789 | yyyyyyy.|
|
|
| |.yyyyyyy.|
|
|
| |.yy |
|
|
+-[ RECORD 3 ]-----+---------+
|
|
| 0123456789abcdef | xxxxxx |
|
|
| 0123456789 | yyyyyyy.|
|
|
| |.yyyyyyy |
|
|
+-[ RECORD 4 ]-----+---------+
|
|
| 0123456789abcdef | xxxxxxx.|
|
|
| |.x |
|
|
| 0123456789 | yyyyyyy.|
|
|
| |.yyyyy |
|
|
+-[ RECORD 5 ]-----+---------+
|
|
| 0123456789abcdef | xxxxxxx.|
|
|
| |.xxx |
|
|
| 0123456789 | yyyyyyy.|
|
|
| |.yyy |
|
|
+-[ RECORD 6 ]-----+---------+
|
|
| 0123456789abcdef | xxxxxxx.|
|
|
| |.xxxxx |
|
|
| 0123456789 | yyyyyyy.|
|
|
| |.y |
|
|
+-[ RECORD 7 ]-----+---------+
|
|
| 0123456789abcdef | xxxxxxx.|
|
|
| |.xxxxxxx |
|
|
| 0123456789 | yyyyyy |
|
|
+-[ RECORD 8 ]-----+---------+
|
|
| 0123456789abcdef | xxxxxxx.|
|
|
| |.xxxxxxx.|
|
|
| |.xx |
|
|
| 0123456789 | yyyy |
|
|
+-[ RECORD 9 ]-----+---------+
|
|
| 0123456789abcdef | xxxxxxx.|
|
|
| |.xxxxxxx.|
|
|
| |.xxxx |
|
|
| 0123456789 | yy |
|
|
+-[ RECORD 10 ]----+---------+
|
|
| 0123456789abcdef | xxxxxxx.|
|
|
| |.xxxxxxx.|
|
|
| |.xxxxxx |
|
|
| 0123456789 | |
|
|
+------------------+---------+
|
|
|
|
\pset expanded on
|
|
\pset columns 20
|
|
\pset border 0
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|xx
|
|
0123456789|yyyyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxx
|
|
0123456789|yyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxx
|
|
0123456789|yyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxx
|
|
0123456789|yyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxx
|
|
0123456789|yyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxx
|
|
0123456789|yyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxx
|
|
0123456789|yyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxx
|
|
0123456789|yyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxx
|
|
0123456789|yy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxxxx
|
|
0123456789|
|
|
\pset format aligned
|
|
execute q;
|
|
* Record 1
|
|
0123456789abcdef xx
|
|
0123456789 yyyyyyyyyyyyyyyyyy
|
|
* Record 2
|
|
0123456789abcdef xxxx
|
|
0123456789 yyyyyyyyyyyyyyyy
|
|
* Record 3
|
|
0123456789abcdef xxxxxx
|
|
0123456789 yyyyyyyyyyyyyy
|
|
* Record 4
|
|
0123456789abcdef xxxxxxxx
|
|
0123456789 yyyyyyyyyyyy
|
|
* Record 5
|
|
0123456789abcdef xxxxxxxxxx
|
|
0123456789 yyyyyyyyyy
|
|
* Record 6
|
|
0123456789abcdef xxxxxxxxxxxx
|
|
0123456789 yyyyyyyy
|
|
* Record 7
|
|
0123456789abcdef xxxxxxxxxxxxxx
|
|
0123456789 yyyyyy
|
|
* Record 8
|
|
0123456789abcdef xxxxxxxxxxxxxxxx
|
|
0123456789 yyyy
|
|
* Record 9
|
|
0123456789abcdef xxxxxxxxxxxxxxxxxx
|
|
0123456789 yy
|
|
* Record 10
|
|
0123456789abcdef xxxxxxxxxxxxxxxxxxxx
|
|
0123456789
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
* Record 1
|
|
0123456789abcdef xx
|
|
0123456789 yyy.
|
|
.yyy.
|
|
.yyy.
|
|
.yyy.
|
|
.yyy.
|
|
.yyy
|
|
* Record 2
|
|
0123456789abcdef xxx.
|
|
.x
|
|
0123456789 yyy.
|
|
.yyy.
|
|
.yyy.
|
|
.yyy.
|
|
.yyy.
|
|
.y
|
|
* Record 3
|
|
0123456789abcdef xxx.
|
|
.xxx
|
|
0123456789 yyy.
|
|
.yyy.
|
|
.yyy.
|
|
.yyy.
|
|
.yy
|
|
* Record 4
|
|
0123456789abcdef xxx.
|
|
.xxx.
|
|
.xx
|
|
0123456789 yyy.
|
|
.yyy.
|
|
.yyy.
|
|
.yyy
|
|
* Record 5
|
|
0123456789abcdef xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.x
|
|
0123456789 yyy.
|
|
.yyy.
|
|
.yyy.
|
|
.y
|
|
* Record 6
|
|
0123456789abcdef xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xxx
|
|
0123456789 yyy.
|
|
.yyy.
|
|
.yy
|
|
* Record 7
|
|
0123456789abcdef xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xx
|
|
0123456789 yyy.
|
|
.yyy
|
|
* Record 8
|
|
0123456789abcdef xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.x
|
|
0123456789 yyy.
|
|
.y
|
|
* Record 9
|
|
0123456789abcdef xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xxx
|
|
0123456789 yy
|
|
* Record 10
|
|
0123456789abcdef xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xxx.
|
|
.xx
|
|
0123456789
|
|
|
|
\pset border 1
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|xx
|
|
0123456789|yyyyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxx
|
|
0123456789|yyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxx
|
|
0123456789|yyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxx
|
|
0123456789|yyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxx
|
|
0123456789|yyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxx
|
|
0123456789|yyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxx
|
|
0123456789|yyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxx
|
|
0123456789|yyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxx
|
|
0123456789|yy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxxxx
|
|
0123456789|
|
|
\pset format aligned
|
|
execute q;
|
|
-[ RECORD 1 ]----+---------------------
|
|
0123456789abcdef | xx
|
|
0123456789 | yyyyyyyyyyyyyyyyyy
|
|
-[ RECORD 2 ]----+---------------------
|
|
0123456789abcdef | xxxx
|
|
0123456789 | yyyyyyyyyyyyyyyy
|
|
-[ RECORD 3 ]----+---------------------
|
|
0123456789abcdef | xxxxxx
|
|
0123456789 | yyyyyyyyyyyyyy
|
|
-[ RECORD 4 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxx
|
|
0123456789 | yyyyyyyyyyyy
|
|
-[ RECORD 5 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxx
|
|
0123456789 | yyyyyyyyyy
|
|
-[ RECORD 6 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxx
|
|
0123456789 | yyyyyyyy
|
|
-[ RECORD 7 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxx
|
|
0123456789 | yyyyyy
|
|
-[ RECORD 8 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxx
|
|
0123456789 | yyyy
|
|
-[ RECORD 9 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxxxx
|
|
0123456789 | yy
|
|
-[ RECORD 10 ]---+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxxxxxx
|
|
0123456789 |
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
-[ RECORD 1 ]----+----
|
|
0123456789abcdef | xx
|
|
0123456789 | yyy.
|
|
|.yyy.
|
|
|.yyy.
|
|
|.yyy.
|
|
|.yyy.
|
|
|.yyy
|
|
-[ RECORD 2 ]----+----
|
|
0123456789abcdef | xxx.
|
|
|.x
|
|
0123456789 | yyy.
|
|
|.yyy.
|
|
|.yyy.
|
|
|.yyy.
|
|
|.yyy.
|
|
|.y
|
|
-[ RECORD 3 ]----+----
|
|
0123456789abcdef | xxx.
|
|
|.xxx
|
|
0123456789 | yyy.
|
|
|.yyy.
|
|
|.yyy.
|
|
|.yyy.
|
|
|.yy
|
|
-[ RECORD 4 ]----+----
|
|
0123456789abcdef | xxx.
|
|
|.xxx.
|
|
|.xx
|
|
0123456789 | yyy.
|
|
|.yyy.
|
|
|.yyy.
|
|
|.yyy
|
|
-[ RECORD 5 ]----+----
|
|
0123456789abcdef | xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.x
|
|
0123456789 | yyy.
|
|
|.yyy.
|
|
|.yyy.
|
|
|.y
|
|
-[ RECORD 6 ]----+----
|
|
0123456789abcdef | xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xxx
|
|
0123456789 | yyy.
|
|
|.yyy.
|
|
|.yy
|
|
-[ RECORD 7 ]----+----
|
|
0123456789abcdef | xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xx
|
|
0123456789 | yyy.
|
|
|.yyy
|
|
-[ RECORD 8 ]----+----
|
|
0123456789abcdef | xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.x
|
|
0123456789 | yyy.
|
|
|.y
|
|
-[ RECORD 9 ]----+----
|
|
0123456789abcdef | xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xxx
|
|
0123456789 | yy
|
|
-[ RECORD 10 ]---+----
|
|
0123456789abcdef | xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xxx.
|
|
|.xx
|
|
0123456789 |
|
|
|
|
\pset border 2
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|xx
|
|
0123456789|yyyyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxx
|
|
0123456789|yyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxx
|
|
0123456789|yyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxx
|
|
0123456789|yyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxx
|
|
0123456789|yyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxx
|
|
0123456789|yyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxx
|
|
0123456789|yyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxx
|
|
0123456789|yyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxx
|
|
0123456789|yy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxxxx
|
|
0123456789|
|
|
\pset format aligned
|
|
execute q;
|
|
+-[ RECORD 1 ]-----+----------------------+
|
|
| 0123456789abcdef | xx |
|
|
| 0123456789 | yyyyyyyyyyyyyyyyyy |
|
|
+-[ RECORD 2 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxx |
|
|
| 0123456789 | yyyyyyyyyyyyyyyy |
|
|
+-[ RECORD 3 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxx |
|
|
| 0123456789 | yyyyyyyyyyyyyy |
|
|
+-[ RECORD 4 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxx |
|
|
| 0123456789 | yyyyyyyyyyyy |
|
|
+-[ RECORD 5 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxx |
|
|
| 0123456789 | yyyyyyyyyy |
|
|
+-[ RECORD 6 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxx |
|
|
| 0123456789 | yyyyyyyy |
|
|
+-[ RECORD 7 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxx |
|
|
| 0123456789 | yyyyyy |
|
|
+-[ RECORD 8 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxx |
|
|
| 0123456789 | yyyy |
|
|
+-[ RECORD 9 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxxxx |
|
|
| 0123456789 | yy |
|
|
+-[ RECORD 10 ]----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxxxxxx |
|
|
| 0123456789 | |
|
|
+------------------+----------------------+
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
+-[ RECORD 1 ]-----+-----+
|
|
| 0123456789abcdef | xx |
|
|
| 0123456789 | yyy.|
|
|
| |.yyy.|
|
|
| |.yyy.|
|
|
| |.yyy.|
|
|
| |.yyy.|
|
|
| |.yyy |
|
|
+-[ RECORD 2 ]-----+-----+
|
|
| 0123456789abcdef | xxx.|
|
|
| |.x |
|
|
| 0123456789 | yyy.|
|
|
| |.yyy.|
|
|
| |.yyy.|
|
|
| |.yyy.|
|
|
| |.yyy.|
|
|
| |.y |
|
|
+-[ RECORD 3 ]-----+-----+
|
|
| 0123456789abcdef | xxx.|
|
|
| |.xxx |
|
|
| 0123456789 | yyy.|
|
|
| |.yyy.|
|
|
| |.yyy.|
|
|
| |.yyy.|
|
|
| |.yy |
|
|
+-[ RECORD 4 ]-----+-----+
|
|
| 0123456789abcdef | xxx.|
|
|
| |.xxx.|
|
|
| |.xx |
|
|
| 0123456789 | yyy.|
|
|
| |.yyy.|
|
|
| |.yyy.|
|
|
| |.yyy |
|
|
+-[ RECORD 5 ]-----+-----+
|
|
| 0123456789abcdef | xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.x |
|
|
| 0123456789 | yyy.|
|
|
| |.yyy.|
|
|
| |.yyy.|
|
|
| |.y |
|
|
+-[ RECORD 6 ]-----+-----+
|
|
| 0123456789abcdef | xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xxx |
|
|
| 0123456789 | yyy.|
|
|
| |.yyy.|
|
|
| |.yy |
|
|
+-[ RECORD 7 ]-----+-----+
|
|
| 0123456789abcdef | xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xx |
|
|
| 0123456789 | yyy.|
|
|
| |.yyy |
|
|
+-[ RECORD 8 ]-----+-----+
|
|
| 0123456789abcdef | xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.x |
|
|
| 0123456789 | yyy.|
|
|
| |.y |
|
|
+-[ RECORD 9 ]-----+-----+
|
|
| 0123456789abcdef | xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xxx |
|
|
| 0123456789 | yy |
|
|
+-[ RECORD 10 ]----+-----+
|
|
| 0123456789abcdef | xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xxx.|
|
|
| |.xx |
|
|
| 0123456789 | |
|
|
+------------------+-----+
|
|
|
|
\pset linestyle old-ascii
|
|
\pset expanded off
|
|
\pset columns 40
|
|
\pset border 0
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|0123456789
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx|yyyyyyyyyyyyyyyy
|
|
xxxxxx|yyyyyyyyyyyyyy
|
|
xxxxxxxx|yyyyyyyyyyyy
|
|
xxxxxxxxxx|yyyyyyyyyy
|
|
xxxxxxxxxxxx|yyyyyyyy
|
|
xxxxxxxxxxxxxx|yyyyyy
|
|
xxxxxxxxxxxxxxxx|yyyy
|
|
xxxxxxxxxxxxxxxxxx|yy
|
|
xxxxxxxxxxxxxxxxxxxx|
|
|
(10 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
0123456789abcdef 0123456789
|
|
-------------------- ------------------
|
|
xx yyyyyyyyyyyyyyyyyy
|
|
xxxx yyyyyyyyyyyyyyyy
|
|
xxxxxx yyyyyyyyyyyyyy
|
|
xxxxxxxx yyyyyyyyyyyy
|
|
xxxxxxxxxx yyyyyyyyyy
|
|
xxxxxxxxxxxx yyyyyyyy
|
|
xxxxxxxxxxxxxx yyyyyy
|
|
xxxxxxxxxxxxxxxx yyyy
|
|
xxxxxxxxxxxxxxxxxx yy
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
(10 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
0123456789abcdef 0123456789
|
|
-------------------- ------------------
|
|
xx yyyyyyyyyyyyyyyyyy
|
|
xxxx yyyyyyyyyyyyyyyy
|
|
xxxxxx yyyyyyyyyyyyyy
|
|
xxxxxxxx yyyyyyyyyyyy
|
|
xxxxxxxxxx yyyyyyyyyy
|
|
xxxxxxxxxxxx yyyyyyyy
|
|
xxxxxxxxxxxxxx yyyyyy
|
|
xxxxxxxxxxxxxxxx yyyy
|
|
xxxxxxxxxxxxxxxxxx yy
|
|
xxxxxxxxxxxxxxxxxxxx
|
|
(10 rows)
|
|
|
|
\pset border 1
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|0123456789
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx|yyyyyyyyyyyyyyyy
|
|
xxxxxx|yyyyyyyyyyyyyy
|
|
xxxxxxxx|yyyyyyyyyyyy
|
|
xxxxxxxxxx|yyyyyyyyyy
|
|
xxxxxxxxxxxx|yyyyyyyy
|
|
xxxxxxxxxxxxxx|yyyyyy
|
|
xxxxxxxxxxxxxxxx|yyyy
|
|
xxxxxxxxxxxxxxxxxx|yy
|
|
xxxxxxxxxxxxxxxxxxxx|
|
|
(10 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
0123456789abcdef | 0123456789
|
|
----------------------+--------------------
|
|
xx | yyyyyyyyyyyyyyyyyy
|
|
xxxx | yyyyyyyyyyyyyyyy
|
|
xxxxxx | yyyyyyyyyyyyyy
|
|
xxxxxxxx | yyyyyyyyyyyy
|
|
xxxxxxxxxx | yyyyyyyyyy
|
|
xxxxxxxxxxxx | yyyyyyyy
|
|
xxxxxxxxxxxxxx | yyyyyy
|
|
xxxxxxxxxxxxxxxx | yyyy
|
|
xxxxxxxxxxxxxxxxxx | yy
|
|
xxxxxxxxxxxxxxxxxxxx |
|
|
(10 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
0123456789abcdef | 0123456789
|
|
---------------------+------------------
|
|
xx | yyyyyyyyyyyyyyyy
|
|
; yy
|
|
xxxx | yyyyyyyyyyyyyyyy
|
|
xxxxxx | yyyyyyyyyyyyyy
|
|
xxxxxxxx | yyyyyyyyyyyy
|
|
xxxxxxxxxx | yyyyyyyyyy
|
|
xxxxxxxxxxxx | yyyyyyyy
|
|
xxxxxxxxxxxxxx | yyyyyy
|
|
xxxxxxxxxxxxxxxx | yyyy
|
|
xxxxxxxxxxxxxxxxxx | yy
|
|
xxxxxxxxxxxxxxxxxxx |
|
|
x
|
|
(10 rows)
|
|
|
|
\pset border 2
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|0123456789
|
|
xx|yyyyyyyyyyyyyyyyyy
|
|
xxxx|yyyyyyyyyyyyyyyy
|
|
xxxxxx|yyyyyyyyyyyyyy
|
|
xxxxxxxx|yyyyyyyyyyyy
|
|
xxxxxxxxxx|yyyyyyyyyy
|
|
xxxxxxxxxxxx|yyyyyyyy
|
|
xxxxxxxxxxxxxx|yyyyyy
|
|
xxxxxxxxxxxxxxxx|yyyy
|
|
xxxxxxxxxxxxxxxxxx|yy
|
|
xxxxxxxxxxxxxxxxxxxx|
|
|
(10 rows)
|
|
\pset format aligned
|
|
execute q;
|
|
+----------------------+--------------------+
|
|
| 0123456789abcdef | 0123456789 |
|
|
+----------------------+--------------------+
|
|
| xx | yyyyyyyyyyyyyyyyyy |
|
|
| xxxx | yyyyyyyyyyyyyyyy |
|
|
| xxxxxx | yyyyyyyyyyyyyy |
|
|
| xxxxxxxx | yyyyyyyyyyyy |
|
|
| xxxxxxxxxx | yyyyyyyyyy |
|
|
| xxxxxxxxxxxx | yyyyyyyy |
|
|
| xxxxxxxxxxxxxx | yyyyyy |
|
|
| xxxxxxxxxxxxxxxx | yyyy |
|
|
| xxxxxxxxxxxxxxxxxx | yy |
|
|
| xxxxxxxxxxxxxxxxxxxx | |
|
|
+----------------------+--------------------+
|
|
(10 rows)
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
+--------------------+-----------------+
|
|
| 0123456789abcdef | 0123456789 |
|
|
+--------------------+-----------------+
|
|
| xx | yyyyyyyyyyyyyyy |
|
|
| ; yyy |
|
|
| xxxx | yyyyyyyyyyyyyyy |
|
|
| ; y |
|
|
| xxxxxx | yyyyyyyyyyyyyy |
|
|
| xxxxxxxx | yyyyyyyyyyyy |
|
|
| xxxxxxxxxx | yyyyyyyyyy |
|
|
| xxxxxxxxxxxx | yyyyyyyy |
|
|
| xxxxxxxxxxxxxx | yyyyyy |
|
|
| xxxxxxxxxxxxxxxx | yyyy |
|
|
| xxxxxxxxxxxxxxxxxx | yy |
|
|
| xxxxxxxxxxxxxxxxxx | |
|
|
| xx |
|
|
+--------------------+-----------------+
|
|
(10 rows)
|
|
|
|
\pset expanded on
|
|
\pset border 0
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|xx
|
|
0123456789|yyyyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxx
|
|
0123456789|yyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxx
|
|
0123456789|yyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxx
|
|
0123456789|yyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxx
|
|
0123456789|yyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxx
|
|
0123456789|yyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxx
|
|
0123456789|yyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxx
|
|
0123456789|yyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxx
|
|
0123456789|yy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxxxx
|
|
0123456789|
|
|
\pset format aligned
|
|
execute q;
|
|
* Record 1
|
|
0123456789abcdef xx
|
|
0123456789 yyyyyyyyyyyyyyyyyy
|
|
* Record 2
|
|
0123456789abcdef xxxx
|
|
0123456789 yyyyyyyyyyyyyyyy
|
|
* Record 3
|
|
0123456789abcdef xxxxxx
|
|
0123456789 yyyyyyyyyyyyyy
|
|
* Record 4
|
|
0123456789abcdef xxxxxxxx
|
|
0123456789 yyyyyyyyyyyy
|
|
* Record 5
|
|
0123456789abcdef xxxxxxxxxx
|
|
0123456789 yyyyyyyyyy
|
|
* Record 6
|
|
0123456789abcdef xxxxxxxxxxxx
|
|
0123456789 yyyyyyyy
|
|
* Record 7
|
|
0123456789abcdef xxxxxxxxxxxxxx
|
|
0123456789 yyyyyy
|
|
* Record 8
|
|
0123456789abcdef xxxxxxxxxxxxxxxx
|
|
0123456789 yyyy
|
|
* Record 9
|
|
0123456789abcdef xxxxxxxxxxxxxxxxxx
|
|
0123456789 yy
|
|
* Record 10
|
|
0123456789abcdef xxxxxxxxxxxxxxxxxxxx
|
|
0123456789
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
* Record 1
|
|
0123456789abcdef xx
|
|
0123456789 yyyyyyyyyyyyyyyyyy
|
|
* Record 2
|
|
0123456789abcdef xxxx
|
|
0123456789 yyyyyyyyyyyyyyyy
|
|
* Record 3
|
|
0123456789abcdef xxxxxx
|
|
0123456789 yyyyyyyyyyyyyy
|
|
* Record 4
|
|
0123456789abcdef xxxxxxxx
|
|
0123456789 yyyyyyyyyyyy
|
|
* Record 5
|
|
0123456789abcdef xxxxxxxxxx
|
|
0123456789 yyyyyyyyyy
|
|
* Record 6
|
|
0123456789abcdef xxxxxxxxxxxx
|
|
0123456789 yyyyyyyy
|
|
* Record 7
|
|
0123456789abcdef xxxxxxxxxxxxxx
|
|
0123456789 yyyyyy
|
|
* Record 8
|
|
0123456789abcdef xxxxxxxxxxxxxxxx
|
|
0123456789 yyyy
|
|
* Record 9
|
|
0123456789abcdef xxxxxxxxxxxxxxxxxx
|
|
0123456789 yy
|
|
* Record 10
|
|
0123456789abcdef xxxxxxxxxxxxxxxxxxxx
|
|
0123456789
|
|
|
|
\pset border 1
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|xx
|
|
0123456789|yyyyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxx
|
|
0123456789|yyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxx
|
|
0123456789|yyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxx
|
|
0123456789|yyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxx
|
|
0123456789|yyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxx
|
|
0123456789|yyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxx
|
|
0123456789|yyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxx
|
|
0123456789|yyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxx
|
|
0123456789|yy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxxxx
|
|
0123456789|
|
|
\pset format aligned
|
|
execute q;
|
|
-[ RECORD 1 ]----+---------------------
|
|
0123456789abcdef | xx
|
|
0123456789 | yyyyyyyyyyyyyyyyyy
|
|
-[ RECORD 2 ]----+---------------------
|
|
0123456789abcdef | xxxx
|
|
0123456789 | yyyyyyyyyyyyyyyy
|
|
-[ RECORD 3 ]----+---------------------
|
|
0123456789abcdef | xxxxxx
|
|
0123456789 | yyyyyyyyyyyyyy
|
|
-[ RECORD 4 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxx
|
|
0123456789 | yyyyyyyyyyyy
|
|
-[ RECORD 5 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxx
|
|
0123456789 | yyyyyyyyyy
|
|
-[ RECORD 6 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxx
|
|
0123456789 | yyyyyyyy
|
|
-[ RECORD 7 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxx
|
|
0123456789 | yyyyyy
|
|
-[ RECORD 8 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxx
|
|
0123456789 | yyyy
|
|
-[ RECORD 9 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxxxx
|
|
0123456789 | yy
|
|
-[ RECORD 10 ]---+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxxxxxx
|
|
0123456789 |
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
-[ RECORD 1 ]----+---------------------
|
|
0123456789abcdef | xx
|
|
0123456789 | yyyyyyyyyyyyyyyyyy
|
|
-[ RECORD 2 ]----+---------------------
|
|
0123456789abcdef | xxxx
|
|
0123456789 | yyyyyyyyyyyyyyyy
|
|
-[ RECORD 3 ]----+---------------------
|
|
0123456789abcdef | xxxxxx
|
|
0123456789 | yyyyyyyyyyyyyy
|
|
-[ RECORD 4 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxx
|
|
0123456789 | yyyyyyyyyyyy
|
|
-[ RECORD 5 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxx
|
|
0123456789 | yyyyyyyyyy
|
|
-[ RECORD 6 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxx
|
|
0123456789 | yyyyyyyy
|
|
-[ RECORD 7 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxx
|
|
0123456789 | yyyyyy
|
|
-[ RECORD 8 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxx
|
|
0123456789 | yyyy
|
|
-[ RECORD 9 ]----+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxxxx
|
|
0123456789 | yy
|
|
-[ RECORD 10 ]---+---------------------
|
|
0123456789abcdef | xxxxxxxxxxxxxxxxxxxx
|
|
0123456789 |
|
|
|
|
\pset border 2
|
|
\pset format unaligned
|
|
execute q;
|
|
0123456789abcdef|xx
|
|
0123456789|yyyyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxx
|
|
0123456789|yyyyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxx
|
|
0123456789|yyyyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxx
|
|
0123456789|yyyyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxx
|
|
0123456789|yyyyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxx
|
|
0123456789|yyyyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxx
|
|
0123456789|yyyyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxx
|
|
0123456789|yyyy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxx
|
|
0123456789|yy
|
|
|
|
0123456789abcdef|xxxxxxxxxxxxxxxxxxxx
|
|
0123456789|
|
|
\pset format aligned
|
|
execute q;
|
|
+-[ RECORD 1 ]-----+----------------------+
|
|
| 0123456789abcdef | xx |
|
|
| 0123456789 | yyyyyyyyyyyyyyyyyy |
|
|
+-[ RECORD 2 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxx |
|
|
| 0123456789 | yyyyyyyyyyyyyyyy |
|
|
+-[ RECORD 3 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxx |
|
|
| 0123456789 | yyyyyyyyyyyyyy |
|
|
+-[ RECORD 4 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxx |
|
|
| 0123456789 | yyyyyyyyyyyy |
|
|
+-[ RECORD 5 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxx |
|
|
| 0123456789 | yyyyyyyyyy |
|
|
+-[ RECORD 6 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxx |
|
|
| 0123456789 | yyyyyyyy |
|
|
+-[ RECORD 7 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxx |
|
|
| 0123456789 | yyyyyy |
|
|
+-[ RECORD 8 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxx |
|
|
| 0123456789 | yyyy |
|
|
+-[ RECORD 9 ]-----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxxxx |
|
|
| 0123456789 | yy |
|
|
+-[ RECORD 10 ]----+----------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxxxxxx |
|
|
| 0123456789 | |
|
|
+------------------+----------------------+
|
|
|
|
\pset format wrapped
|
|
execute q;
|
|
+-[ RECORD 1 ]-----+-------------------+
|
|
| 0123456789abcdef | xx |
|
|
| 0123456789 | yyyyyyyyyyyyyyyyy |
|
|
| ; y |
|
|
+-[ RECORD 2 ]-----+-------------------+
|
|
| 0123456789abcdef | xxxx |
|
|
| 0123456789 | yyyyyyyyyyyyyyyy |
|
|
+-[ RECORD 3 ]-----+-------------------+
|
|
| 0123456789abcdef | xxxxxx |
|
|
| 0123456789 | yyyyyyyyyyyyyy |
|
|
+-[ RECORD 4 ]-----+-------------------+
|
|
| 0123456789abcdef | xxxxxxxx |
|
|
| 0123456789 | yyyyyyyyyyyy |
|
|
+-[ RECORD 5 ]-----+-------------------+
|
|
| 0123456789abcdef | xxxxxxxxxx |
|
|
| 0123456789 | yyyyyyyyyy |
|
|
+-[ RECORD 6 ]-----+-------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxx |
|
|
| 0123456789 | yyyyyyyy |
|
|
+-[ RECORD 7 ]-----+-------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxx |
|
|
| 0123456789 | yyyyyy |
|
|
+-[ RECORD 8 ]-----+-------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxx |
|
|
| 0123456789 | yyyy |
|
|
+-[ RECORD 9 ]-----+-------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxxx |
|
|
| ; x |
|
|
| 0123456789 | yy |
|
|
+-[ RECORD 10 ]----+-------------------+
|
|
| 0123456789abcdef | xxxxxxxxxxxxxxxxx |
|
|
| ; xxx |
|
|
| 0123456789 | |
|
|
+------------------+-------------------+
|
|
|
|
deallocate q;
|
|
\pset linestyle ascii
|
|
\pset border 1
|
|
-- support table for output-format tests (useful to create a footer)
|
|
create table psql_serial_tab (id serial);
|
|
-- test header/footer/tuples_only behavior in aligned/unaligned/wrapped cases
|
|
\pset format aligned
|
|
\pset expanded off
|
|
\d psql_serial_tab_id_seq
|
|
Sequence "public.psql_serial_tab_id_seq"
|
|
Type | Start | Minimum | Maximum | Increment | Cycles? | Cache
|
|
---------+-------+---------+------------+-----------+---------+-------
|
|
integer | 1 | 1 | 2147483647 | 1 | no | 1
|
|
Owned by: public.psql_serial_tab.id
|
|
|
|
\pset tuples_only true
|
|
\df exp
|
|
pg_catalog | exp | double precision | double precision | func
|
|
pg_catalog | exp | numeric | numeric | func
|
|
|
|
\pset tuples_only false
|
|
\pset expanded on
|
|
\d psql_serial_tab_id_seq
|
|
Sequence "public.psql_serial_tab_id_seq"
|
|
-[ RECORD 1 ]---------
|
|
Type | integer
|
|
Start | 1
|
|
Minimum | 1
|
|
Maximum | 2147483647
|
|
Increment | 1
|
|
Cycles? | no
|
|
Cache | 1
|
|
|
|
Owned by: public.psql_serial_tab.id
|
|
|
|
\pset tuples_only true
|
|
\df exp
|
|
Schema | pg_catalog
|
|
Name | exp
|
|
Result data type | double precision
|
|
Argument data types | double precision
|
|
Type | func
|
|
--------------------+-----------------
|
|
Schema | pg_catalog
|
|
Name | exp
|
|
Result data type | numeric
|
|
Argument data types | numeric
|
|
Type | func
|
|
|
|
\pset tuples_only false
|
|
-- empty table is a special case for this format
|
|
select 1 where false;
|
|
(0 rows)
|
|
|
|
\pset format unaligned
|
|
\pset expanded off
|
|
\d psql_serial_tab_id_seq
|
|
Sequence "public.psql_serial_tab_id_seq"
|
|
Type|Start|Minimum|Maximum|Increment|Cycles?|Cache
|
|
integer|1|1|2147483647|1|no|1
|
|
Owned by: public.psql_serial_tab.id
|
|
\pset tuples_only true
|
|
\df exp
|
|
pg_catalog|exp|double precision|double precision|func
|
|
pg_catalog|exp|numeric|numeric|func
|
|
\pset tuples_only false
|
|
\pset expanded on
|
|
\d psql_serial_tab_id_seq
|
|
Sequence "public.psql_serial_tab_id_seq"
|
|
|
|
Type|integer
|
|
Start|1
|
|
Minimum|1
|
|
Maximum|2147483647
|
|
Increment|1
|
|
Cycles?|no
|
|
Cache|1
|
|
|
|
Owned by: public.psql_serial_tab.id
|
|
\pset tuples_only true
|
|
\df exp
|
|
Schema|pg_catalog
|
|
Name|exp
|
|
Result data type|double precision
|
|
Argument data types|double precision
|
|
Type|func
|
|
|
|
Schema|pg_catalog
|
|
Name|exp
|
|
Result data type|numeric
|
|
Argument data types|numeric
|
|
Type|func
|
|
\pset tuples_only false
|
|
\pset format wrapped
|
|
\pset expanded off
|
|
\d psql_serial_tab_id_seq
|
|
Sequence "public.psql_serial_tab_id_seq"
|
|
Type | Start | Minimum | Maximum | Increment | Cycles? | Cache
|
|
---------+-------+---------+------------+-----------+---------+-------
|
|
integer | 1 | 1 | 2147483647 | 1 | no | 1
|
|
Owned by: public.psql_serial_tab.id
|
|
|
|
\pset tuples_only true
|
|
\df exp
|
|
pg_catalog | exp | double precision | double precision | func
|
|
pg_catalog | exp | numeric | numeric | func
|
|
|
|
\pset tuples_only false
|
|
\pset expanded on
|
|
\d psql_serial_tab_id_seq
|
|
Sequence "public.psql_serial_tab_id_seq"
|
|
-[ RECORD 1 ]---------
|
|
Type | integer
|
|
Start | 1
|
|
Minimum | 1
|
|
Maximum | 2147483647
|
|
Increment | 1
|
|
Cycles? | no
|
|
Cache | 1
|
|
|
|
Owned by: public.psql_serial_tab.id
|
|
|
|
\pset tuples_only true
|
|
\df exp
|
|
Schema | pg_catalog
|
|
Name | exp
|
|
Result data type | double precision
|
|
Argument data types | double precision
|
|
Type | func
|
|
--------------------+-----------------
|
|
Schema | pg_catalog
|
|
Name | exp
|
|
Result data type | numeric
|
|
Argument data types | numeric
|
|
Type | func
|
|
|
|
\pset tuples_only false
|
|
-- check conditional tableam display
|
|
-- Create a heap2 table am handler with heapam handler
|
|
CREATE ACCESS METHOD heap_psql TYPE TABLE HANDLER heap_tableam_handler;
|
|
CREATE TABLE tbl_heap_psql(f1 int, f2 char(100)) using heap_psql;
|
|
CREATE TABLE tbl_heap(f1 int, f2 char(100)) using heap;
|
|
\d+ tbl_heap_psql
|
|
Table "public.tbl_heap_psql"
|
|
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
|
|
--------+----------------+-----------+----------+---------+----------+--------------+-------------
|
|
f1 | integer | | | | plain | |
|
|
f2 | character(100) | | | | extended | |
|
|
|
|
\d+ tbl_heap
|
|
Table "public.tbl_heap"
|
|
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
|
|
--------+----------------+-----------+----------+---------+----------+--------------+-------------
|
|
f1 | integer | | | | plain | |
|
|
f2 | character(100) | | | | extended | |
|
|
|
|
\set HIDE_TABLEAM off
|
|
\d+ tbl_heap_psql
|
|
Table "public.tbl_heap_psql"
|
|
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
|
|
--------+----------------+-----------+----------+---------+----------+--------------+-------------
|
|
f1 | integer | | | | plain | |
|
|
f2 | character(100) | | | | extended | |
|
|
Access method: heap_psql
|
|
|
|
\d+ tbl_heap
|
|
Table "public.tbl_heap"
|
|
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
|
|
--------+----------------+-----------+----------+---------+----------+--------------+-------------
|
|
f1 | integer | | | | plain | |
|
|
f2 | character(100) | | | | extended | |
|
|
Access method: heap
|
|
|
|
\set HIDE_TABLEAM on
|
|
DROP TABLE tbl_heap, tbl_heap_psql;
|
|
DROP ACCESS METHOD heap_psql;
|
|
-- test numericlocale (as best we can without control of psql's locale)
|
|
\pset format aligned
|
|
\pset expanded off
|
|
\pset numericlocale true
|
|
select n, -n as m, n * 111 as x, '1e90'::float8 as f
|
|
from generate_series(0,3) n;
|
|
n | m | x | f
|
|
---+----+-----+-------
|
|
0 | 0 | 0 | 1e+90
|
|
1 | -1 | 111 | 1e+90
|
|
2 | -2 | 222 | 1e+90
|
|
3 | -3 | 333 | 1e+90
|
|
(4 rows)
|
|
|
|
\pset numericlocale false
|
|
-- test asciidoc output format
|
|
\pset format asciidoc
|
|
\pset border 1
|
|
\pset expanded off
|
|
\d psql_serial_tab_id_seq
|
|
|
|
.Sequence "public.psql_serial_tab_id_seq"
|
|
[options="header",cols="<l,>l,>l,>l,>l,<l,>l",frame="none"]
|
|
|====
|
|
^l|Type ^l|Start ^l|Minimum ^l|Maximum ^l|Increment ^l|Cycles? ^l|Cache
|
|
|integer |1 |1 |2147483647 |1 |no |1
|
|
|====
|
|
|
|
....
|
|
Owned by: public.psql_serial_tab.id
|
|
....
|
|
\pset tuples_only true
|
|
\df exp
|
|
|
|
[cols="<l,<l,<l,<l,<l",frame="none"]
|
|
|====
|
|
|pg_catalog |exp |double precision |double precision |func
|
|
|pg_catalog |exp |numeric |numeric |func
|
|
|====
|
|
\pset tuples_only false
|
|
\pset expanded on
|
|
\d psql_serial_tab_id_seq
|
|
|
|
.Sequence "public.psql_serial_tab_id_seq"
|
|
[cols="h,l",frame="none"]
|
|
|====
|
|
2+^|Record 1
|
|
<l|Type <l|integer
|
|
<l|Start >l|1
|
|
<l|Minimum >l|1
|
|
<l|Maximum >l|2147483647
|
|
<l|Increment >l|1
|
|
<l|Cycles? <l|no
|
|
<l|Cache >l|1
|
|
|====
|
|
|
|
....
|
|
Owned by: public.psql_serial_tab.id
|
|
....
|
|
\pset tuples_only true
|
|
\df exp
|
|
|
|
[cols="h,l",frame="none"]
|
|
|====
|
|
2+|
|
|
<l|Schema <l|pg_catalog
|
|
<l|Name <l|exp
|
|
<l|Result data type <l|double precision
|
|
<l|Argument data types <l|double precision
|
|
<l|Type <l|func
|
|
2+|
|
|
<l|Schema <l|pg_catalog
|
|
<l|Name <l|exp
|
|
<l|Result data type <l|numeric
|
|
<l|Argument data types <l|numeric
|
|
<l|Type <l|func
|
|
|====
|
|
\pset tuples_only false
|
|
prepare q as
|
|
select 'some|text' as "a|title", ' ' as "empty ", n as int
|
|
from generate_series(1,2) as n;
|
|
\pset expanded off
|
|
\pset border 0
|
|
execute q;
|
|
|
|
[options="header",cols="<l,<l,>l",frame="none",grid="none"]
|
|
|====
|
|
^l|a\|title ^l|empty ^l|int
|
|
|some\|text | |1
|
|
|some\|text | |2
|
|
|====
|
|
|
|
....
|
|
(2 rows)
|
|
....
|
|
\pset border 1
|
|
execute q;
|
|
|
|
[options="header",cols="<l,<l,>l",frame="none"]
|
|
|====
|
|
^l|a\|title ^l|empty ^l|int
|
|
|some\|text | |1
|
|
|some\|text | |2
|
|
|====
|
|
|
|
....
|
|
(2 rows)
|
|
....
|
|
\pset border 2
|
|
execute q;
|
|
|
|
[options="header",cols="<l,<l,>l",frame="all",grid="all"]
|
|
|====
|
|
^l|a\|title ^l|empty ^l|int
|
|
|some\|text | |1
|
|
|some\|text | |2
|
|
|====
|
|
|
|
....
|
|
(2 rows)
|
|
....
|
|
\pset expanded on
|
|
\pset border 0
|
|
execute q;
|
|
|
|
[cols="h,l",frame="none",grid="none"]
|
|
|====
|
|
2+^|Record 1
|
|
<l|a\|title <l|some\|text
|
|
<l|empty <l|
|
|
<l|int >l|1
|
|
2+^|Record 2
|
|
<l|a\|title <l|some\|text
|
|
<l|empty <l|
|
|
<l|int >l|2
|
|
|====
|
|
\pset border 1
|
|
execute q;
|
|
|
|
[cols="h,l",frame="none"]
|
|
|====
|
|
2+^|Record 1
|
|
<l|a\|title <l|some\|text
|
|
<l|empty <l|
|
|
<l|int >l|1
|
|
2+^|Record 2
|
|
<l|a\|title <l|some\|text
|
|
<l|empty <l|
|
|
<l|int >l|2
|
|
|====
|
|
\pset border 2
|
|
execute q;
|
|
|
|
[cols="h,l",frame="all",grid="all"]
|
|
|====
|
|
2+^|Record 1
|
|
<l|a\|title <l|some\|text
|
|
<l|empty <l|
|
|
<l|int >l|1
|
|
2+^|Record 2
|
|
<l|a\|title <l|some\|text
|
|
<l|empty <l|
|
|
<l|int >l|2
|
|
|====
|
|
deallocate q;
|
|
-- test csv output format
|
|
\pset format csv
|
|
\pset border 1
|
|
\pset expanded off
|
|
\d psql_serial_tab_id_seq
|
|
Type,Start,Minimum,Maximum,Increment,Cycles?,Cache
|
|
integer,1,1,2147483647,1,no,1
|
|
\pset tuples_only true
|
|
\df exp
|
|
pg_catalog,exp,double precision,double precision,func
|
|
pg_catalog,exp,numeric,numeric,func
|
|
\pset tuples_only false
|
|
\pset expanded on
|
|
\d psql_serial_tab_id_seq
|
|
Type,integer
|
|
Start,1
|
|
Minimum,1
|
|
Maximum,2147483647
|
|
Increment,1
|
|
Cycles?,no
|
|
Cache,1
|
|
\pset tuples_only true
|
|
\df exp
|
|
Schema,pg_catalog
|
|
Name,exp
|
|
Result data type,double precision
|
|
Argument data types,double precision
|
|
Type,func
|
|
Schema,pg_catalog
|
|
Name,exp
|
|
Result data type,numeric
|
|
Argument data types,numeric
|
|
Type,func
|
|
\pset tuples_only false
|
|
prepare q as
|
|
select 'some"text' as "a""title", E' <foo>\n<bar>' as "junk",
|
|
' ' as "empty", n as int
|
|
from generate_series(1,2) as n;
|
|
\pset expanded off
|
|
execute q;
|
|
"a""title",junk,empty,int
|
|
"some""text"," <foo>
|
|
<bar>", ,1
|
|
"some""text"," <foo>
|
|
<bar>", ,2
|
|
\pset expanded on
|
|
execute q;
|
|
"a""title","some""text"
|
|
junk," <foo>
|
|
<bar>"
|
|
empty,
|
|
int,1
|
|
"a""title","some""text"
|
|
junk," <foo>
|
|
<bar>"
|
|
empty,
|
|
int,2
|
|
deallocate q;
|
|
-- special cases
|
|
\pset expanded off
|
|
select 'comma,comma' as comma, 'semi;semi' as semi;
|
|
comma,semi
|
|
"comma,comma",semi;semi
|
|
\pset csv_fieldsep ';'
|
|
select 'comma,comma' as comma, 'semi;semi' as semi;
|
|
comma;semi
|
|
comma,comma;"semi;semi"
|
|
select '\.' as data;
|
|
data
|
|
"\."
|
|
\pset csv_fieldsep '.'
|
|
select '\' as d1, '' as d2;
|
|
"d1"."d2"
|
|
"\".""
|
|
-- illegal csv separators
|
|
\pset csv_fieldsep ''
|
|
\pset: csv_fieldsep must be a single one-byte character
|
|
\pset csv_fieldsep '\0'
|
|
\pset: csv_fieldsep must be a single one-byte character
|
|
\pset csv_fieldsep '\n'
|
|
\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return
|
|
\pset csv_fieldsep '\r'
|
|
\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return
|
|
\pset csv_fieldsep '"'
|
|
\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return
|
|
\pset csv_fieldsep ',,'
|
|
\pset: csv_fieldsep must be a single one-byte character
|
|
\pset csv_fieldsep ','
|
|
-- test html output format
|
|
\pset format html
|
|
\pset border 1
|
|
\pset expanded off
|
|
\d psql_serial_tab_id_seq
|
|
<table border="1">
|
|
<caption>Sequence "public.psql_serial_tab_id_seq"</caption>
|
|
<tr>
|
|
<th align="center">Type</th>
|
|
<th align="center">Start</th>
|
|
<th align="center">Minimum</th>
|
|
<th align="center">Maximum</th>
|
|
<th align="center">Increment</th>
|
|
<th align="center">Cycles?</th>
|
|
<th align="center">Cache</th>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td align="left">integer</td>
|
|
<td align="right">1</td>
|
|
<td align="right">1</td>
|
|
<td align="right">2147483647</td>
|
|
<td align="right">1</td>
|
|
<td align="left">no</td>
|
|
<td align="right">1</td>
|
|
</tr>
|
|
</table>
|
|
<p>Owned by: public.psql_serial_tab.id<br />
|
|
</p>
|
|
\pset tuples_only true
|
|
\df exp
|
|
<table border="1">
|
|
<tr valign="top">
|
|
<td align="left">pg_catalog</td>
|
|
<td align="left">exp</td>
|
|
<td align="left">double precision</td>
|
|
<td align="left">double precision</td>
|
|
<td align="left">func</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td align="left">pg_catalog</td>
|
|
<td align="left">exp</td>
|
|
<td align="left">numeric</td>
|
|
<td align="left">numeric</td>
|
|
<td align="left">func</td>
|
|
</tr>
|
|
</table>
|
|
|
|
\pset tuples_only false
|
|
\pset expanded on
|
|
\d psql_serial_tab_id_seq
|
|
<table border="1">
|
|
<caption>Sequence "public.psql_serial_tab_id_seq"</caption>
|
|
|
|
<tr><td colspan="2" align="center">Record 1</td></tr>
|
|
<tr valign="top">
|
|
<th>Type</th>
|
|
<td align="left">integer</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Start</th>
|
|
<td align="right">1</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Minimum</th>
|
|
<td align="right">1</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Maximum</th>
|
|
<td align="right">2147483647</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Increment</th>
|
|
<td align="right">1</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Cycles?</th>
|
|
<td align="left">no</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Cache</th>
|
|
<td align="right">1</td>
|
|
</tr>
|
|
</table>
|
|
<p>Owned by: public.psql_serial_tab.id<br />
|
|
</p>
|
|
\pset tuples_only true
|
|
\df exp
|
|
<table border="1">
|
|
|
|
<tr><td colspan="2"> </td></tr>
|
|
<tr valign="top">
|
|
<th>Schema</th>
|
|
<td align="left">pg_catalog</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Name</th>
|
|
<td align="left">exp</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Result data type</th>
|
|
<td align="left">double precision</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Argument data types</th>
|
|
<td align="left">double precision</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Type</th>
|
|
<td align="left">func</td>
|
|
</tr>
|
|
|
|
<tr><td colspan="2"> </td></tr>
|
|
<tr valign="top">
|
|
<th>Schema</th>
|
|
<td align="left">pg_catalog</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Name</th>
|
|
<td align="left">exp</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Result data type</th>
|
|
<td align="left">numeric</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Argument data types</th>
|
|
<td align="left">numeric</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>Type</th>
|
|
<td align="left">func</td>
|
|
</tr>
|
|
</table>
|
|
|
|
\pset tuples_only false
|
|
prepare q as
|
|
select 'some"text' as "a&title", E' <foo>\n<bar>' as "junk",
|
|
' ' as "empty", n as int
|
|
from generate_series(1,2) as n;
|
|
\pset expanded off
|
|
\pset border 0
|
|
execute q;
|
|
<table border="0">
|
|
<tr>
|
|
<th align="center">a&title</th>
|
|
<th align="center">junk</th>
|
|
<th align="center">empty</th>
|
|
<th align="center">int</th>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td align="left">some"text</td>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
<td align="left"> </td>
|
|
<td align="right">1</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td align="left">some"text</td>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
<td align="left"> </td>
|
|
<td align="right">2</td>
|
|
</tr>
|
|
</table>
|
|
<p>(2 rows)<br />
|
|
</p>
|
|
\pset border 1
|
|
execute q;
|
|
<table border="1">
|
|
<tr>
|
|
<th align="center">a&title</th>
|
|
<th align="center">junk</th>
|
|
<th align="center">empty</th>
|
|
<th align="center">int</th>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td align="left">some"text</td>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
<td align="left"> </td>
|
|
<td align="right">1</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td align="left">some"text</td>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
<td align="left"> </td>
|
|
<td align="right">2</td>
|
|
</tr>
|
|
</table>
|
|
<p>(2 rows)<br />
|
|
</p>
|
|
\pset tableattr foobar
|
|
execute q;
|
|
<table border="1" foobar>
|
|
<tr>
|
|
<th align="center">a&title</th>
|
|
<th align="center">junk</th>
|
|
<th align="center">empty</th>
|
|
<th align="center">int</th>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td align="left">some"text</td>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
<td align="left"> </td>
|
|
<td align="right">1</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<td align="left">some"text</td>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
<td align="left"> </td>
|
|
<td align="right">2</td>
|
|
</tr>
|
|
</table>
|
|
<p>(2 rows)<br />
|
|
</p>
|
|
\pset tableattr
|
|
\pset expanded on
|
|
\pset border 0
|
|
execute q;
|
|
<table border="0">
|
|
|
|
<tr><td colspan="2" align="center">Record 1</td></tr>
|
|
<tr valign="top">
|
|
<th>a&title</th>
|
|
<td align="left">some"text</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>junk</th>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>empty</th>
|
|
<td align="left"> </td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>int</th>
|
|
<td align="right">1</td>
|
|
</tr>
|
|
|
|
<tr><td colspan="2" align="center">Record 2</td></tr>
|
|
<tr valign="top">
|
|
<th>a&title</th>
|
|
<td align="left">some"text</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>junk</th>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>empty</th>
|
|
<td align="left"> </td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>int</th>
|
|
<td align="right">2</td>
|
|
</tr>
|
|
</table>
|
|
|
|
\pset border 1
|
|
execute q;
|
|
<table border="1">
|
|
|
|
<tr><td colspan="2" align="center">Record 1</td></tr>
|
|
<tr valign="top">
|
|
<th>a&title</th>
|
|
<td align="left">some"text</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>junk</th>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>empty</th>
|
|
<td align="left"> </td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>int</th>
|
|
<td align="right">1</td>
|
|
</tr>
|
|
|
|
<tr><td colspan="2" align="center">Record 2</td></tr>
|
|
<tr valign="top">
|
|
<th>a&title</th>
|
|
<td align="left">some"text</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>junk</th>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>empty</th>
|
|
<td align="left"> </td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>int</th>
|
|
<td align="right">2</td>
|
|
</tr>
|
|
</table>
|
|
|
|
\pset tableattr foobar
|
|
execute q;
|
|
<table border="1" foobar>
|
|
|
|
<tr><td colspan="2" align="center">Record 1</td></tr>
|
|
<tr valign="top">
|
|
<th>a&title</th>
|
|
<td align="left">some"text</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>junk</th>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>empty</th>
|
|
<td align="left"> </td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>int</th>
|
|
<td align="right">1</td>
|
|
</tr>
|
|
|
|
<tr><td colspan="2" align="center">Record 2</td></tr>
|
|
<tr valign="top">
|
|
<th>a&title</th>
|
|
<td align="left">some"text</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>junk</th>
|
|
<td align="left"> <foo><br />
|
|
<bar></td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>empty</th>
|
|
<td align="left"> </td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th>int</th>
|
|
<td align="right">2</td>
|
|
</tr>
|
|
</table>
|
|
|
|
\pset tableattr
|
|
deallocate q;
|
|
-- test latex output format
|
|
\pset format latex
|
|
\pset border 1
|
|
\pset expanded off
|
|
\d psql_serial_tab_id_seq
|
|
\begin{center}
|
|
Sequence "public.psql\_serial\_tab\_id\_seq"
|
|
\end{center}
|
|
|
|
\begin{tabular}{l | r | r | r | r | l | r}
|
|
\textit{Type} & \textit{Start} & \textit{Minimum} & \textit{Maximum} & \textit{Increment} & \textit{Cycles?} & \textit{Cache} \\
|
|
\hline
|
|
integer & 1 & 1 & 2147483647 & 1 & no & 1 \\
|
|
\end{tabular}
|
|
|
|
\noindent Owned by: public.psql\_serial\_tab.id \\
|
|
|
|
\pset tuples_only true
|
|
\df exp
|
|
\begin{tabular}{l | l | l | l | l}
|
|
pg\_catalog & exp & double precision & double precision & func \\
|
|
pg\_catalog & exp & numeric & numeric & func \\
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
\pset tuples_only false
|
|
\pset expanded on
|
|
\d psql_serial_tab_id_seq
|
|
\begin{center}
|
|
Sequence "public.psql\_serial\_tab\_id\_seq"
|
|
\end{center}
|
|
|
|
\begin{tabular}{c|l}
|
|
\multicolumn{2}{c}{\textit{Record 1}} \\
|
|
\hline
|
|
Type & integer \\
|
|
Start & 1 \\
|
|
Minimum & 1 \\
|
|
Maximum & 2147483647 \\
|
|
Increment & 1 \\
|
|
Cycles? & no \\
|
|
Cache & 1 \\
|
|
\end{tabular}
|
|
|
|
\noindent Owned by: public.psql\_serial\_tab.id \\
|
|
|
|
\pset tuples_only true
|
|
\df exp
|
|
\begin{tabular}{c|l}
|
|
\hline
|
|
Schema & pg\_catalog \\
|
|
Name & exp \\
|
|
Result data type & double precision \\
|
|
Argument data types & double precision \\
|
|
Type & func \\
|
|
\hline
|
|
Schema & pg\_catalog \\
|
|
Name & exp \\
|
|
Result data type & numeric \\
|
|
Argument data types & numeric \\
|
|
Type & func \\
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
\pset tuples_only false
|
|
prepare q as
|
|
select 'some\more_text' as "a$title", E' #<foo>%&^~|\n{bar}' as "junk",
|
|
' ' as "empty", n as int
|
|
from generate_series(1,2) as n;
|
|
\pset expanded off
|
|
\pset border 0
|
|
execute q;
|
|
\begin{tabular}{lllr}
|
|
\textit{a\$title} & \textit{junk} & \textit{empty} & \textit{int} \\
|
|
\hline
|
|
some\textbackslash{}more\_text & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} & & 1 \\
|
|
some\textbackslash{}more\_text & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} & & 2 \\
|
|
\end{tabular}
|
|
|
|
\noindent (2 rows) \\
|
|
|
|
\pset border 1
|
|
execute q;
|
|
\begin{tabular}{l | l | l | r}
|
|
\textit{a\$title} & \textit{junk} & \textit{empty} & \textit{int} \\
|
|
\hline
|
|
some\textbackslash{}more\_text & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} & & 1 \\
|
|
some\textbackslash{}more\_text & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} & & 2 \\
|
|
\end{tabular}
|
|
|
|
\noindent (2 rows) \\
|
|
|
|
\pset border 2
|
|
execute q;
|
|
\begin{tabular}{| l | l | l | r |}
|
|
\hline
|
|
\textit{a\$title} & \textit{junk} & \textit{empty} & \textit{int} \\
|
|
\hline
|
|
some\textbackslash{}more\_text & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} & & 1 \\
|
|
some\textbackslash{}more\_text & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} & & 2 \\
|
|
\hline
|
|
\end{tabular}
|
|
|
|
\noindent (2 rows) \\
|
|
|
|
\pset border 3
|
|
execute q;
|
|
\begin{tabular}{| l | l | l | r |}
|
|
\hline
|
|
\textit{a\$title} & \textit{junk} & \textit{empty} & \textit{int} \\
|
|
\hline
|
|
some\textbackslash{}more\_text & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} & & 1 \\
|
|
\hline
|
|
some\textbackslash{}more\_text & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} & & 2 \\
|
|
\hline
|
|
\end{tabular}
|
|
|
|
\noindent (2 rows) \\
|
|
|
|
\pset expanded on
|
|
\pset border 0
|
|
execute q;
|
|
\begin{tabular}{cl}
|
|
\multicolumn{2}{c}{\textit{Record 1}} \\
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 1 \\
|
|
\multicolumn{2}{c}{\textit{Record 2}} \\
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 2 \\
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
\pset border 1
|
|
execute q;
|
|
\begin{tabular}{c|l}
|
|
\multicolumn{2}{c}{\textit{Record 1}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 1 \\
|
|
\multicolumn{2}{c}{\textit{Record 2}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 2 \\
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
\pset border 2
|
|
execute q;
|
|
\begin{tabular}{|c|l|}
|
|
\hline
|
|
\multicolumn{2}{|c|}{\textit{Record 1}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 1 \\
|
|
\hline
|
|
\multicolumn{2}{|c|}{\textit{Record 2}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 2 \\
|
|
\hline
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
\pset border 3
|
|
execute q;
|
|
\begin{tabular}{|c|l|}
|
|
\hline
|
|
\multicolumn{2}{|c|}{\textit{Record 1}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 1 \\
|
|
\hline
|
|
\multicolumn{2}{|c|}{\textit{Record 2}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 2 \\
|
|
\hline
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
deallocate q;
|
|
-- test latex-longtable output format
|
|
\pset format latex-longtable
|
|
\pset border 1
|
|
\pset expanded off
|
|
\d psql_serial_tab_id_seq
|
|
\begin{longtable}{l | r | r | r | r | l | r}
|
|
\small\textbf{\textit{Type}} & \small\textbf{\textit{Start}} & \small\textbf{\textit{Minimum}} & \small\textbf{\textit{Maximum}} & \small\textbf{\textit{Increment}} & \small\textbf{\textit{Cycles?}} & \small\textbf{\textit{Cache}} \\
|
|
\midrule
|
|
\endfirsthead
|
|
\small\textbf{\textit{Type}} & \small\textbf{\textit{Start}} & \small\textbf{\textit{Minimum}} & \small\textbf{\textit{Maximum}} & \small\textbf{\textit{Increment}} & \small\textbf{\textit{Cycles?}} & \small\textbf{\textit{Cache}} \\
|
|
\midrule
|
|
\endhead
|
|
\caption[Sequence "public.psql\_serial\_tab\_id\_seq" (Continued)]{Sequence "public.psql\_serial\_tab\_id\_seq"}
|
|
\endfoot
|
|
\caption[Sequence "public.psql\_serial\_tab\_id\_seq"]{Sequence "public.psql\_serial\_tab\_id\_seq"}
|
|
\endlastfoot
|
|
\raggedright{integer}
|
|
&
|
|
\raggedright{1}
|
|
&
|
|
\raggedright{1}
|
|
&
|
|
\raggedright{2147483647}
|
|
&
|
|
\raggedright{1}
|
|
&
|
|
\raggedright{no}
|
|
&
|
|
\raggedright{1} \tabularnewline
|
|
\end{longtable}
|
|
\pset tuples_only true
|
|
\df exp
|
|
\begin{longtable}{l | l | l | l | l}
|
|
\raggedright{pg\_catalog}
|
|
&
|
|
\raggedright{exp}
|
|
&
|
|
\raggedright{double precision}
|
|
&
|
|
\raggedright{double precision}
|
|
&
|
|
\raggedright{func} \tabularnewline
|
|
\raggedright{pg\_catalog}
|
|
&
|
|
\raggedright{exp}
|
|
&
|
|
\raggedright{numeric}
|
|
&
|
|
\raggedright{numeric}
|
|
&
|
|
\raggedright{func} \tabularnewline
|
|
\end{longtable}
|
|
\pset tuples_only false
|
|
\pset expanded on
|
|
\d psql_serial_tab_id_seq
|
|
\begin{center}
|
|
Sequence "public.psql\_serial\_tab\_id\_seq"
|
|
\end{center}
|
|
|
|
\begin{tabular}{c|l}
|
|
\multicolumn{2}{c}{\textit{Record 1}} \\
|
|
\hline
|
|
Type & integer \\
|
|
Start & 1 \\
|
|
Minimum & 1 \\
|
|
Maximum & 2147483647 \\
|
|
Increment & 1 \\
|
|
Cycles? & no \\
|
|
Cache & 1 \\
|
|
\end{tabular}
|
|
|
|
\noindent Owned by: public.psql\_serial\_tab.id \\
|
|
|
|
\pset tuples_only true
|
|
\df exp
|
|
\begin{tabular}{c|l}
|
|
\hline
|
|
Schema & pg\_catalog \\
|
|
Name & exp \\
|
|
Result data type & double precision \\
|
|
Argument data types & double precision \\
|
|
Type & func \\
|
|
\hline
|
|
Schema & pg\_catalog \\
|
|
Name & exp \\
|
|
Result data type & numeric \\
|
|
Argument data types & numeric \\
|
|
Type & func \\
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
\pset tuples_only false
|
|
prepare q as
|
|
select 'some\more_text' as "a$title", E' #<foo>%&^~|\n{bar}' as "junk",
|
|
' ' as "empty", n as int
|
|
from generate_series(1,2) as n;
|
|
\pset expanded off
|
|
\pset border 0
|
|
execute q;
|
|
\begin{longtable}{lllr}
|
|
\small\textbf{\textit{a\$title}} & \small\textbf{\textit{junk}} & \small\textbf{\textit{empty}} & \small\textbf{\textit{int}} \\
|
|
\midrule
|
|
\endfirsthead
|
|
\small\textbf{\textit{a\$title}} & \small\textbf{\textit{junk}} & \small\textbf{\textit{empty}} & \small\textbf{\textit{int}} \\
|
|
\midrule
|
|
\endhead
|
|
\raggedright{some\textbackslash{}more\_text}
|
|
&
|
|
\raggedright{ \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\}}
|
|
&
|
|
\raggedright{ }
|
|
&
|
|
\raggedright{1} \tabularnewline
|
|
\raggedright{some\textbackslash{}more\_text}
|
|
&
|
|
\raggedright{ \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\}}
|
|
&
|
|
\raggedright{ }
|
|
&
|
|
\raggedright{2} \tabularnewline
|
|
\end{longtable}
|
|
\pset border 1
|
|
execute q;
|
|
\begin{longtable}{l | l | l | r}
|
|
\small\textbf{\textit{a\$title}} & \small\textbf{\textit{junk}} & \small\textbf{\textit{empty}} & \small\textbf{\textit{int}} \\
|
|
\midrule
|
|
\endfirsthead
|
|
\small\textbf{\textit{a\$title}} & \small\textbf{\textit{junk}} & \small\textbf{\textit{empty}} & \small\textbf{\textit{int}} \\
|
|
\midrule
|
|
\endhead
|
|
\raggedright{some\textbackslash{}more\_text}
|
|
&
|
|
\raggedright{ \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\}}
|
|
&
|
|
\raggedright{ }
|
|
&
|
|
\raggedright{1} \tabularnewline
|
|
\raggedright{some\textbackslash{}more\_text}
|
|
&
|
|
\raggedright{ \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\}}
|
|
&
|
|
\raggedright{ }
|
|
&
|
|
\raggedright{2} \tabularnewline
|
|
\end{longtable}
|
|
\pset border 2
|
|
execute q;
|
|
\begin{longtable}{| l | l | l | r |}
|
|
\toprule
|
|
\small\textbf{\textit{a\$title}} & \small\textbf{\textit{junk}} & \small\textbf{\textit{empty}} & \small\textbf{\textit{int}} \\
|
|
\midrule
|
|
\endfirsthead
|
|
\toprule
|
|
\small\textbf{\textit{a\$title}} & \small\textbf{\textit{junk}} & \small\textbf{\textit{empty}} & \small\textbf{\textit{int}} \\
|
|
\midrule
|
|
\endhead
|
|
\bottomrule
|
|
\endfoot
|
|
\bottomrule
|
|
\endlastfoot
|
|
\raggedright{some\textbackslash{}more\_text}
|
|
&
|
|
\raggedright{ \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\}}
|
|
&
|
|
\raggedright{ }
|
|
&
|
|
\raggedright{1} \tabularnewline
|
|
\raggedright{some\textbackslash{}more\_text}
|
|
&
|
|
\raggedright{ \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\}}
|
|
&
|
|
\raggedright{ }
|
|
&
|
|
\raggedright{2} \tabularnewline
|
|
\end{longtable}
|
|
\pset border 3
|
|
execute q;
|
|
\begin{longtable}{| l | l | l | r |}
|
|
\toprule
|
|
\small\textbf{\textit{a\$title}} & \small\textbf{\textit{junk}} & \small\textbf{\textit{empty}} & \small\textbf{\textit{int}} \\
|
|
\midrule
|
|
\endfirsthead
|
|
\toprule
|
|
\small\textbf{\textit{a\$title}} & \small\textbf{\textit{junk}} & \small\textbf{\textit{empty}} & \small\textbf{\textit{int}} \\
|
|
\endhead
|
|
\bottomrule
|
|
\endfoot
|
|
\bottomrule
|
|
\endlastfoot
|
|
\raggedright{some\textbackslash{}more\_text}
|
|
&
|
|
\raggedright{ \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\}}
|
|
&
|
|
\raggedright{ }
|
|
&
|
|
\raggedright{1} \tabularnewline
|
|
\hline
|
|
\raggedright{some\textbackslash{}more\_text}
|
|
&
|
|
\raggedright{ \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\}}
|
|
&
|
|
\raggedright{ }
|
|
&
|
|
\raggedright{2} \tabularnewline
|
|
\hline
|
|
\end{longtable}
|
|
\pset tableattr lr
|
|
execute q;
|
|
\begin{longtable}{| p{lr\textwidth} | p{lr\textwidth} | p{lr\textwidth} | r |}
|
|
\toprule
|
|
\small\textbf{\textit{a\$title}} & \small\textbf{\textit{junk}} & \small\textbf{\textit{empty}} & \small\textbf{\textit{int}} \\
|
|
\midrule
|
|
\endfirsthead
|
|
\toprule
|
|
\small\textbf{\textit{a\$title}} & \small\textbf{\textit{junk}} & \small\textbf{\textit{empty}} & \small\textbf{\textit{int}} \\
|
|
\endhead
|
|
\bottomrule
|
|
\endfoot
|
|
\bottomrule
|
|
\endlastfoot
|
|
\raggedright{some\textbackslash{}more\_text}
|
|
&
|
|
\raggedright{ \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\}}
|
|
&
|
|
\raggedright{ }
|
|
&
|
|
\raggedright{1} \tabularnewline
|
|
\hline
|
|
\raggedright{some\textbackslash{}more\_text}
|
|
&
|
|
\raggedright{ \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\}}
|
|
&
|
|
\raggedright{ }
|
|
&
|
|
\raggedright{2} \tabularnewline
|
|
\hline
|
|
\end{longtable}
|
|
\pset tableattr
|
|
\pset expanded on
|
|
\pset border 0
|
|
execute q;
|
|
\begin{tabular}{cl}
|
|
\multicolumn{2}{c}{\textit{Record 1}} \\
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 1 \\
|
|
\multicolumn{2}{c}{\textit{Record 2}} \\
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 2 \\
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
\pset border 1
|
|
execute q;
|
|
\begin{tabular}{c|l}
|
|
\multicolumn{2}{c}{\textit{Record 1}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 1 \\
|
|
\multicolumn{2}{c}{\textit{Record 2}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 2 \\
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
\pset border 2
|
|
execute q;
|
|
\begin{tabular}{|c|l|}
|
|
\hline
|
|
\multicolumn{2}{|c|}{\textit{Record 1}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 1 \\
|
|
\hline
|
|
\multicolumn{2}{|c|}{\textit{Record 2}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 2 \\
|
|
\hline
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
\pset border 3
|
|
execute q;
|
|
\begin{tabular}{|c|l|}
|
|
\hline
|
|
\multicolumn{2}{|c|}{\textit{Record 1}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 1 \\
|
|
\hline
|
|
\multicolumn{2}{|c|}{\textit{Record 2}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 2 \\
|
|
\hline
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
\pset tableattr lr
|
|
execute q;
|
|
\begin{tabular}{|c|l|}
|
|
\hline
|
|
\multicolumn{2}{|c|}{\textit{Record 1}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 1 \\
|
|
\hline
|
|
\multicolumn{2}{|c|}{\textit{Record 2}} \\
|
|
\hline
|
|
a\$title & some\textbackslash{}more\_text \\
|
|
junk & \#\textless{}foo\textgreater{}\%\&\^{}\~{}\textbar{}\\\{bar\} \\
|
|
empty & \\
|
|
int & 2 \\
|
|
\hline
|
|
\end{tabular}
|
|
|
|
\noindent
|
|
\pset tableattr
|
|
deallocate q;
|
|
-- test troff-ms output format
|
|
\pset format troff-ms
|
|
\pset border 1
|
|
\pset expanded off
|
|
\d psql_serial_tab_id_seq
|
|
.LP
|
|
.DS C
|
|
Sequence "public.psql_serial_tab_id_seq"
|
|
.DE
|
|
.LP
|
|
.TS
|
|
center;
|
|
l | r | r | r | r | l | r.
|
|
\fIType\fP \fIStart\fP \fIMinimum\fP \fIMaximum\fP \fIIncrement\fP \fICycles?\fP \fICache\fP
|
|
_
|
|
integer 1 1 2147483647 1 no 1
|
|
.TE
|
|
.DS L
|
|
Owned by: public.psql_serial_tab.id
|
|
.DE
|
|
\pset tuples_only true
|
|
\df exp
|
|
.LP
|
|
.TS
|
|
center;
|
|
l | l | l | l | l.
|
|
pg_catalog exp double precision double precision func
|
|
pg_catalog exp numeric numeric func
|
|
.TE
|
|
.DS L
|
|
.DE
|
|
\pset tuples_only false
|
|
\pset expanded on
|
|
\d psql_serial_tab_id_seq
|
|
.LP
|
|
.DS C
|
|
Sequence "public.psql_serial_tab_id_seq"
|
|
.DE
|
|
.LP
|
|
.TS
|
|
center;
|
|
c s.
|
|
\fIRecord 1\fP
|
|
_
|
|
.T&
|
|
c | l.
|
|
Type integer
|
|
Start 1
|
|
Minimum 1
|
|
Maximum 2147483647
|
|
Increment 1
|
|
Cycles? no
|
|
Cache 1
|
|
.TE
|
|
.DS L
|
|
Owned by: public.psql_serial_tab.id
|
|
.DE
|
|
\pset tuples_only true
|
|
\df exp
|
|
.LP
|
|
.TS
|
|
center;
|
|
c l;
|
|
_
|
|
Schema pg_catalog
|
|
Name exp
|
|
Result data type double precision
|
|
Argument data types double precision
|
|
Type func
|
|
_
|
|
Schema pg_catalog
|
|
Name exp
|
|
Result data type numeric
|
|
Argument data types numeric
|
|
Type func
|
|
.TE
|
|
.DS L
|
|
.DE
|
|
\pset tuples_only false
|
|
prepare q as
|
|
select 'some\text' as "a\title", E' <foo>\n<bar>' as "junk",
|
|
' ' as "empty", n as int
|
|
from generate_series(1,2) as n;
|
|
\pset expanded off
|
|
\pset border 0
|
|
execute q;
|
|
.LP
|
|
.TS
|
|
center;
|
|
lllr.
|
|
\fIa\(rstitle\fP \fIjunk\fP \fIempty\fP \fIint\fP
|
|
_
|
|
some\(rstext <foo>
|
|
<bar> 1
|
|
some\(rstext <foo>
|
|
<bar> 2
|
|
.TE
|
|
.DS L
|
|
(2 rows)
|
|
.DE
|
|
\pset border 1
|
|
execute q;
|
|
.LP
|
|
.TS
|
|
center;
|
|
l | l | l | r.
|
|
\fIa\(rstitle\fP \fIjunk\fP \fIempty\fP \fIint\fP
|
|
_
|
|
some\(rstext <foo>
|
|
<bar> 1
|
|
some\(rstext <foo>
|
|
<bar> 2
|
|
.TE
|
|
.DS L
|
|
(2 rows)
|
|
.DE
|
|
\pset border 2
|
|
execute q;
|
|
.LP
|
|
.TS
|
|
center box;
|
|
l | l | l | r.
|
|
\fIa\(rstitle\fP \fIjunk\fP \fIempty\fP \fIint\fP
|
|
_
|
|
some\(rstext <foo>
|
|
<bar> 1
|
|
some\(rstext <foo>
|
|
<bar> 2
|
|
.TE
|
|
.DS L
|
|
(2 rows)
|
|
.DE
|
|
\pset expanded on
|
|
\pset border 0
|
|
execute q;
|
|
.LP
|
|
.TS
|
|
center;
|
|
c s.
|
|
\fIRecord 1\fP
|
|
.T&
|
|
c l.
|
|
a\(rstitle some\(rstext
|
|
junk <foo>
|
|
<bar>
|
|
empty
|
|
int 1
|
|
.T&
|
|
c s.
|
|
\fIRecord 2\fP
|
|
.T&
|
|
c l.
|
|
a\(rstitle some\(rstext
|
|
junk <foo>
|
|
<bar>
|
|
empty
|
|
int 2
|
|
.TE
|
|
.DS L
|
|
.DE
|
|
\pset border 1
|
|
execute q;
|
|
.LP
|
|
.TS
|
|
center;
|
|
c s.
|
|
\fIRecord 1\fP
|
|
_
|
|
.T&
|
|
c | l.
|
|
a\(rstitle some\(rstext
|
|
junk <foo>
|
|
<bar>
|
|
empty
|
|
int 1
|
|
.T&
|
|
c s.
|
|
\fIRecord 2\fP
|
|
_
|
|
.T&
|
|
c | l.
|
|
a\(rstitle some\(rstext
|
|
junk <foo>
|
|
<bar>
|
|
empty
|
|
int 2
|
|
.TE
|
|
.DS L
|
|
.DE
|
|
\pset border 2
|
|
execute q;
|
|
.LP
|
|
.TS
|
|
center box;
|
|
c s.
|
|
\fIRecord 1\fP
|
|
_
|
|
.T&
|
|
c l.
|
|
a\(rstitle some\(rstext
|
|
junk <foo>
|
|
<bar>
|
|
empty
|
|
int 1
|
|
_
|
|
.T&
|
|
c s.
|
|
\fIRecord 2\fP
|
|
_
|
|
.T&
|
|
c l.
|
|
a\(rstitle some\(rstext
|
|
junk <foo>
|
|
<bar>
|
|
empty
|
|
int 2
|
|
.TE
|
|
.DS L
|
|
.DE
|
|
deallocate q;
|
|
-- check ambiguous format requests
|
|
\pset format a
|
|
\pset: ambiguous abbreviation "a" matches both "aligned" and "asciidoc"
|
|
\pset format l
|
|
-- clean up after output format tests
|
|
drop table psql_serial_tab;
|
|
\pset format aligned
|
|
\pset expanded off
|
|
\pset border 1
|
|
-- tests for \if ... \endif
|
|
\if true
|
|
select 'okay';
|
|
?column?
|
|
----------
|
|
okay
|
|
(1 row)
|
|
|
|
select 'still okay';
|
|
?column?
|
|
------------
|
|
still okay
|
|
(1 row)
|
|
|
|
\else
|
|
not okay;
|
|
still not okay
|
|
\endif
|
|
-- at this point query buffer should still have last valid line
|
|
\g
|
|
?column?
|
|
------------
|
|
still okay
|
|
(1 row)
|
|
|
|
-- \if should work okay on part of a query
|
|
select
|
|
\if true
|
|
42
|
|
\else
|
|
(bogus
|
|
\endif
|
|
forty_two;
|
|
forty_two
|
|
-----------
|
|
42
|
|
(1 row)
|
|
|
|
select \if false \\ (bogus \else \\ 42 \endif \\ forty_two;
|
|
forty_two
|
|
-----------
|
|
42
|
|
(1 row)
|
|
|
|
-- test a large nested if using a variety of true-equivalents
|
|
\if true
|
|
\if 1
|
|
\if yes
|
|
\if on
|
|
\echo 'all true'
|
|
all true
|
|
\else
|
|
\echo 'should not print #1-1'
|
|
\endif
|
|
\else
|
|
\echo 'should not print #1-2'
|
|
\endif
|
|
\else
|
|
\echo 'should not print #1-3'
|
|
\endif
|
|
\else
|
|
\echo 'should not print #1-4'
|
|
\endif
|
|
-- test a variety of false-equivalents in an if/elif/else structure
|
|
\if false
|
|
\echo 'should not print #2-1'
|
|
\elif 0
|
|
\echo 'should not print #2-2'
|
|
\elif no
|
|
\echo 'should not print #2-3'
|
|
\elif off
|
|
\echo 'should not print #2-4'
|
|
\else
|
|
\echo 'all false'
|
|
all false
|
|
\endif
|
|
-- test simple true-then-else
|
|
\if true
|
|
\echo 'first thing true'
|
|
first thing true
|
|
\else
|
|
\echo 'should not print #3-1'
|
|
\endif
|
|
-- test simple false-true-else
|
|
\if false
|
|
\echo 'should not print #4-1'
|
|
\elif true
|
|
\echo 'second thing true'
|
|
second thing true
|
|
\else
|
|
\echo 'should not print #5-1'
|
|
\endif
|
|
-- invalid boolean expressions are false
|
|
\if invalid boolean expression
|
|
unrecognized value "invalid boolean expression" for "\if expression": Boolean expected
|
|
\echo 'will not print #6-1'
|
|
\else
|
|
\echo 'will print anyway #6-2'
|
|
will print anyway #6-2
|
|
\endif
|
|
-- test un-matched endif
|
|
\endif
|
|
\endif: no matching \if
|
|
-- test un-matched else
|
|
\else
|
|
\else: no matching \if
|
|
-- test un-matched elif
|
|
\elif
|
|
\elif: no matching \if
|
|
-- test double-else error
|
|
\if true
|
|
\else
|
|
\else
|
|
\else: cannot occur after \else
|
|
\endif
|
|
-- test elif out-of-order
|
|
\if false
|
|
\else
|
|
\elif
|
|
\elif: cannot occur after \else
|
|
\endif
|
|
-- test if-endif matching in a false branch
|
|
\if false
|
|
\if false
|
|
\echo 'should not print #7-1'
|
|
\else
|
|
\echo 'should not print #7-2'
|
|
\endif
|
|
\echo 'should not print #7-3'
|
|
\else
|
|
\echo 'should print #7-4'
|
|
should print #7-4
|
|
\endif
|
|
-- show that vars and backticks are not expanded when ignoring extra args
|
|
\set foo bar
|
|
\echo :foo :'foo' :"foo"
|
|
bar 'bar' "bar"
|
|
\pset fieldsep | `nosuchcommand` :foo :'foo' :"foo"
|
|
\pset: extra argument "nosuchcommand" ignored
|
|
\pset: extra argument ":foo" ignored
|
|
\pset: extra argument ":'foo'" ignored
|
|
\pset: extra argument ":"foo"" ignored
|
|
-- show that vars and backticks are not expanded and commands are ignored
|
|
-- when in a false if-branch
|
|
\set try_to_quit '\\q'
|
|
\if false
|
|
:try_to_quit
|
|
\echo `nosuchcommand` :foo :'foo' :"foo"
|
|
\pset fieldsep | `nosuchcommand` :foo :'foo' :"foo"
|
|
\a \C arg1 \c arg1 arg2 arg3 arg4 \cd arg1 \conninfo
|
|
\copy arg1 arg2 arg3 arg4 arg5 arg6
|
|
\copyright \dt arg1 \e arg1 arg2
|
|
\ef whole_line
|
|
\ev whole_line
|
|
\echo arg1 arg2 arg3 arg4 arg5 \echo arg1 \encoding arg1 \errverbose
|
|
\g arg1 \gx arg1 \gexec \h \html \i arg1 \ir arg1 \l arg1 \lo arg1 arg2
|
|
\o arg1 \p \password arg1 \prompt arg1 arg2 \pset arg1 arg2 \q
|
|
\reset \s arg1 \set arg1 arg2 arg3 arg4 arg5 arg6 arg7 \setenv arg1 arg2
|
|
\sf whole_line
|
|
\sv whole_line
|
|
\t arg1 \T arg1 \timing arg1 \unset arg1 \w arg1 \watch arg1 \x arg1
|
|
-- \else here is eaten as part of OT_FILEPIPE argument
|
|
\w |/no/such/file \else
|
|
-- \endif here is eaten as part of whole-line argument
|
|
\! whole_line \endif
|
|
\else
|
|
\echo 'should print #8-1'
|
|
should print #8-1
|
|
\endif
|
|
-- :{?...} defined variable test
|
|
\set i 1
|
|
\if :{?i}
|
|
\echo '#9-1 ok, variable i is defined'
|
|
#9-1 ok, variable i is defined
|
|
\else
|
|
\echo 'should not print #9-2'
|
|
\endif
|
|
\if :{?no_such_variable}
|
|
\echo 'should not print #10-1'
|
|
\else
|
|
\echo '#10-2 ok, variable no_such_variable is not defined'
|
|
#10-2 ok, variable no_such_variable is not defined
|
|
\endif
|
|
SELECT :{?i} AS i_is_defined;
|
|
i_is_defined
|
|
--------------
|
|
t
|
|
(1 row)
|
|
|
|
SELECT NOT :{?no_such_var} AS no_such_var_is_not_defined;
|
|
no_such_var_is_not_defined
|
|
----------------------------
|
|
t
|
|
(1 row)
|
|
|
|
-- SHOW_CONTEXT
|
|
\set SHOW_CONTEXT never
|
|
do $$
|
|
begin
|
|
raise notice 'foo';
|
|
raise exception 'bar';
|
|
end $$;
|
|
NOTICE: foo
|
|
ERROR: bar
|
|
\set SHOW_CONTEXT errors
|
|
do $$
|
|
begin
|
|
raise notice 'foo';
|
|
raise exception 'bar';
|
|
end $$;
|
|
NOTICE: foo
|
|
ERROR: bar
|
|
CONTEXT: PL/pgSQL function inline_code_block line 4 at RAISE
|
|
\set SHOW_CONTEXT always
|
|
do $$
|
|
begin
|
|
raise notice 'foo';
|
|
raise exception 'bar';
|
|
end $$;
|
|
NOTICE: foo
|
|
CONTEXT: PL/pgSQL function inline_code_block line 3 at RAISE
|
|
ERROR: bar
|
|
CONTEXT: PL/pgSQL function inline_code_block line 4 at RAISE
|
|
-- test printing and clearing the query buffer
|
|
SELECT 1;
|
|
?column?
|
|
----------
|
|
1
|
|
(1 row)
|
|
|
|
\p
|
|
SELECT 1;
|
|
SELECT 2 \r
|
|
\p
|
|
SELECT 1;
|
|
SELECT 3 \p
|
|
SELECT 3
|
|
UNION SELECT 4 \p
|
|
SELECT 3
|
|
UNION SELECT 4
|
|
UNION SELECT 5
|
|
ORDER BY 1;
|
|
?column?
|
|
----------
|
|
3
|
|
4
|
|
5
|
|
(3 rows)
|
|
|
|
\r
|
|
\p
|
|
SELECT 3
|
|
UNION SELECT 4
|
|
UNION SELECT 5
|
|
ORDER BY 1;
|
|
-- tests for special result variables
|
|
-- working query, 2 rows selected
|
|
SELECT 1 AS stuff UNION SELECT 2;
|
|
stuff
|
|
-------
|
|
1
|
|
2
|
|
(2 rows)
|
|
|
|
\echo 'error:' :ERROR
|
|
error: false
|
|
\echo 'error code:' :SQLSTATE
|
|
error code: 00000
|
|
\echo 'number of rows:' :ROW_COUNT
|
|
number of rows: 2
|
|
-- syntax error
|
|
SELECT 1 UNION;
|
|
ERROR: syntax error at or near ";"
|
|
LINE 1: SELECT 1 UNION;
|
|
^
|
|
\echo 'error:' :ERROR
|
|
error: true
|
|
\echo 'error code:' :SQLSTATE
|
|
error code: 42601
|
|
\echo 'number of rows:' :ROW_COUNT
|
|
number of rows: 0
|
|
\echo 'last error message:' :LAST_ERROR_MESSAGE
|
|
last error message: syntax error at or near ";"
|
|
\echo 'last error code:' :LAST_ERROR_SQLSTATE
|
|
last error code: 42601
|
|
-- empty query
|
|
;
|
|
\echo 'error:' :ERROR
|
|
error: false
|
|
\echo 'error code:' :SQLSTATE
|
|
error code: 00000
|
|
\echo 'number of rows:' :ROW_COUNT
|
|
number of rows: 0
|
|
-- must have kept previous values
|
|
\echo 'last error message:' :LAST_ERROR_MESSAGE
|
|
last error message: syntax error at or near ";"
|
|
\echo 'last error code:' :LAST_ERROR_SQLSTATE
|
|
last error code: 42601
|
|
-- other query error
|
|
DROP TABLE this_table_does_not_exist;
|
|
ERROR: table "this_table_does_not_exist" does not exist
|
|
\echo 'error:' :ERROR
|
|
error: true
|
|
\echo 'error code:' :SQLSTATE
|
|
error code: 42P01
|
|
\echo 'number of rows:' :ROW_COUNT
|
|
number of rows: 0
|
|
\echo 'last error message:' :LAST_ERROR_MESSAGE
|
|
last error message: table "this_table_does_not_exist" does not exist
|
|
\echo 'last error code:' :LAST_ERROR_SQLSTATE
|
|
last error code: 42P01
|
|
-- working \gdesc
|
|
SELECT 3 AS three, 4 AS four \gdesc
|
|
Column | Type
|
|
--------+---------
|
|
three | integer
|
|
four | integer
|
|
(2 rows)
|
|
|
|
\echo 'error:' :ERROR
|
|
error: false
|
|
\echo 'error code:' :SQLSTATE
|
|
error code: 00000
|
|
\echo 'number of rows:' :ROW_COUNT
|
|
number of rows: 2
|
|
-- \gdesc with an error
|
|
SELECT 4 AS \gdesc
|
|
ERROR: syntax error at end of input
|
|
LINE 1: SELECT 4 AS
|
|
^
|
|
\echo 'error:' :ERROR
|
|
error: true
|
|
\echo 'error code:' :SQLSTATE
|
|
error code: 42601
|
|
\echo 'number of rows:' :ROW_COUNT
|
|
number of rows: 0
|
|
\echo 'last error message:' :LAST_ERROR_MESSAGE
|
|
last error message: syntax error at end of input
|
|
\echo 'last error code:' :LAST_ERROR_SQLSTATE
|
|
last error code: 42601
|
|
-- check row count for a cursor-fetched query
|
|
\set FETCH_COUNT 10
|
|
select unique2 from tenk1 order by unique2 limit 19;
|
|
unique2
|
|
---------
|
|
0
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8
|
|
9
|
|
10
|
|
11
|
|
12
|
|
13
|
|
14
|
|
15
|
|
16
|
|
17
|
|
18
|
|
(19 rows)
|
|
|
|
\echo 'error:' :ERROR
|
|
error: false
|
|
\echo 'error code:' :SQLSTATE
|
|
error code: 00000
|
|
\echo 'number of rows:' :ROW_COUNT
|
|
number of rows: 19
|
|
-- cursor-fetched query with an error after the first group
|
|
select 1/(15-unique2) from tenk1 order by unique2 limit 19;
|
|
?column?
|
|
----------
|
|
0
|
|
0
|
|
0
|
|
0
|
|
0
|
|
0
|
|
0
|
|
0
|
|
0
|
|
0
|
|
ERROR: division by zero
|
|
\echo 'error:' :ERROR
|
|
error: true
|
|
\echo 'error code:' :SQLSTATE
|
|
error code: 22012
|
|
\echo 'number of rows:' :ROW_COUNT
|
|
number of rows: 0
|
|
\echo 'last error message:' :LAST_ERROR_MESSAGE
|
|
last error message: division by zero
|
|
\echo 'last error code:' :LAST_ERROR_SQLSTATE
|
|
last error code: 22012
|
|
\unset FETCH_COUNT
|