diff --git a/contrib/dblink/expected/dblink.out b/contrib/dblink/expected/dblink.out
index 13e4a6fb4c..d39aa45373 100644
--- a/contrib/dblink/expected/dblink.out
+++ b/contrib/dblink/expected/dblink.out
@@ -829,51 +829,51 @@ DROP SERVER fdtest;
DROP FOREIGN DATA WRAPPER postgresql;
-- test asynchronous notifications
SELECT dblink_connect('dbname=contrib_regression');
- dblink_connect
+ dblink_connect
----------------
OK
(1 row)
--should return listen
SELECT dblink_exec('LISTEN regression');
- dblink_exec
+ dblink_exec
-------------
LISTEN
(1 row)
--should return listen
SELECT dblink_exec('LISTEN foobar');
- dblink_exec
+ dblink_exec
-------------
LISTEN
(1 row)
SELECT dblink_exec('NOTIFY regression');
- dblink_exec
+ dblink_exec
-------------
NOTIFY
(1 row)
SELECT dblink_exec('NOTIFY foobar');
- dblink_exec
+ dblink_exec
-------------
NOTIFY
(1 row)
SELECT notify_name, be_pid = (select t.be_pid from dblink('select pg_backend_pid()') as t(be_pid int)) AS is_self_notify, extra from dblink_get_notify();
- notify_name | is_self_notify | extra
+ notify_name | is_self_notify | extra
-------------+----------------+-------
- regression | t |
- foobar | t |
+ regression | t |
+ foobar | t |
(2 rows)
SELECT * from dblink_get_notify();
- notify_name | be_pid | extra
+ notify_name | be_pid | extra
-------------+--------+-------
(0 rows)
SELECT dblink_disconnect();
- dblink_disconnect
+ dblink_disconnect
-------------------
OK
(1 row)
diff --git a/contrib/pgcrypto/expected/crypt-blowfish.out b/contrib/pgcrypto/expected/crypt-blowfish.out
index 329d78f625..8a8b007181 100644
--- a/contrib/pgcrypto/expected/crypt-blowfish.out
+++ b/contrib/pgcrypto/expected/crypt-blowfish.out
@@ -17,7 +17,7 @@ CREATE TABLE ctest (data text, res text, salt text);
INSERT INTO ctest VALUES ('password', '', '');
UPDATE ctest SET salt = gen_salt('bf', 8);
UPDATE ctest SET res = crypt(data, salt);
-SELECT res = crypt(data, res) AS "worked"
+SELECT res = crypt(data, res) AS "worked"
FROM ctest;
worked
--------
diff --git a/contrib/pgcrypto/expected/pgp-armor.out b/contrib/pgcrypto/expected/pgp-armor.out
index 1bb2461596..c95549412e 100644
--- a/contrib/pgcrypto/expected/pgp-armor.out
+++ b/contrib/pgcrypto/expected/pgp-armor.out
@@ -6,21 +6,21 @@ SET bytea_output TO escape;
select armor('');
armor
-----------------------------
- -----BEGIN PGP MESSAGE-----
-
- =twTO
- -----END PGP MESSAGE-----
+ -----BEGIN PGP MESSAGE-----+
+ +
+ =twTO +
+ -----END PGP MESSAGE----- +
(1 row)
select armor('test');
armor
-----------------------------
- -----BEGIN PGP MESSAGE-----
-
- dGVzdA==
- =+G7Q
- -----END PGP MESSAGE-----
+ -----BEGIN PGP MESSAGE-----+
+ +
+ dGVzdA== +
+ =+G7Q +
+ -----END PGP MESSAGE----- +
(1 row)
@@ -40,12 +40,12 @@ select armor('0123456789abcdef0123456789abcdef0123456789abcdef
0123456789abcdef0123456789abcdef0123456789abcdef');
armor
------------------------------------------------------------------------------
- -----BEGIN PGP MESSAGE-----
-
- MDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWYwMTIzNDU2Nzg5YWJjZGVmCjAxMjM0NTY3
- ODlhYmNkZWYwMTIzNDU2Nzg5YWJjZGVmMDEyMzQ1Njc4OWFiY2RlZg==
- =JFw5
- -----END PGP MESSAGE-----
+ -----BEGIN PGP MESSAGE----- +
+ +
+ MDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWYwMTIzNDU2Nzg5YWJjZGVmCjAxMjM0NTY3+
+ ODlhYmNkZWYwMTIzNDU2Nzg5YWJjZGVmMDEyMzQ1Njc4OWFiY2RlZg== +
+ =JFw5 +
+ -----END PGP MESSAGE----- +
(1 row)
diff --git a/contrib/pgcrypto/expected/pgp-decrypt.out b/contrib/pgcrypto/expected/pgp-decrypt.out
index 8ecb56f009..859f4d681b 100644
--- a/contrib/pgcrypto/expected/pgp-decrypt.out
+++ b/contrib/pgcrypto/expected/pgp-decrypt.out
@@ -11,7 +11,7 @@ yA6Ce1QTMK3KdL2MPfamsTUSAML8huCJMwYQFfE=
=JcP+
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -25,7 +25,7 @@ UTAsG35A1vYs02VARKzGz6xI2UHwFUirP+brPBg3Ee7muOx8pA==
=XtrP
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -39,7 +39,7 @@ jA0ECAMCI7YQpWqp3D1g0kQBCjB7GlX7+SQeXNleXeXQ78ZAPNliquGDq9u378zI
=rCZt
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -53,7 +53,7 @@ lceMfQdbAg6oTFyJpk/wH18GzRDphCofg0X8uLgkAKMrpcmgog==
=fB6S
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -68,7 +68,7 @@ u9YkgfJfsuRJmgQ9tmo=
=60ui
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -82,7 +82,7 @@ jA0EBwMCEeP3idNjQ1Bg0kQBf4G0wX+2QNzLh2YNwYkQgQkfYhn/hLXjV4nK9nsE
=moGf
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -97,7 +97,7 @@ KyRrHf7zEBuZiZ2AG34jNVMOLToj1jJUg5zTSdecUzQVCykWTA==
=NyLk
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -111,7 +111,7 @@ jA0EBwMCApbdlrURoWJg0kQBzHM/E0o7djY82bNuspjxjAcPFrrtp0uvDdMQ4z2m
=FxbQ
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -126,7 +126,7 @@ Ah9GXjGS1TVALzTImJbz1uHUZRfhJlFbc5yGQw==
=YvkV
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -140,7 +140,7 @@ jAwEBwEC/QTByBLI3b/SRAHPxKzI6SZBo5lAEOD+EsvKQWO4adL9tDY+++Iqy1xK
=dbXm
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -154,7 +154,7 @@ z+9ZaA/XdSx5ZiFnMym8P6r8uY9rLjjNptvvRHlxIReF+p9MNg==
=VJKg
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -168,7 +168,7 @@ Cr3i2M7TgVZ0M4jp4QL0adG1lpN5iK7aQeOwMw==
=cg+i
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -182,7 +182,7 @@ jAwECAECruOfyNDFiTnSRAEVoGXm4A9UZKkWljdzjEO/iaE7mIraltIpQMkiqCh9
=aHmC
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -196,7 +196,7 @@ q6eF6859ZVnli3BFSDSk3a4e/pXhglxmDYCfjAXkozKNYLo6yw==
=K0LS
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -210,7 +210,7 @@ rQr3WbdKdY9ufjOE5+mXI+EFkSPrF9rL9NCq6w==
=RGts
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -224,7 +224,7 @@ jAwECQECKHhrou7ZOIXSRAHWIVP+xjVQcjAVBTt+qh9SNzYe248xFTwozkwev3mO
=SUrU
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -238,7 +238,7 @@ jA0ECQMCjc8lwZu8Fz1g0kQBkEzjImi21liep5jj+3dAJ2aZFfUkohi8b3n9z+7+
=XZrG
-----END PGP MESSAGE-----
'), 'foobar');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -253,7 +253,7 @@ tTGup1mMz6Cfh1uDRErUuXpx9A0gdMu7zX0o5XjrL7WGDAZdSw==
=XKKG
-----END PGP MESSAGE-----
'), '0123456789abcdefghij');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -267,7 +267,7 @@ CMxFKadf144H/vpoV9GA0f22keQgCl0EsTE4V4lweVOPTKCMJg==
=gWDh
-----END PGP MESSAGE-----
'), '0123456789abcdefghij2jk4h5g2j54khg23h54g2kh54g2khj54g23hj54');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
@@ -281,7 +281,7 @@ FwsDabdQUz5O7bgNSnxfmyw1OifGF+W2bIn/8W+0rDf8u3+O+Q==
=OxOF
-----END PGP MESSAGE-----
'), 'x');
- pgp_sym_decrypt
+ pgp_sym_decrypt
-----------------
Secret message.
(1 row)
diff --git a/contrib/tsearch2/expected/tsearch2.out b/contrib/tsearch2/expected/tsearch2.out
index d5623e1cdb..22d3e3e402 100644
--- a/contrib/tsearch2/expected/tsearch2.out
+++ b/contrib/tsearch2/expected/tsearch2.out
@@ -742,8 +742,8 @@ select * from parse('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc
3 | ewri2
12 |
13 |
- 12 |
- :
+ 12 | +
+ |
19 | /usr/local/fff
12 |
19 | /awdf/dwqe/4325
@@ -775,8 +775,8 @@ select * from parse('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc
20 | -4.2
12 | .
22 | 234
- 12 |
- :
+ 12 | +
+ |
12 | <
1 | i
12 |
@@ -2330,8 +2330,8 @@ Upon a woman s face. E. J. Pratt (1882 1964)
', to_tsquery('sea&thousand&years'));
headline
--------------------------------------------
- sea a thousand years,
- A thousand years to trace
+ sea a thousand years,+
+ A thousand years to trace +
The granite features of this cliff
(1 row)
@@ -2347,8 +2347,8 @@ Upon a woman s face. E. J. Pratt (1882 1964)
', to_tsquery('granite&sea'));
headline
-------------------------------------------
- sea a thousand years,
- A thousand years to trace
+ sea a thousand years, +
+ A thousand years to trace +
The granite features of this cliff
(1 row)
@@ -2364,8 +2364,8 @@ Upon a woman s face. E. J. Pratt (1882 1964)
', to_tsquery('sea'));
headline
------------------------------------
- sea a thousand years,
- A thousand years to trace
+ sea a thousand years, +
+ A thousand years to trace +
The granite features of this cliff
(1 row)
@@ -2384,17 +2384,17 @@ ff-bg
to_tsquery('sea&foo'), 'HighlightAll=true');
headline
-----------------------------------------------------------------------------
-
-
-
-
- Sea view wow foo bar qq
- YES
- ff-bg
-
-
+ +
+ +
+ +
+
+
+ Sea view wow foo bar qq +
+ YES +
+ ff-bg +
+ +
+ +
(1 row)
diff --git a/contrib/tsearch2/expected/tsearch2_1.out b/contrib/tsearch2/expected/tsearch2_1.out
index e956b07646..f5713f5024 100644
--- a/contrib/tsearch2/expected/tsearch2_1.out
+++ b/contrib/tsearch2/expected/tsearch2_1.out
@@ -742,8 +742,8 @@ select * from parse('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc
3 | ewri2
12 |
13 |
- 12 |
- :
+ 12 | +
+ |
19 | /usr/local/fff
12 |
19 | /awdf/dwqe/4325
@@ -775,8 +775,8 @@ select * from parse('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc
20 | -4.2
12 | .
22 | 234
- 12 |
- :
+ 12 | +
+ |
12 | <
1 | i
12 |
@@ -2330,8 +2330,8 @@ Upon a woman s face. E. J. Pratt (1882 1964)
', to_tsquery('sea&thousand&years'));
headline
--------------------------------------------
- sea a thousand years,
- A thousand years to trace
+ sea a thousand years,+
+ A thousand years to trace +
The granite features of this cliff
(1 row)
@@ -2347,8 +2347,8 @@ Upon a woman s face. E. J. Pratt (1882 1964)
', to_tsquery('granite&sea'));
headline
-------------------------------------------
- sea a thousand years,
- A thousand years to trace
+ sea a thousand years, +
+ A thousand years to trace +
The granite features of this cliff
(1 row)
@@ -2364,8 +2364,8 @@ Upon a woman s face. E. J. Pratt (1882 1964)
', to_tsquery('sea'));
headline
------------------------------------
- sea a thousand years,
- A thousand years to trace
+ sea a thousand years, +
+ A thousand years to trace +
The granite features of this cliff
(1 row)
@@ -2384,17 +2384,17 @@ ff-bg
to_tsquery('sea&foo'), 'HighlightAll=true');
headline
-----------------------------------------------------------------------------
-
-
-
-
- Sea view wow foo bar qq
- YES
- ff-bg
-
-
+ +
+ +
+ +
+ +
+ Sea view wow foo bar qq +
+ YES +
+ ff-bg +
+ +
+ +
(1 row)
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index bbccb3b87b..95ce850195 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -1,5 +1,5 @@
@@ -1765,30 +1765,54 @@ lo_import 152801
Sets the border line drawing style to one
- of ascii or unicode.
+ of ascii, old-ascii
+ or unicode.
Unique abbreviations are allowed. (That would mean one
letter is enough.)
- ASCII
uses plain ASCII characters.
+ ascii style uses plain ASCII
+ characters. Newlines in data are shown using
+ a + symbol in the right-hand margin.
+ When the data wraps from one line
+ to the next without a newline character, a dot (.>)
+ is shown in the right-hand margin of the first line, and
+ again in the left-hand margin of the following line.
- Unicode
uses Unicode box-drawing characters.
+ old-ascii style uses plain ASCII>
+ characters, using the formatting style used
+ in PostgreSQL 8.4 and earlier.
+ Newlines in data are shown using a :
+ symbol in place of the left-hand column separator.
+ When the data wraps from one line
+ to the next without a newline character, a ;>
+ symbol is used in place of the left-hand column separator.
+
+
+
+ unicode style uses Unicode box-drawing characters.
+ Newlines in data are shown using a carriage return symbol
+ in the right-hand margin. When the data wraps from one line
+ to the next without a newline character, an ellipsis symbol
+ is shown in the right-hand margin of the first line, and
+ again in the left-hand margin of the following line.
When the selected output format is one that draws lines or boxes
- around the data, this setting controls how the lines are drawn.
+ around the data, this setting also determines the characters
+ with which the lines are drawn.
Plain ASCII characters work everywhere, but
Unicode characters look nicer on displays that recognize them.
- If this option has not been set, the default behavior is to
- use Unicode characters if the client character set encoding
- is UTF-8, otherwise ASCII characters.
+ If this option has not been set, the default behavior is to use
+ unicode style if the client character set encoding
+ is UTF-8, otherwise ascii style.
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index 6ce10caa2b..5a356b9b5e 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2009, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.210 2009/10/13 21:04:01 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.211 2009/11/22 05:20:41 tgl Exp $
*/
#include "postgres_fe.h"
#include "command.h"
@@ -1795,11 +1795,13 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet)
;
else if (pg_strncasecmp("ascii", value, vallen) == 0)
popt->topt.line_style = &pg_asciiformat;
+ else if (pg_strncasecmp("old-ascii", value, vallen) == 0)
+ popt->topt.line_style = &pg_asciiformat_old;
else if (pg_strncasecmp("unicode", value, vallen) == 0)
popt->topt.line_style = &pg_utf8format;
else
{
- psql_error("\\pset: allowed line styles are ascii, unicode\n");
+ psql_error("\\pset: allowed line styles are ascii, old-ascii, unicode\n");
return false;
}
diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c
index 80dd304f1e..b7fdc47794 100644
--- a/src/bin/psql/print.c
+++ b/src/bin/psql/print.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2009, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.117 2009/10/13 21:04:01 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.118 2009/11/22 05:20:41 tgl Exp $
*/
#include "postgres_fe.h"
@@ -54,9 +54,37 @@ const printTextFormat pg_asciiformat =
{ "-", "+", "+", "+" },
{ "", "|", "|", "|" }
},
+ "|",
+ "|",
+ "|",
+ " ",
+ "+",
+ " ",
+ "+",
+ ".",
+ ".",
+ true
+};
+
+const printTextFormat pg_asciiformat_old =
+{
+ "old-ascii",
+ {
+ { "-", "+", "+", "+" },
+ { "-", "+", "+", "+" },
+ { "-", "+", "+", "+" },
+ { "", "|", "|", "|" }
+ },
":",
";",
- " "
+ " ",
+ "+",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ false
};
const printTextFormat pg_utf8format =
@@ -72,12 +100,23 @@ const printTextFormat pg_utf8format =
/* N/A, │, │, │ */
{ "", "\342\224\202", "\342\224\202", "\342\224\202" }
},
- /* ╎ */
- "\342\225\216",
- /* ┊ */
- "\342\224\212",
- /* ╷ */
- "\342\225\267"
+ /* │ */
+ "\342\224\202",
+ /* │ */
+ "\342\224\202",
+ /* │ */
+ "\342\224\202",
+ " ",
+ /* ↵ */
+ "\342\206\265",
+ " ",
+ /* ↵ */
+ "\342\206\265",
+ /* … */
+ "\342\200\246",
+ /* … */
+ "\342\200\246",
+ true
};
@@ -476,6 +515,7 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
bool *header_done; /* Have all header lines been output? */
int *bytes_output; /* Bytes output for column value */
+ printTextLineWrap *wrap; /* Wrap status for each column */
int output_columns = 0; /* Width of interactive console */
bool is_pager = false;
@@ -499,6 +539,7 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
format_buf = pg_local_calloc(col_count, sizeof(*format_buf));
header_done = pg_local_calloc(col_count, sizeof(*header_done));
bytes_output = pg_local_calloc(col_count, sizeof(*bytes_output));
+ wrap = pg_local_calloc(col_count, sizeof(*wrap));
}
else
{
@@ -513,6 +554,7 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
format_buf = NULL;
header_done = NULL;
bytes_output = NULL;
+ wrap = NULL;
}
/* scan all column headers, find maximum width and max max_nl_lines */
@@ -575,7 +617,7 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
/* adjust the total display width based on border style */
if (opt_border == 0)
- width_total = col_count - 1;
+ width_total = col_count;
else if (opt_border == 1)
width_total = col_count * 3 - 1;
else
@@ -770,16 +812,18 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
while (more_col_wrapping)
{
if (opt_border == 2)
- fprintf(fout, "%s%c", dformat->leftvrule,
- curr_nl_line ? '+' : ' ');
- else if (opt_border == 1)
- fputc(curr_nl_line ? '+' : ' ', fout);
+ fputs(dformat->leftvrule, fout);
for (i = 0; i < cont->ncolumns; i++)
{
struct lineptr *this_line = col_lineptrs[i] + curr_nl_line;
unsigned int nbspace;
+ if (opt_border != 0 ||
+ (format->wrap_right_border == false && i > 0))
+ fputs(curr_nl_line ? format->header_nl_left : " ",
+ fout);
+
if (!header_done[i])
{
nbspace = width_wrap[i] - this_line->width;
@@ -796,21 +840,18 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
}
else
fprintf(fout, "%*s", width_wrap[i], "");
- if (i < col_count - 1)
- {
- if (opt_border == 0)
- fputc(curr_nl_line ? '+' : ' ', fout);
- else
- fprintf(fout, " %s%c", dformat->midvrule,
- curr_nl_line ? '+' : ' ');
- }
+
+ if (opt_border != 0 || format->wrap_right_border == true)
+ fputs(!header_done[i] ? format->header_nl_right : " ",
+ fout);
+
+ if (opt_border != 0 && i < col_count - 1)
+ fputs(dformat->midvrule, fout);
}
curr_nl_line++;
if (opt_border == 2)
- fprintf(fout, " %s", dformat->rightvrule);
- else if (opt_border == 1)
- fputc(' ', fout);
+ fputs(dformat->rightvrule, fout);
fputc('\n', fout);
}
@@ -861,9 +902,7 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
/* left border */
if (opt_border == 2)
- fprintf(fout, "%s ", dformat->leftvrule);
- else if (opt_border == 1)
- fputc(' ', fout);
+ fputs(dformat->leftvrule, fout);
/* for each column */
for (j = 0; j < col_count; j++)
@@ -874,6 +913,17 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
int chars_to_output = width_wrap[j];
bool finalspaces = (opt_border == 2 || j < col_count - 1);
+ /* Print left-hand wrap or newline mark */
+ if (opt_border != 0)
+ {
+ if (wrap[j] == PRINT_LINE_WRAP_WRAP)
+ fputs(format->wrap_left, fout);
+ else if (wrap[j] == PRINT_LINE_WRAP_NEWLINE)
+ fputs(format->nl_left, fout);
+ else
+ fputc(' ', fout);
+ }
+
if (!this_line->ptr)
{
/* Past newline lines so just pad for other columns */
@@ -908,8 +958,6 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
/* spaces second */
fprintf(fout, "%.*s", bytes_to_output,
this_line->ptr + bytes_output[j]);
- if (finalspaces)
- fprintf(fout, "%*s", width_wrap[j] - chars_to_output, "");
}
bytes_output[j] += bytes_to_output;
@@ -927,29 +975,54 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
}
}
- /* print a divider, if not the last column */
- if (j < col_count - 1)
+ /* Determine next line's wrap status for this column */
+ wrap[j] = PRINT_LINE_WRAP_NONE;
+ if (col_lineptrs[j][curr_nl_line[j]].ptr != NULL)
{
- if (opt_border == 0)
- fputc(' ', fout);
- /* Next value is beyond past newlines? */
+ if (bytes_output[j] != 0)
+ wrap[j] = PRINT_LINE_WRAP_WRAP;
+ else if (curr_nl_line[j] != 0)
+ wrap[j] = PRINT_LINE_WRAP_NEWLINE;
+ }
+
+ /*
+ * If left-aligned, pad out remaining space if needed (not
+ * last column, and/or wrap marks required).
+ */
+ if (cont->aligns[j] != 'r') /* Left aligned cell */
+ {
+ if (finalspaces ||
+ wrap[j] == PRINT_LINE_WRAP_WRAP ||
+ wrap[j] == PRINT_LINE_WRAP_NEWLINE)
+ fprintf(fout, "%*s",
+ width_wrap[j] - chars_to_output, "");
+ }
+
+ /* Print right-hand wrap or newline mark */
+ if (wrap[j] == PRINT_LINE_WRAP_WRAP)
+ fputs(format->wrap_right, fout);
+ else if (wrap[j] == PRINT_LINE_WRAP_NEWLINE)
+ fputs(format->nl_right, fout);
+ else if (opt_border == 2 || j < col_count - 1)
+ fputc(' ', fout);
+
+ /* Print column divider, if not the last column */
+ if (opt_border != 0 && j < col_count - 1)
+ {
+ if (wrap[j+1] == PRINT_LINE_WRAP_WRAP)
+ fputs(format->midvrule_wrap, fout);
+ else if (wrap[j+1] == PRINT_LINE_WRAP_NEWLINE)
+ fputs(format->midvrule_nl, fout);
else if (col_lineptrs[j + 1][curr_nl_line[j + 1]].ptr == NULL)
- fprintf(fout, " %s ", format->midvrule_blank);
- /* In wrapping of value? */
- else if (bytes_output[j + 1] != 0)
- fprintf(fout, " %s ", format->midvrule_wrap);
- /* After first newline value */
- else if (curr_nl_line[j + 1] != 0)
- fprintf(fout, " %s ", format->midvrule_cont);
- /* Ordinary line */
+ fputs(format->midvrule_blank, fout);
else
- fprintf(fout, " %s ", dformat->midvrule);
+ fputs(dformat->midvrule, fout);
}
}
/* end-of-row border */
if (opt_border == 2)
- fprintf(fout, " %s", dformat->rightvrule);
+ fputs(dformat->rightvrule, fout);
fputc('\n', fout);
} while (more_lines);
@@ -1196,9 +1269,7 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
fprintf(fout, "%*s", hwidth, "");
if (opt_border > 0)
- fprintf(fout, " %s ",
- (line_count == 0) ?
- format->midvrule_cont : dformat->midvrule);
+ fprintf(fout, " %s ", dformat->midvrule);
else
fputc(' ', fout);
diff --git a/src/bin/psql/print.h b/src/bin/psql/print.h
index b09aac90f7..30df35d115 100644
--- a/src/bin/psql/print.h
+++ b/src/bin/psql/print.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2009, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/print.h,v 1.41 2009/10/13 21:04:01 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/print.h,v 1.42 2009/11/22 05:20:41 tgl Exp $
*/
#ifndef PRINT_H
#define PRINT_H
@@ -41,14 +41,30 @@ typedef enum printTextRule
PRINT_RULE_DATA /* data line (hrule is unused here) */
} printTextRule;
+typedef enum printTextLineWrap
+{
+ /* Line wrapping conditions */
+ PRINT_LINE_WRAP_NONE, /* No wrapping */
+ PRINT_LINE_WRAP_WRAP, /* Wraparound due to overlength line */
+ PRINT_LINE_WRAP_NEWLINE /* Newline in data */
+} printTextLineWrap;
+
typedef struct printTextFormat
{
/* A complete line style */
const char *name; /* for display purposes */
printTextLineFormat lrule[4]; /* indexed by enum printTextRule */
- const char *midvrule_cont; /* vertical line for continue after newline */
+ const char *midvrule_nl; /* vertical line for continue after newline */
const char *midvrule_wrap; /* vertical line for wrapped data */
const char *midvrule_blank; /* vertical line for blank data */
+ const char *header_nl_left; /* left mark after newline */
+ const char *header_nl_right; /* right mark for newline */
+ const char *nl_left; /* left mark after newline */
+ const char *nl_right; /* right mark for newline */
+ const char *wrap_left; /* left mark after wrapped data */
+ const char *wrap_right; /* right mark for wrapped data */
+ bool wrap_right_border; /* use right-hand border for wrap marks
+ * when border=0? */
} printTextFormat;
typedef struct printTableOpt
@@ -125,6 +141,7 @@ typedef struct printQueryOpt
extern const printTextFormat pg_asciiformat;
+extern const printTextFormat pg_asciiformat_old;
extern const printTextFormat pg_utf8format;
diff --git a/src/test/regress/expected/create_cast.out b/src/test/regress/expected/create_cast.out
index 67eaab2316..56cd86e00b 100644
--- a/src/test/regress/expected/create_cast.out
+++ b/src/test/regress/expected/create_cast.out
@@ -53,7 +53,7 @@ SELECT casttestfunc('foo'::text); -- Should work now
SELECT 1234::int4::casttesttype; -- No cast yet, should fail
ERROR: cannot cast type integer to casttesttype
LINE 1: SELECT 1234::int4::casttesttype;
- ^
+ ^
CREATE CAST (int4 AS casttesttype) WITH INOUT;
SELECT 1234::int4::casttesttype; -- Should work now
casttesttype
diff --git a/src/test/regress/expected/dependency.out b/src/test/regress/expected/dependency.out
index 6eb851a378..d0895fbd52 100644
--- a/src/test/regress/expected/dependency.out
+++ b/src/test/regress/expected/dependency.out
@@ -71,9 +71,9 @@ RESET SESSION AUTHORIZATION;
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+----------+-------+--------------------------------------------------+--------------------------
- public | deptest1 | table | regression_user0=arwdDxt/regression_user0 |
- : regression_user1=a*r*w*d*D*x*t*/regression_user0
- : regression_user2=arwdDxt/regression_user1
+ public | deptest1 | table | regression_user0=arwdDxt/regression_user0 +|
+ | | | regression_user1=a*r*w*d*D*x*t*/regression_user0+|
+ | | | regression_user2=arwdDxt/regression_user1 |
(1 row)
DROP OWNED BY regression_user1;
diff --git a/src/test/regress/expected/foreign_data.out b/src/test/regress/expected/foreign_data.out
index f8dd6e8773..bb3d167a2b 100644
--- a/src/test/regress/expected/foreign_data.out
+++ b/src/test/regress/expected/foreign_data.out
@@ -366,14 +366,14 @@ GRANT USAGE ON FOREIGN SERVER s6 TO regress_test_role2 WITH GRANT OPTION;
List of foreign servers
Name | Owner | Foreign-data wrapper | Access privileges | Type | Version | Options
------+-------------------+----------------------+-----------------------------------------+--------+---------+------------------------------
- s1 | foreign_data_user | foo | foreign_data_user=U/foreign_data_user | | 1.0 | {servername=s1}
- : regress_test_role=U/foreign_data_user
+ s1 | foreign_data_user | foo | foreign_data_user=U/foreign_data_user +| | 1.0 | {servername=s1}
+ | | | regress_test_role=U/foreign_data_user | | |
s2 | foreign_data_user | foo | | | 1.1 | {host=a,dbname=b}
s3 | foreign_data_user | foo | | oracle | | {tnsname=orcl,port=1521}
s4 | foreign_data_user | foo | | oracle | | {host=a,dbname=b}
s5 | foreign_data_user | foo | | | 15.0 |
- s6 | foreign_data_user | foo | foreign_data_user=U/foreign_data_user | | 16.0 | {host=a,dbname=b}
- : regress_test_role2=U*/foreign_data_user
+ s6 | foreign_data_user | foo | foreign_data_user=U/foreign_data_user +| | 16.0 | {host=a,dbname=b}
+ | | | regress_test_role2=U*/foreign_data_user | | |
s7 | foreign_data_user | foo | | oracle | 17.0 | {host=a,dbname=b}
s8 | foreign_data_user | postgresql | | | | {host=localhost,dbname=s8db}
t1 | regress_test_role | foo | | | |
@@ -417,14 +417,14 @@ access to foreign-data wrapper foo
List of foreign servers
Name | Owner | Foreign-data wrapper | Access privileges | Type | Version | Options
------+-----------------------+----------------------+-----------------------------------------+--------+---------+---------------------------------
- s1 | regress_test_indirect | foo | foreign_data_user=U/foreign_data_user | | 1.1 | {servername=s1}
- : regress_test_role=U/foreign_data_user
+ s1 | regress_test_indirect | foo | foreign_data_user=U/foreign_data_user +| | 1.1 | {servername=s1}
+ | | | regress_test_role=U/foreign_data_user | | |
s2 | foreign_data_user | foo | | | 1.1 | {host=a,dbname=b}
s3 | foreign_data_user | foo | | oracle | | {tnsname=orcl,port=1521}
s4 | foreign_data_user | foo | | oracle | | {host=a,dbname=b}
s5 | foreign_data_user | foo | | | 15.0 |
- s6 | foreign_data_user | foo | foreign_data_user=U/foreign_data_user | | 16.0 | {host=a,dbname=b}
- : regress_test_role2=U*/foreign_data_user
+ s6 | foreign_data_user | foo | foreign_data_user=U/foreign_data_user +| | 16.0 | {host=a,dbname=b}
+ | | | regress_test_role2=U*/foreign_data_user | | |
s7 | foreign_data_user | foo | | oracle | 17.0 | {host=a,dbname=b}
s8 | foreign_data_user | postgresql | | | | {dbname=db1,connect_timeout=30}
t1 | regress_test_role | foo | | | |
diff --git a/src/test/regress/expected/foreign_key.out b/src/test/regress/expected/foreign_key.out
index c805322b6d..33e0edba03 100644
--- a/src/test/regress/expected/foreign_key.out
+++ b/src/test/regress/expected/foreign_key.out
@@ -85,10 +85,10 @@ INSERT INTO FKTABLE VALUES (NULL, NULL, 0);
-- Insert failed rows into FK TABLE
INSERT INTO FKTABLE VALUES (100, 2, 4);
ERROR: insert or update on table "fktable" violates foreign key constraint "constrname"
-DETAIL: Key (ftest1,ftest2)=(100,2) is not present in table "pktable".
+DETAIL: Key (ftest1, ftest2)=(100, 2) is not present in table "pktable".
INSERT INTO FKTABLE VALUES (2, 2, 4);
ERROR: insert or update on table "fktable" violates foreign key constraint "constrname"
-DETAIL: Key (ftest1,ftest2)=(2,2) is not present in table "pktable".
+DETAIL: Key (ftest1, ftest2)=(2, 2) is not present in table "pktable".
INSERT INTO FKTABLE VALUES (NULL, 2, 4);
ERROR: insert or update on table "fktable" violates foreign key constraint "constrname"
DETAIL: MATCH FULL does not allow mixing of null and nonnull key values.
@@ -195,10 +195,10 @@ INSERT INTO FKTABLE VALUES (NULL, NULL, 0);
-- Insert failed rows into FK TABLE
INSERT INTO FKTABLE VALUES (100, 2, 4);
ERROR: insert or update on table "fktable" violates foreign key constraint "constrname2"
-DETAIL: Key (ftest1,ftest2)=(100,2) is not present in table "pktable".
+DETAIL: Key (ftest1, ftest2)=(100, 2) is not present in table "pktable".
INSERT INTO FKTABLE VALUES (2, 2, 4);
ERROR: insert or update on table "fktable" violates foreign key constraint "constrname2"
-DETAIL: Key (ftest1,ftest2)=(2,2) is not present in table "pktable".
+DETAIL: Key (ftest1, ftest2)=(2, 2) is not present in table "pktable".
INSERT INTO FKTABLE VALUES (NULL, 2, 4);
ERROR: insert or update on table "fktable" violates foreign key constraint "constrname2"
DETAIL: MATCH FULL does not allow mixing of null and nonnull key values.
@@ -359,7 +359,7 @@ INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5);
-- Insert a failed values
INSERT INTO FKTABLE VALUES (1, 2, 7, 6);
ERROR: insert or update on table "fktable" violates foreign key constraint "constrname3"
-DETAIL: Key (ftest1,ftest2,ftest3)=(1,2,7) is not present in table "pktable".
+DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "pktable".
-- Show FKTABLE
SELECT * from FKTABLE;
ftest1 | ftest2 | ftest3 | ftest4
@@ -374,13 +374,13 @@ SELECT * from FKTABLE;
-- Try to update something that should fail
UPDATE PKTABLE set ptest2=5 where ptest2=2;
ERROR: update or delete on table "pktable" violates foreign key constraint "constrname3" on table "fktable"
-DETAIL: Key (ptest1,ptest2,ptest3)=(1,2,3) is still referenced from table "fktable".
+DETAIL: Key (ptest1, ptest2, ptest3)=(1, 2, 3) is still referenced from table "fktable".
-- Try to update something that should succeed
UPDATE PKTABLE set ptest1=1 WHERE ptest2=3;
-- Try to delete something that should fail
DELETE FROM PKTABLE where ptest1=1 and ptest2=2 and ptest3=3;
ERROR: update or delete on table "pktable" violates foreign key constraint "constrname3" on table "fktable"
-DETAIL: Key (ptest1,ptest2,ptest3)=(1,2,3) is still referenced from table "fktable".
+DETAIL: Key (ptest1, ptest2, ptest3)=(1, 2, 3) is still referenced from table "fktable".
-- Try to delete something that should work
DELETE FROM PKTABLE where ptest1=2;
-- Show PKTABLE and FKTABLE
@@ -424,7 +424,7 @@ INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5);
-- Insert a failed values
INSERT INTO FKTABLE VALUES (1, 2, 7, 6);
ERROR: insert or update on table "fktable" violates foreign key constraint "constrname3"
-DETAIL: Key (ftest1,ftest2,ftest3)=(1,2,7) is not present in table "pktable".
+DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "pktable".
-- Show FKTABLE
SELECT * from FKTABLE;
ftest1 | ftest2 | ftest3 | ftest4
@@ -522,7 +522,7 @@ INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5);
-- Insert a failed values
INSERT INTO FKTABLE VALUES (1, 2, 7, 6);
ERROR: insert or update on table "fktable" violates foreign key constraint "constrname3"
-DETAIL: Key (ftest1,ftest2,ftest3)=(1,2,7) is not present in table "pktable".
+DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "pktable".
-- Show FKTABLE
SELECT * from FKTABLE;
ftest1 | ftest2 | ftest3 | ftest4
@@ -628,7 +628,7 @@ INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5);
-- Insert a failed values
INSERT INTO FKTABLE VALUES (1, 2, 7, 6);
ERROR: insert or update on table "fktable" violates foreign key constraint "constrname3"
-DETAIL: Key (ftest1,ftest2,ftest3)=(1,2,7) is not present in table "pktable".
+DETAIL: Key (ftest1, ftest2, ftest3)=(1, 2, 7) is not present in table "pktable".
-- Show FKTABLE
SELECT * from FKTABLE;
ftest1 | ftest2 | ftest3 | ftest4
@@ -645,7 +645,7 @@ SELECT * from FKTABLE;
-- Try to update something that will fail
UPDATE PKTABLE set ptest2=5 where ptest2=2;
ERROR: insert or update on table "fktable" violates foreign key constraint "constrname3"
-DETAIL: Key (ftest1,ftest2,ftest3)=(1,-1,3) is not present in table "pktable".
+DETAIL: Key (ftest1, ftest2, ftest3)=(1, -1, 3) is not present in table "pktable".
-- Try to update something that will set default
UPDATE PKTABLE set ptest1=0, ptest2=5, ptest3=10 where ptest2=2;
UPDATE PKTABLE set ptest2=10 where ptest2=4;
@@ -896,19 +896,19 @@ insert into pktable(base1, ptest1) values (2, 2);
-- let's insert a non-existant fktable value
insert into fktable(ftest1, ftest2) values (3, 1);
ERROR: insert or update on table "fktable" violates foreign key constraint "fktable_ftest1_fkey"
-DETAIL: Key (ftest1,ftest2)=(3,1) is not present in table "pktable".
+DETAIL: Key (ftest1, ftest2)=(3, 1) is not present in table "pktable".
-- let's make a valid row for that
insert into pktable(base1,ptest1) values (3, 1);
insert into fktable(ftest1, ftest2) values (3, 1);
-- let's try removing a row that should fail from pktable
delete from pktable where base1>2;
ERROR: update or delete on table "pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "fktable"
-DETAIL: Key (base1,ptest1)=(3,1) is still referenced from table "fktable".
+DETAIL: Key (base1, ptest1)=(3, 1) is still referenced from table "fktable".
-- okay, let's try updating all of the base1 values to *4
-- which should fail.
update pktable set base1=base1*4;
ERROR: update or delete on table "pktable" violates foreign key constraint "fktable_ftest1_fkey" on table "fktable"
-DETAIL: Key (base1,ptest1)=(3,1) is still referenced from table "fktable".
+DETAIL: Key (base1, ptest1)=(3, 1) is still referenced from table "fktable".
-- okay, let's try an update that should work.
update pktable set base1=base1*4 where base1<3;
-- and a delete that should work
@@ -929,15 +929,15 @@ insert into pktable (base1, ptest1, base2, ptest2) values (1, 3, 2, 2);
-- fails (3,2) isn't in base1, ptest1
insert into pktable (base1, ptest1, base2, ptest2) values (2, 3, 3, 2);
ERROR: insert or update on table "pktable" violates foreign key constraint "pktable_base2_fkey"
-DETAIL: Key (base2,ptest2)=(3,2) is not present in table "pktable".
+DETAIL: Key (base2, ptest2)=(3, 2) is not present in table "pktable".
-- fails (2,2) is being referenced
delete from pktable where base1=2;
ERROR: update or delete on table "pktable" violates foreign key constraint "pktable_base2_fkey" on table "pktable"
-DETAIL: Key (base1,ptest1)=(2,2) is still referenced from table "pktable".
+DETAIL: Key (base1, ptest1)=(2, 2) is still referenced from table "pktable".
-- fails (1,1) is being referenced (twice)
update pktable set base1=3 where base1=1;
ERROR: update or delete on table "pktable" violates foreign key constraint "pktable_base2_fkey" on table "pktable"
-DETAIL: Key (base1,ptest1)=(1,1) is still referenced from table "pktable".
+DETAIL: Key (base1, ptest1)=(1, 1) is still referenced from table "pktable".
-- this sequence of two deletes will work, since after the first there will be no (2,*) references
delete from pktable where base2=2;
delete from pktable where base1=2;
diff --git a/src/test/regress/expected/guc.out b/src/test/regress/expected/guc.out
index 1fd2b98f6e..83cacbdd20 100644
--- a/src/test/regress/expected/guc.out
+++ b/src/test/regress/expected/guc.out
@@ -685,7 +685,7 @@ language plpgsql
set work_mem = '1MB';
select myfunc(0);
ERROR: division by zero
-CONTEXT: SQL statement "SELECT 1/ $1 "
+CONTEXT: SQL statement "SELECT 1/$1"
PL/pgSQL function "myfunc" line 3 at PERFORM
select current_setting('work_mem');
current_setting
diff --git a/src/test/regress/expected/prepare.out b/src/test/regress/expected/prepare.out
index 610f259123..7016e82bd4 100644
--- a/src/test/regress/expected/prepare.out
+++ b/src/test/regress/expected/prepare.out
@@ -154,20 +154,20 @@ SELECT name, statement, parameter_types FROM pg_prepared_statements
ORDER BY name;
name | statement | parameter_types
------+---------------------------------------------------------------------+--------------------------------------------------------
- q2 | PREPARE q2(text) AS | {text}
- : SELECT datname, datistemplate, datallowconn
- : FROM pg_database WHERE datname = $1;
- q3 | PREPARE q3(text, int, float, boolean, oid, smallint) AS | {text,integer,"double precision",boolean,oid,smallint}
- : SELECT * FROM tenk1 WHERE string4 = $1 AND (four = $2 OR
- : ten = $3::bigint OR true = $4 OR oid = $5 OR odd = $6::int)
- : ORDER BY unique1;
- q5 | PREPARE q5(int, text) AS | {integer,text}
- : SELECT * FROM tenk1 WHERE unique1 = $1 OR stringu1 = $2
- : ORDER BY unique1;
- q6 | PREPARE q6 AS | {integer,name}
- : SELECT * FROM tenk1 WHERE unique1 = $1 AND stringu1 = $2;
- q7 | PREPARE q7(unknown) AS | {path}
- : SELECT * FROM road WHERE thepath = $1;
+ q2 | PREPARE q2(text) AS +| {text}
+ | SELECT datname, datistemplate, datallowconn +|
+ | FROM pg_database WHERE datname = $1; |
+ q3 | PREPARE q3(text, int, float, boolean, oid, smallint) AS +| {text,integer,"double precision",boolean,oid,smallint}
+ | SELECT * FROM tenk1 WHERE string4 = $1 AND (four = $2 OR +|
+ | ten = $3::bigint OR true = $4 OR oid = $5 OR odd = $6::int)+|
+ | ORDER BY unique1; |
+ q5 | PREPARE q5(int, text) AS +| {integer,text}
+ | SELECT * FROM tenk1 WHERE unique1 = $1 OR stringu1 = $2 +|
+ | ORDER BY unique1; |
+ q6 | PREPARE q6 AS +| {integer,name}
+ | SELECT * FROM tenk1 WHERE unique1 = $1 AND stringu1 = $2; |
+ q7 | PREPARE q7(unknown) AS +| {path}
+ | SELECT * FROM road WHERE thepath = $1; |
(5 rows)
-- test DEALLOCATE ALL;
diff --git a/src/test/regress/expected/triggers.out b/src/test/regress/expected/triggers.out
index aa74083380..2e305e699c 100644
--- a/src/test/regress/expected/triggers.out
+++ b/src/test/regress/expected/triggers.out
@@ -377,10 +377,10 @@ SELECT * FROM main_table ORDER BY a, b;
SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_a';
pg_get_triggerdef
--------------------------------------------------
- CREATE TRIGGER modified_a
- BEFORE UPDATE OF a ON main_table
- FOR EACH ROW
- WHEN (old.a <> new.a)
+ CREATE TRIGGER modified_a +
+ BEFORE UPDATE OF a ON main_table +
+ FOR EACH ROW +
+ WHEN (old.a <> new.a) +
EXECUTE PROCEDURE trigger_func('modified_a')
(1 row)
@@ -393,10 +393,10 @@ SELECT pg_get_triggerdef(oid, false) FROM pg_trigger WHERE tgrelid = 'main_table
SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_any';
pg_get_triggerdef
----------------------------------------------------
- CREATE TRIGGER modified_any
- BEFORE UPDATE OF a ON main_table
- FOR EACH ROW
- WHEN (old.* IS DISTINCT FROM new.*)
+ CREATE TRIGGER modified_any +
+ BEFORE UPDATE OF a ON main_table +
+ FOR EACH ROW +
+ WHEN (old.* IS DISTINCT FROM new.*) +
EXECUTE PROCEDURE trigger_func('modified_any')
(1 row)
@@ -427,9 +427,9 @@ SELECT pg_get_triggerdef(oid) FROM pg_trigger WHERE tgrelid = 'main_table'::regc
SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'after_upd_a_b_row_trig';
pg_get_triggerdef
---------------------------------------------------------
- CREATE TRIGGER after_upd_a_b_row_trig
- AFTER UPDATE OF a, b ON main_table
- FOR EACH ROW
+ CREATE TRIGGER after_upd_a_b_row_trig +
+ AFTER UPDATE OF a, b ON main_table +
+ FOR EACH ROW +
EXECUTE PROCEDURE trigger_func('after_upd_a_b_row')
(1 row)
diff --git a/src/test/regress/expected/tsearch.out b/src/test/regress/expected/tsearch.out
index 04b75dc6d0..1cd9186d69 100644
--- a/src/test/regress/expected/tsearch.out
+++ b/src/test/regress/expected/tsearch.out
@@ -344,8 +344,8 @@ SELECT * FROM ts_parse('default', '345 qwe@efd.r '' http://www.com/ http://aew.w
3 | ewri2
12 |
13 |
- 12 |
- :
+ 12 | +
+ |
19 | /usr/local/fff
12 |
19 | /awdf/dwqe/4325
@@ -377,8 +377,8 @@ SELECT * FROM ts_parse('default', '345 qwe@efd.r '' http://www.com/ http://aew.w
20 | -4.2
12 | .
22 | 234
- 12 |
- :
+ 12 | +
+ |
12 | <
1 | i
12 |
@@ -559,9 +559,9 @@ S. T. Coleridge (1772-1834)
', to_tsquery('english', 'paint&water'));
ts_headline
-----------------------------------------
- painted Ocean.
- Water, water, every where
- And all the boards did shrink;
+ painted Ocean. +
+ Water, water, every where+
+ And all the boards did shrink; +
Water, water, every
(1 row)
@@ -578,9 +578,9 @@ S. T. Coleridge (1772-1834)
', to_tsquery('english', 'breath&motion&water'));
ts_headline
----------------------------------
- breath nor motion,
- As idle as a painted Ship
- Upon a painted Ocean.
+ breath nor motion,+
+ As idle as a painted Ship +
+ Upon a painted Ocean. +
Water, water
(1 row)
@@ -597,9 +597,9 @@ S. T. Coleridge (1772-1834)
', to_tsquery('english', 'ocean'));
ts_headline
----------------------------------
- Ocean.
- Water, water, every where
- And all the boards did shrink;
+ Ocean. +
+ Water, water, every where +
+ And all the boards did shrink;+
Water, water, every where
(1 row)
@@ -618,17 +618,17 @@ ff-bg
to_tsquery('english', 'sea&foo'), 'HighlightAll=true');
ts_headline
-----------------------------------------------------------------------------
-
-
-
-
- Sea view wow foo bar qq
- YES
- ff-bg
-
-
+ +
+ +
+ +
+ +
+ Sea view wow foo bar qq +
+ YES +
+ ff-bg +
+ +
+ +
(1 row)
@@ -646,13 +646,13 @@ S. T. Coleridge (1772-1834)
', to_tsquery('english', 'ocean'), 'MaxFragments=1');
ts_headline
------------------------------------
- after day,
- We stuck, nor breath nor motion,
- As idle as a painted Ship
- Upon a painted Ocean.
- Water, water, every where
- And all the boards did shrink;
- Water, water, every where,
+ after day, +
+ We stuck, nor breath nor motion,+
+ As idle as a painted Ship +
+ Upon a painted Ocean. +
+ Water, water, every where +
+ And all the boards did shrink; +
+ Water, water, every where, +
Nor any drop
(1 row)
@@ -670,13 +670,13 @@ S. T. Coleridge (1772-1834)
', to_tsquery('english', 'Coleridge & stuck'), 'MaxFragments=2');
ts_headline
----------------------------------------------
- after day, day after day,
- We stuck, nor breath nor motion,
- As idle as a painted Ship
- Upon a painted Ocean.
- Water, water, every where
- And all the boards did shrink;
- Water, water, every where ... drop to drink.
+ after day, day after day, +
+ We stuck, nor breath nor motion, +
+ As idle as a painted Ship +
+ Upon a painted Ocean. +
+ Water, water, every where +
+ And all the boards did shrink; +
+ Water, water, every where ... drop to drink.+
S. T. Coleridge
(1 row)
@@ -694,9 +694,9 @@ S. T. Coleridge (1772-1834)
', to_tsquery('english', 'ocean & seahorse'), 'MaxFragments=1');
ts_headline
------------------------------------
-
- Day after day, day after day,
- We stuck, nor breath nor motion,
+ +
+ Day after day, day after day, +
+ We stuck, nor breath nor motion,+
As idle as
(1 row)
@@ -714,13 +714,13 @@ S. T. Coleridge (1772-1834)
', to_tsquery('english', 'Coleridge & stuck'), 'MaxFragments=2,FragmentDelimiter=***');
ts_headline
--------------------------------------------
- after day, day after day,
- We stuck, nor breath nor motion,
- As idle as a painted Ship
- Upon a painted Ocean.
- Water, water, every where
- And all the boards did shrink;
- Water, water, every where***drop to drink.
+ after day, day after day, +
+ We stuck, nor breath nor motion, +
+ As idle as a painted Ship +
+ Upon a painted Ocean. +
+ Water, water, every where +
+ And all the boards did shrink; +
+ Water, water, every where***drop to drink.+
S. T. Coleridge
(1 row)
diff --git a/src/test/regress/expected/with.out b/src/test/regress/expected/with.out
index a3e94e93d4..e46ed78ae6 100644
--- a/src/test/regress/expected/with.out
+++ b/src/test/regress/expected/with.out
@@ -279,16 +279,16 @@ SELECT pg_get_viewdef('vsubdepartment'::regclass);
SELECT pg_get_viewdef('vsubdepartment'::regclass, true);
pg_get_viewdef
--------------------------------------------------------------------------------------
- WITH RECURSIVE subdepartment AS (
- SELECT department.id, department.parent_department, department.name
- FROM department
- WHERE department.name = 'A'::text
- UNION ALL
- SELECT d.id, d.parent_department, d.name
- FROM department d, subdepartment sd
- WHERE d.parent_department = sd.id
- )
- SELECT subdepartment.id, subdepartment.parent_department, subdepartment.name
+ WITH RECURSIVE subdepartment AS ( +
+ SELECT department.id, department.parent_department, department.name+
+ FROM department +
+ WHERE department.name = 'A'::text +
+ UNION ALL +
+ SELECT d.id, d.parent_department, d.name +
+ FROM department d, subdepartment sd +
+ WHERE d.parent_department = sd.id +
+ ) +
+ SELECT subdepartment.id, subdepartment.parent_department, subdepartment.name +
FROM subdepartment;
(1 row)