On 17 October 2014 09:01, Pavel Stehule <pavel.steh...@gmail.com> wrote:

> Hi Szymon
>
> I found a small bug - it doesn't escape "|" well
>
> postgres=# select * from mytab ;
>     a     | numeric_b |     c
> ----------+-----------+------------
>  Ahoj     |        10 | 2014-10-17
>  Hello    |        20 | 2014-10-18
>  Hi       |        30 | 2014-10-19
>  aaa|aaaa |      2222 | 2014-10-17
> (4 rows)
>
> result
>
> [options="header",cols="<literal,>literal,<literal",frame="all",grid="all"]
> |====
> ^| +++a+++ ^| +++numeric_b+++ ^| +++c+++
> | Ahoj | 10 | 2014-10-17
> | Hello | 20 | 2014-10-18
> | Hi | 30 | 2014-10-19
> | aaa|aaaa | 2222 | 2014-10-17
> |====
>
>
> Next, I tested it with asciidoc and asciidoctor and I have a problem with
> asciidoctor - it doesn't respect aligning .. so numbers are aligned to left
> instead to right.
>
> When you use a option "header" then a formatting "+++xxxx++++" is useless.
>

Hi Pavel,
thanks for the remarks. I've attached another version of the pach. It works
a little better now, including escaping | and asciidoctor alignment support.

thanks,
Szymon
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/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..83f268a 100644
--- a/src/bin/psql/print.c
+++ b/src/bin/psql/print.c
@@ -2475,6 +2475,217 @@ 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 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;
+    }
+		
+    fprintf(fout, "| ");
+
+		if ((*ptr)[strspn(*ptr, " \t")] == '\0')
+			fputs(" ", fout);
+		else
+			asciidoc_escaped_print(*ptr, fout);
+
+		fputs(" ", fout);
+
+		if ((i + 1) % cont->ncolumns == 0)
+			fputs("\n", 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 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 +3083,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 +3317,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..cf885ad 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 886188c..042f147 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -3785,7 +3785,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..5f5fac0 100644
--- a/src/test/regress/expected/psql.out
+++ b/src/test/regress/expected/psql.out
@@ -2125,3 +2125,203 @@ 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

Reply via email to