Hi 2014-11-07 22:37 GMT+01:00 Alvaro Herrera <alvhe...@2ndquadrant.com>:
> > I did \o /tmp/tst, then > \dS > create table "eh | oh" (); > \dS > > and then filtered the output file to HTML. The CREATE TABLE tag ended > up in the same line as the title of the following table. I think > there's a newline is missing somewhere. > > The good news is that the | in the table name was processed correctly; > but I noticed that the table title is not using the escaped print, so I > would imagine that if I put a | in the title, things would go wrong. > (I don't know how to put titles on tables other than editing the > hardcoded titles for \ commands in psql). > > Another thing is that spaces around the | seem gratuituous and produce > bad results. I tried "select * from pg_class" which results in a very > wide table, and then the HTML output contains some cells with the values > in the second line; this makes all rows taller than they must be, > because some cells use the first line and other cells in the same row > use the second line for the text. I hand-edited the asciidoc and > removed the spaces around | which makes the result nicer. (Maybe > removing the trailing space is enough.) > I see a trailing spaces, but I don't see a described effect. Please, can you send some more specific test case? I fixed a status view and removing trailing spaces Regards Pavel > > -- > Álvaro Herrera http://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Training & Services >
commit 76e033f3a287115f15f249c657b544c148e2efd2 Author: Pavel Stehule <pavel.steh...@gooddata.com> Date: Sun Nov 16 23:38:46 2014 +0100 every table is in own paragraph diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index e7fcc73..cd64b88 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -2092,8 +2092,8 @@ lo_import 152801 <literal>aligned</literal>, <literal>wrapped</literal>, <literal>html</literal>, <literal>latex</literal> (uses <literal>tabular</literal>), - <literal>latex-longtable</literal>, or - <literal>troff-ms</literal>. + <literal>latex-longtable</literal>, + <literal>troff-ms</literal>, or <literal>asciidoc</literal>. Unique abbreviations are allowed. (That would mean one letter is enough.) </para> @@ -2120,7 +2120,8 @@ lo_import 152801 <para> The <literal>html</>, <literal>latex</>, - <literal>latex-longtable</literal>, and <literal>troff-ms</> + <literal>latex-longtable</literal>, <literal>troff-ms</>, + and <literal>asciidoc</> formats put out tables that are intended to be included in documents using the respective mark-up language. They are not complete documents! This might not be diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 26089352..e00e47b 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -2248,6 +2248,9 @@ _align2string(enum printFormat in) case PRINT_TROFF_MS: return "troff-ms"; break; + case PRINT_ASCIIDOC: + return "asciidoc"; + break; } return "unknown"; } @@ -2321,9 +2324,11 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet) popt->topt.format = PRINT_LATEX_LONGTABLE; else if (pg_strncasecmp("troff-ms", value, vallen) == 0) popt->topt.format = PRINT_TROFF_MS; + else if (pg_strncasecmp("asciidoc", value, vallen) == 0) + popt->topt.format = PRINT_ASCIIDOC; else { - psql_error("\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-ms\n"); + psql_error("\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-ms, asciidoc\n"); return false; } diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 66d80b5..ea8b9c1 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -858,6 +858,10 @@ PrintQueryStatus(PGresult *results) html_escaped_print(PQcmdStatus(results), pset.queryFout); fputs("</p>\n", pset.queryFout); } + else if (pset.popt.topt.format == PRINT_ASCIIDOC) + { + fprintf(pset.queryFout, "\n%s\n", PQcmdStatus(results)); + } else fprintf(pset.queryFout, "%s\n", PQcmdStatus(results)); } diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c index ae5fe88..b14b313 100644 --- a/src/bin/psql/help.c +++ b/src/bin/psql/help.c @@ -351,7 +351,7 @@ helpVariables(unsigned short int pager) fprintf(output, _(" expanded (or x) toggle expanded output\n")); fprintf(output, _(" fieldsep field separator for unaligned output (default '|')\n")); fprintf(output, _(" fieldsep_zero set field separator in unaligned mode to zero\n")); - fprintf(output, _(" format set output format [unaligned, aligned, wrapped, html, latex, ..]\n")); + fprintf(output, _(" format set output format [unaligned, aligned, wrapped, html, latex, asciidoc ..]\n")); fprintf(output, _(" footer enable or disable display of the table footer [on, off]\n")); fprintf(output, _(" linestyle set the border line drawing style [ascii, old-ascii, unicode]\n")); fprintf(output, _(" null set the string to be printed in place of a null value\n")); diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c index 3b3c3b7..3a8eb26 100644 --- a/src/bin/psql/print.c +++ b/src/bin/psql/print.c @@ -2475,6 +2475,232 @@ print_troff_ms_vertical(const printTableContent *cont, FILE *fout) } } +/*************************/ +/* ASCIIDOC */ +/*************************/ + +static void +asciidoc_escaped_print(const char *in, FILE *fout) +{ + const char *p; + for (p = in; *p; p++) + { + switch(*p) + { + case '|': + fputs("\\|", fout); + break; + default: + fputc(*p, fout); + } + } +} + +static void +print_asciidoc_text(const printTableContent *cont, FILE *fout) +{ + bool opt_tuples_only = cont->opt->tuples_only; + unsigned short opt_border = cont->opt->border; + unsigned int i; + const char *const * ptr; + + if (cancel_pressed) + return; + + if (cont->opt->start_table) + { + /* print table in new paragraph - enforce preliminary new line */ + fputs("\n", fout); + + /* print title */ + if (!opt_tuples_only && cont->title) + { + fputs(".", fout); + fputs(cont->title, fout); + fputs("\n", fout); + } + + /* print table [] header definition */ + fputs("[options=\"header\",cols=\"", fout); + for(i = 0; i < cont->ncolumns; i++) + { + if (i != 0) + fputs(",", fout); + fprintf(fout, "%s", cont->aligns[(i) % cont->ncolumns] == 'r' ? ">l" : "<l"); + } + fputs("\"", fout); + switch (opt_border) + { + case 0: + fputs(",frame=\"none\",grid=\"none\"", fout); + break; + case 1: + fputs(",frame=\"none\"", fout); + break; + case 2: + fputs(",frame=\"all\",grid=\"all\"", fout); + break; + } + fputs("]\n", fout); + fputs("|====\n", fout); + + /* print headers */ + if (!opt_tuples_only) + { + for (ptr = cont->headers; *ptr; ptr++) + { + fputs("^l| ", fout); + asciidoc_escaped_print(*ptr, fout); + fputs(" ", fout); + } + fputs("\n", fout); + } + } + + /* print cells */ + for (i = 0, ptr = cont->cells; *ptr; i++, ptr++) + { + if (i % cont->ncolumns == 0) + { + if (cancel_pressed) + break; + } + + fputs("|", fout); + + /* protect against needless spaces */ + if (((*ptr)[strspn(*ptr, " \t")] == '\0') || ((*ptr)[strspn(*ptr, " ")] == '\0')) + { + if ((i + 1) % cont->ncolumns != 0) + { + fputs(" ", fout); + continue; + } + } + else + { + fputs(" ", fout); + asciidoc_escaped_print(*ptr, fout); + } + + if ((i + 1) % cont->ncolumns == 0) + fputs("\n", fout); + else + fputs(" ", fout); + } + + fputs("|====\n", fout); + + if (cont->opt->stop_table) + { + printTableFooter *footers = footers_with_default(cont); + + /* print footers */ + if (!opt_tuples_only && footers != NULL && !cancel_pressed) + { + printTableFooter *f; + + fputs("\n....\n", fout); + for (f = footers; f; f = f->next) + { + fputs(f->data, fout); + fputs("\n", fout); + } + fputs("....\n", fout); + } + } +} + +static void +print_asciidoc_vertical(const printTableContent *cont, FILE *fout) +{ + bool opt_tuples_only = cont->opt->tuples_only; + unsigned short opt_border = cont->opt->border; + unsigned long record = cont->opt->prior_records + 1; + unsigned int i; + const char *const * ptr; + + if (cancel_pressed) + return; + + if (cont->opt->start_table) + { + /* print table in new paragraph - enforce preliminary new line */ + fputs("\n", fout); + + /* print title */ + if (!opt_tuples_only && cont->title) + { + fputs(".", fout); + fputs(cont->title, fout); + fputs("\n", fout); + } + + /* print table [] header definition */ + fputs("[cols=\"h,l\"", fout); + switch (opt_border) + { + case 0: + fputs(",frame=\"none\",grid=\"none\"", fout); + break; + case 1: + fputs(",frame=\"none\"", fout); + break; + case 2: + fputs(",frame=\"all\",grid=\"all\"", fout); + break; + } + fputs("]\n", fout); + fputs("|====\n", fout); + } + + /* print records */ + for (i = 0, ptr = cont->cells; *ptr; i++, ptr++) + { + if (i % cont->ncolumns == 0) + { + if (cancel_pressed) + break; + if (!opt_tuples_only) + fprintf(fout, + "2+^| Record %lu\n", + record++); + else + fputs("2| \n", fout); + } + + fputs("<|", fout); + asciidoc_escaped_print(cont->headers[i % cont->ncolumns], fout); + fputs(" ", fout); + + fprintf(fout, " %s|", cont->aligns[i % cont->ncolumns] == 'r' ? ">" : "<"); + /* is string only whitespace? */ + if ((*ptr)[strspn(*ptr, " \t")] == '\0') + fputs(" ", fout); + else + asciidoc_escaped_print(*ptr, fout); + fputs("\n", fout); + } + + fputs("|====\n", fout); + + if (cont->opt->stop_table) + { + /* print footers */ + if (!opt_tuples_only && cont->footers != NULL && !cancel_pressed) + { + printTableFooter *f; + + fputs("\n....\n", fout); + for (f = cont->footers; f; f = f->next) + { + fputs(f->data, fout); + fputs("\n", fout); + } + fputs("....\n", fout); + } + } +} /********************************/ /* Public functions */ @@ -2872,6 +3098,12 @@ printTable(const printTableContent *cont, FILE *fout, FILE *flog) else print_troff_ms_text(cont, fout); break; + case PRINT_ASCIIDOC: + if (cont->opt->expanded == 1) + print_asciidoc_vertical(cont, fout); + else + print_asciidoc_text(cont, fout); + break; default: fprintf(stderr, _("invalid output format (internal error): %d"), cont->opt->format); @@ -3100,3 +3332,5 @@ strlen_max_width(unsigned char *str, int *target_width, int encoding) return str - start; } + + diff --git a/src/bin/psql/print.h b/src/bin/psql/print.h index f668b23..08b6f24 100644 --- a/src/bin/psql/print.h +++ b/src/bin/psql/print.h @@ -20,7 +20,8 @@ enum printFormat PRINT_HTML, PRINT_LATEX, PRINT_LATEX_LONGTABLE, - PRINT_TROFF_MS + PRINT_TROFF_MS, + PRINT_ASCIIDOC /* add your favourite output format here ... */ }; diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 8c85425..728985e 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -3787,7 +3787,7 @@ psql_completion(const char *text, int start, int end) { static const char *const my_list[] = {"unaligned", "aligned", "wrapped", "html", "latex", - "troff-ms", NULL}; + "troff-ms", "asciidoc", NULL}; COMPLETE_WITH_LIST_CS(my_list); } diff --git a/src/test/regress/expected/psql.out b/src/test/regress/expected/psql.out index e87b82b..6e789b4 100644 --- a/src/test/regress/expected/psql.out +++ b/src/test/regress/expected/psql.out @@ -2125,3 +2125,209 @@ execute q; +------------------+-------------------+ deallocate q; +prepare q as select ' | = | lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (&' as " | -- | 012345678 9abc def!*@#&!@(*&*~~_+-=\ \", '11' as "0123456789", 11 as int from generate_series(1,10) as n; +\pset format asciidoc +\pset expanded off +\pset border 0 +execute q; + +[options="header",cols="<l,<l,>l",frame="none",grid="none"] +|==== +^l| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ ^l| 0123456789 ^l| int +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +|==== + +.... +(10 rows) +.... +\pset border 1 +execute q; + +[options="header",cols="<l,<l,>l",frame="none"] +|==== +^l| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ ^l| 0123456789 ^l| int +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +|==== + +.... +(10 rows) +.... +\pset border 2 +execute q; + +[options="header",cols="<l,<l,>l",frame="all",grid="all"] +|==== +^l| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ ^l| 0123456789 ^l| int +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& | 11 | 11 +|==== + +.... +(10 rows) +.... +\pset expanded on +\pset border 0 +execute q; + +[cols="h,l",frame="none",grid="none"] +|==== +2+^| Record 1 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 2 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 3 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 4 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 5 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 6 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 7 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 8 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 9 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 10 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +|==== +\pset border 1 +execute q; + +[cols="h,l",frame="none"] +|==== +2+^| Record 1 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 2 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 3 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 4 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 5 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 6 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 7 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 8 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 9 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 10 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +|==== +\pset border 2 +execute q; + +[cols="h,l",frame="all",grid="all"] +|==== +2+^| Record 1 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 2 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 3 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 4 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 5 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 6 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 7 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 8 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 9 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +2+^| Record 10 +<| \| -- \| 012345678 9abc def!*@#&!@(*&*~~_+-=\ \ <| \| = \| lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (& +<|0123456789 <|11 +<|int >|11 +|==== +deallocate q; diff --git a/src/test/regress/sql/psql.sql b/src/test/regress/sql/psql.sql index 5ccc68f..fa1df8b 100644 --- a/src/test/regress/sql/psql.sql +++ b/src/test/regress/sql/psql.sql @@ -276,3 +276,28 @@ execute q; execute q; deallocate q; + +prepare q as select ' | = | lkjsafi\\/ /oeu rio)(!@&*#)*(!&@*) \ (&' as " | -- | 012345678 9abc def!*@#&!@(*&*~~_+-=\ \", '11' as "0123456789", 11 as int from generate_series(1,10) as n; + +\pset format asciidoc +\pset expanded off +\pset border 0 +execute q; + +\pset border 1 +execute q; + +\pset border 2 +execute q; + +\pset expanded on +\pset border 0 +execute q; + +\pset border 1 +execute q; + +\pset border 2 +execute q; + +deallocate q;
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers