diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c
index 62850d8de5eac9f2c8c4fe7c4b882332f395d519..5e6316919eb3210302c0ead3fad1748b3e1c6ec6 100644
--- a/src/bin/psql/print.c
+++ b/src/bin/psql/print.c
@@ -1160,7 +1160,9 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
 				dformatsize = 0;
 	struct lineptr *hlineptr,
 			   *dlineptr;
-	bool		is_pager = false;
+	bool		is_pager = false,
+				hmultiline = false,
+				dmultiline = false;
 	int			output_columns = 0;		/* Width of interactive console */
 
 	if (cancel_pressed)
@@ -1196,7 +1198,10 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
 		if (width > hwidth)
 			hwidth = width;
 		if (height > hheight)
+		{
 			hheight = height;
+			hmultiline = true;
+		}
 		if (fs > hformatsize)
 			hformatsize = fs;
 	}
@@ -1213,7 +1218,10 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
 		if (width > dwidth)
 			dwidth = width;
 		if (height > dheight)
+		{
 			dheight = height;
+			dmultiline = true;
+		}
 		if (fs > dformatsize)
 			dformatsize = fs;
 	}
@@ -1258,45 +1266,82 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
 	if (cont->opt->format == PRINT_WRAPPED)
 	{
 		/*
-		 * Calculate the available width to wrap the columns to after
-		 * subtracting the maximum header width and separators. At a minimum
-		 * enough to print "[ RECORD N ]"
+		 * Separators width
 		 */
 		unsigned int width,
-					swidth;
+					min_width,
+					swidth,
+					iwidth = 0;
 
 		if (opt_border == 0)
-			swidth = 1;			/* "header data" */
+		{
+			/*
+			 * For border = 0, one space in the middle.
+			 */
+			swidth = 1;
+		}
 		else if (opt_border == 1)
-			swidth = 3;			/* "header | data" */
-		else
-			swidth = 7;			/* "| header | data |" */
-
-		/* Wrap to maximum width */
-		width = dwidth + swidth + hwidth;
-		if ((output_columns > 0) && (width > output_columns))
 		{
-			dwidth = output_columns - hwidth - swidth;
-			width = output_columns;
+			/*
+			 * For border = 1, one for the pipe (|) in the middle
+			 * between the two spaces.
+			 */
+			swidth = 3;
 		}
+		else
+			/*
+			 * For border = 2, two more for the pipes (|) at the begging and
+			 * at the end of the lines.
+			 */
+			swidth = 7;
 
-		/* Wrap to minimum width */
+		if ((opt_border < 2) &&
+			((hmultiline && 
+			(format == &pg_asciiformat_old)) ||
+			(dmultiline && 
+			(format != &pg_asciiformat_old))))
+			iwidth++; /* for newline indicators */
+
+		min_width = hwidth + iwidth + swidth + 3;
+
+		/* 
+		 * Record header width
+		 */
 		if (!opt_tuples_only)
 		{
-			int			delta = 1 + log10(cont->nrows) - width;
-
+			/* 
+			 * Record number
+			 */
+			unsigned int rwidth = 1 + log10(cont->nrows);
 			if (opt_border == 0)
-				delta += 6;		/* "* RECORD " */
+				rwidth += 9;	/* "* RECORD " */
 			else if (opt_border == 1)
-				delta += 10;	/* "-[ RECORD  ]" */
+				rwidth += 12;	/* "-[ RECORD  ]" */
 			else
-				delta += 15;	/* "+-[ RECORD  ]-+" */
+				rwidth += 15;	/* "+-[ RECORD  ]-+" */
 
-			if (delta > 0)
-				dwidth += delta;
+			if (rwidth > min_width)
+				min_width = rwidth;
 		}
-		else if (dwidth < 3)
-			dwidth = 3;
+
+		/* Wrap to minimum width */
+		width = hwidth + iwidth + swidth + dwidth;
+		if ((width < min_width) || (output_columns < min_width))
+			width = min_width - hwidth - iwidth - swidth;
+		else if (output_columns > 0)
+			/*
+			 * Wrap to maximum width
+			 */
+			width = output_columns - hwidth - iwidth - swidth;
+
+		if ((width < dwidth) || (dheight > 1))
+		{
+			dmultiline = true;
+			if ((opt_border == 0) && 
+				(format != &pg_asciiformat_old))
+				width--; /* for wrap indicators */
+		}
+		dwidth = width;
 	}
 
 	/* print records */
@@ -1321,11 +1366,17 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
 		/* Print record header (e.g. "[ RECORD N ]") above each record */
 		if (i % cont->ncolumns == 0)
 		{
+			unsigned int lhwidth = hwidth;
+			if ((opt_border < 2) &&
+				(hmultiline) && 
+				(format == &pg_asciiformat_old))
+				lhwidth++; /* for newline indicators */
+
 			if (!opt_tuples_only)
-				print_aligned_vertical_line(cont, record++, hwidth, dwidth,
-											pos, fout);
+				print_aligned_vertical_line(cont, record++, lhwidth,
+											dwidth, pos, fout);
 			else if (i != 0 || !cont->opt->start_table || opt_border == 2)
-				print_aligned_vertical_line(cont, 0, hwidth, dwidth,
+				print_aligned_vertical_line(cont, 0, lhwidth, dwidth,
 											pos, fout);
 		}
 
@@ -1354,35 +1405,62 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
 			/* Header (never wrapped so just need to deal with newlines) */
 			if (!hcomplete)
 			{
-				int			swidth,
-							twidth = hwidth + 1;
-
-				fputs(hline ? format->header_nl_left : " ", fout);
-				strlen_max_width(hlineptr[hline].ptr, &twidth,
+				int			swidth = hwidth,
+							target_width = hwidth;
+				/*
+				 * Left spacer or new line indicator
+				 */
+				if ((opt_border == 2) ||
+					(hmultiline && (format == &pg_asciiformat_old)))
+					fputs(hline ? format->header_nl_left : " ", fout);
+				/*
+				 * Header text
+				 */
+				strlen_max_width(hlineptr[hline].ptr, &target_width,
 								 encoding);
 				fprintf(fout, "%-s", hlineptr[hline].ptr);
 
-				swidth = hwidth - twidth;
-				if (swidth > 0) /* spacer */
+				/*
+				 * Spacer
+				 */
+				swidth -= target_width;
+				if (swidth > 0)
 					fprintf(fout, "%*s", swidth, " ");
 
+				/* 
+				 * New line indicator or separator's space
+				 */
 				if (hlineptr[hline + 1].ptr)
 				{
 					/* More lines after this one due to a newline */
-					fputs(format->header_nl_right, fout);
+					if ((opt_border > 0) ||
+						(hmultiline && (format != &pg_asciiformat_old)))
+						fputs(format->header_nl_right, fout);
 					hline++;
 				}
 				else
 				{
 					/* This was the last line of the header */
-					fputs(" ", fout);
+					if ((opt_border > 0) ||
+						(hmultiline && (format != &pg_asciiformat_old)))
+						fputs(" ", fout);
 					hcomplete = 1;
 				}
 			}
 			else
 			{
-				/* Header exhausted but more data for column */
-				fprintf(fout, "%*s", hwidth + 2, "");
+				unsigned int swidth = hwidth + opt_border;
+				if ((opt_border < 2) &&
+					(hmultiline) &&
+					(format == &pg_asciiformat_old))
+					swidth++;
+
+				if ((opt_border == 0) && 
+					(format != &pg_asciiformat_old) &&
+					(hmultiline))
+					swidth++;
+
+				fprintf(fout, "%*s", swidth, " ");
 			}
 
 			/* Separator */
@@ -1401,13 +1479,18 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
 			/* Data */
 			if (!dcomplete)
 			{
-				int			target_width,
+				int			target_width = dwidth,
 							bytes_to_output,
-							swidth;
+							swidth = dwidth;
 
+				/*
+				 * Left spacer on wrap indicator
+				 */
 				fputs(!dcomplete && !offset ? " " : format->wrap_left, fout);
 
-				target_width = dwidth;
+				/*
+				 * Data text
+				 */
 				bytes_to_output = strlen_max_width(dlineptr[dline].ptr + offset,
 												   &target_width, encoding);
 				fputnbytes(fout, (char *) (dlineptr[dline].ptr + offset),
@@ -1416,20 +1499,30 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
 				chars_to_output -= target_width;
 				offset += bytes_to_output;
 
-				/* spacer */
-				swidth = dwidth - target_width;
-				if (swidth > 0)
-					fprintf(fout, "%*s", swidth, "");
+				/* Spacer */
+				swidth -= target_width;
 
 				if (chars_to_output)
 				{
 					/* continuing a wrapped column */
-					fputs(format->wrap_right, fout);
+					if ((opt_border > 1) ||
+						(dmultiline && (format != &pg_asciiformat_old)))
+					{
+						if (swidth > 0)
+							fprintf(fout, "%*s", swidth, " ");
+						fputs(format->wrap_right, fout);
+					}
 				}
 				else if (dlineptr[dline + 1].ptr)
 				{
 					/* reached a newline in the column */
-					fputs(format->nl_right, fout);
+					if ((opt_border > 1) ||
+						(dmultiline && (format != &pg_asciiformat_old)))
+					{
+						if (swidth > 0)
+							fprintf(fout, "%*s", swidth, " ");
+						fputs(format->nl_right, fout);
+					}
 					dline++;
 					offset = 0;
 					chars_to_output = dlineptr[dline].width;
@@ -1437,10 +1530,16 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
 				else
 				{
 					/* reached the end of the cell */
-					fputs(" ", fout);
+					if (opt_border > 1)
+					{
+						if (swidth > 0)
+							fprintf(fout, "%*s", swidth, " ");
+						fputs(" ", fout);
+					}
 					dcomplete = 1;
 				}
 
+				/* Right border */
 				if (opt_border == 2)
 					fputs(dformat->rightvrule, fout);
 
diff --git a/src/test/regress/expected/psql.out b/src/test/regress/expected/psql.out
index c7dbd543071b49b214f608fa0a27f8c0a59fcd47..199036d595c4b24f845967545ae2349fa5a289bf 100644
--- a/src/test/regress/expected/psql.out
+++ b/src/test/regress/expected/psql.out
@@ -69,20 +69,20 @@ Table attributes (tableattr) unset.
 Title (title) unset.
 Tuples only (tuples_only) is off.
 -- test multi-line headers, wrapping, and newline indicators
-prepare q as select array_to_string(array_agg(repeat('x',2*n)),E'\n') as "a
+prepare q as select array_to_string(array_agg(repeat('x',2*n)),E'\n') as "ab
 
-b", array_to_string(array_agg(repeat('y',20-2*n)),E'\n') as "a
-b" from generate_series(1,10) as n(n) group by n>1 ;
+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 ;
 \pset linestyle ascii
 \pset expanded off
 \pset columns 40
 \pset border 0
 \pset format unaligned
 execute q;
-a
+ab
 
-b|a
-b
+c|a
+bc
 xx|yyyyyyyyyyyyyyyyyy
 xxxx
 xxxxxx
@@ -104,9 +104,9 @@ yy
 (2 rows)
 \pset format aligned
 execute q;
-         a          +        a         +
-                    +        b          
-         b                              
+         ab         +        a         +
+                    +        bc         
+         c                              
 -------------------- ------------------
 xx                   yyyyyyyyyyyyyyyyyy
 xxxx                +yyyyyyyyyyyyyyyy  +
@@ -122,9 +122,9 @@ xxxxxxxxxxxxxxxxxxxx
 
 \pset format wrapped
 execute q;
-         a          +        a         +
-                    +        b          
-         b                              
+         ab         +        a         +
+                    +        bc         
+         c                              
 -------------------- ------------------
 xx                   yyyyyyyyyyyyyyyyyy
 xxxx                +yyyyyyyyyyyyyyyy  +
@@ -141,10 +141,10 @@ xxxxxxxxxxxxxxxxxxxx
 \pset border 1
 \pset format unaligned
 execute q;
-a
+ab
 
-b|a
-b
+c|a
+bc
 xx|yyyyyyyyyyyyyyyyyy
 xxxx
 xxxxxx
@@ -166,9 +166,9 @@ yy
 (2 rows)
 \pset format aligned
 execute q;
-          a          +|         a         +
-                     +|         b          
-          b           |                    
+          ab         +|         a         +
+                     +|         bc         
+          c           |                    
 ----------------------+--------------------
  xx                   | yyyyyyyyyyyyyyyyyy
  xxxx                +| yyyyyyyyyyyyyyyy  +
@@ -184,9 +184,9 @@ execute q;
 
 \pset format wrapped
 execute q;
-         a        +|         a         +
-                  +|         b          
-         b         |                    
+        ab        +|         a         +
+                  +|         bc         
+         c         |                    
 -------------------+--------------------
  xx                | yyyyyyyyyyyyyyyyyy
  xxxx             +| yyyyyyyyyyyyyyyy  +
@@ -205,10 +205,10 @@ execute q;
 \pset border 2
 \pset format unaligned
 execute q;
-a
+ab
 
-b|a
-b
+c|a
+bc
 xx|yyyyyyyyyyyyyyyyyy
 xxxx
 xxxxxx
@@ -231,9 +231,9 @@ yy
 \pset format aligned
 execute q;
 +----------------------+--------------------+
-|          a          +|         a         +|
-|                     +|         b          |
-|          b           |                    |
+|          ab         +|         a         +|
+|                     +|         bc         |
+|          c           |                    |
 +----------------------+--------------------+
 | xx                   | yyyyyyyyyyyyyyyyyy |
 | xxxx                +| yyyyyyyyyyyyyyyy  +|
@@ -251,9 +251,9 @@ execute q;
 \pset format wrapped
 execute q;
 +-----------------+--------------------+
-|        a       +|         a         +|
-|                +|         b          |
-|        b        |                    |
+|       ab       +|         a         +|
+|                +|         bc         |
+|        c        |                    |
 +-----------------+--------------------+
 | xx              | yyyyyyyyyyyyyyyyyy |
 | xxxx           +| yyyyyyyyyyyyyyyy  +|
@@ -276,15 +276,15 @@ execute q;
 \pset border 0
 \pset format unaligned
 execute q;
-a
+ab
 
-b|xx
+c|xx
 a
-b|yyyyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyyyy
 
-a
+ab
 
-b|xxxx
+c|xxxx
 xxxxxx
 xxxxxxxx
 xxxxxxxxxx
@@ -294,7 +294,7 @@ xxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxxxx
 a
-b|yyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyy
 yyyyyyyyyyyyyy
 yyyyyyyyyyyy
 yyyyyyyyyy
@@ -305,73 +305,76 @@ yy
 
 \pset format aligned
 execute q;
-* Record 1           
- a+ xx                   
+* Record 1            
+ab+ xx
   +
- b 
- a+ yyyyyyyyyyyyyyyyyy   
- b 
-* Record 2           
- a+ xxxx                +
+c  
+a + yyyyyyyyyyyyyyyyyy
+bc 
+* Record 2            
+ab+ xxxx                +
   + xxxxxx              +
- b  xxxxxxxx            +
+c   xxxxxxxx            +
     xxxxxxxxxx          +
     xxxxxxxxxxxx        +
     xxxxxxxxxxxxxx      +
     xxxxxxxxxxxxxxxx    +
     xxxxxxxxxxxxxxxxxx  +
-    xxxxxxxxxxxxxxxxxxxx 
- a+ yyyyyyyyyyyyyyyy    +
- b  yyyyyyyyyyyyyy      +
+    xxxxxxxxxxxxxxxxxxxx
+a + yyyyyyyyyyyyyyyy    +
+bc  yyyyyyyyyyyyyy      +
     yyyyyyyyyyyy        +
     yyyyyyyyyy          +
     yyyyyyyy            +
     yyyyyy              +
     yyyy                +
     yy                  +
-                         
+    
 
 \pset format wrapped
 execute q;
-* Record 1         
- a+ xx                 
+* Record 1       
+ab+ xx
   +
- b 
- a+ yyyyyyyyyyyyyyyyyy 
- b 
-* Record 2         
- a+ xxxx              +
-  + xxxxxx            +
- b  xxxxxxxx          +
-    xxxxxxxxxx        +
-    xxxxxxxxxxxx      +
-    xxxxxxxxxxxxxx    +
-    xxxxxxxxxxxxxxxx  +
-    xxxxxxxxxxxxxxxxxx+
-    xxxxxxxxxxxxxxxxxx.
-   .xx                 
- a+ yyyyyyyyyyyyyyyy  +
- b  yyyyyyyyyyyyyy    +
-    yyyyyyyyyyyy      +
-    yyyyyyyyyy        +
-    yyyyyyyy          +
-    yyyyyy            +
-    yyyy              +
-    yy                +
-                       
+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;
-a
+ab
 
-b|xx
+c|xx
 a
-b|yyyyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyyyy
 
-a
+ab
 
-b|xxxx
+c|xxxx
 xxxxxx
 xxxxxxxx
 xxxxxxxxxx
@@ -381,7 +384,7 @@ xxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxxxx
 a
-b|yyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyy
 yyyyyyyyyyyyyy
 yyyyyyyyyyyy
 yyyyyyyyyy
@@ -392,74 +395,76 @@ yy
 
 \pset format aligned
 execute q;
--[ RECORD 1 ]-----------
- a+| xx                   
+-[ RECORD 1 ]------------
+ab+| xx
   +|
- b |
- a+| yyyyyyyyyyyyyyyyyy   
- b |
--[ RECORD 2 ]-----------
- a+| xxxx                +
+c  |
+a +| yyyyyyyyyyyyyyyyyy
+bc |
+-[ RECORD 2 ]------------
+ab+| xxxx                +
   +| xxxxxx              +
- b | xxxxxxxx            +
+c  | xxxxxxxx            +
    | xxxxxxxxxx          +
    | xxxxxxxxxxxx        +
    | xxxxxxxxxxxxxx      +
    | xxxxxxxxxxxxxxxx    +
    | xxxxxxxxxxxxxxxxxx  +
-   | xxxxxxxxxxxxxxxxxxxx 
- a+| yyyyyyyyyyyyyyyy    +
- b | yyyyyyyyyyyyyy      +
+   | xxxxxxxxxxxxxxxxxxxx
+a +| yyyyyyyyyyyyyyyy    +
+bc | yyyyyyyyyyyyyy      +
    | yyyyyyyyyyyy        +
    | yyyyyyyyyy          +
    | yyyyyyyy            +
    | yyyyyy              +
    | yyyy                +
    | yy                  +
-   |                      
+   | 
 
 \pset format wrapped
 execute q;
--[ RECORD 1 ]-------
- a+| xx               
+-[ RECORD 1 ]------
+ab+| xx
   +|
- b |
- a+| yyyyyyyyyyyyyyyy.
- b |.yy               
--[ RECORD 2 ]-------
- a+| xxxx            +
-  +| xxxxxx          +
- b | xxxxxxxx        +
-   | xxxxxxxxxx      +
-   | xxxxxxxxxxxx    +
-   | xxxxxxxxxxxxxx  +
-   | xxxxxxxxxxxxxxxx+
-   | xxxxxxxxxxxxxxxx.
-   |.xx              +
-   | xxxxxxxxxxxxxxxx.
-   |.xxxx             
- a+| yyyyyyyyyyyyyyyy+
- b | yyyyyyyyyyyyyy  +
-   | yyyyyyyyyyyy    +
-   | yyyyyyyyyy      +
-   | yyyyyyyy        +
-   | yyyyyy          +
-   | yyyy            +
-   | yy              +
-   |                  
+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;
-a
+ab
 
-b|xx
+c|xx
 a
-b|yyyyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyyyy
 
-a
+ab
 
-b|xxxx
+c|xxxx
 xxxxxx
 xxxxxxxx
 xxxxxxxxxx
@@ -469,7 +474,7 @@ xxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxxxx
 a
-b|yyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyy
 yyyyyyyyyyyyyy
 yyyyyyyyyyyy
 yyyyyyyyyy
@@ -480,67 +485,69 @@ yy
 
 \pset format aligned
 execute q;
-+-[ RECORD 1 ]-------------+
-| a+| xx                   |
-|  +|                      |
-| b |                      |
-| a+| yyyyyyyyyyyyyyyyyy   |
-| b |                      |
-+-[ RECORD 2 ]-------------+
-| a+| xxxx                +|
-|  +| xxxxxx              +|
-| b | xxxxxxxx            +|
-|   | xxxxxxxxxx          +|
-|   | xxxxxxxxxxxx        +|
-|   | xxxxxxxxxxxxxx      +|
-|   | xxxxxxxxxxxxxxxx    +|
-|   | xxxxxxxxxxxxxxxxxx  +|
-|   | xxxxxxxxxxxxxxxxxxxx |
-| a+| yyyyyyyyyyyyyyyy    +|
-| b | yyyyyyyyyyyyyy      +|
-|   | yyyyyyyyyyyy        +|
-|   | yyyyyyyyyy          +|
-|   | yyyyyyyy            +|
-|   | yyyyyy              +|
-|   | yyyy                +|
-|   | yy                  +|
-|   |                      |
-+---+----------------------+
++-[ 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 ]-----+
-| a+| xx           |
-|  +|              |
-| b |              |
-| a+| yyyyyyyyyyyy.|
-| b |.yyyyyy       |
+| ab+| xx          |
+|   +|             |
+| c  |             |
+| a +| yyyyyyyyyyy.|
+| bc |.yyyyyyy     |
 +-[ RECORD 2 ]-----+
-| a+| xxxx        +|
-|  +| xxxxxx      +|
-| b | xxxxxxxx    +|
-|   | xxxxxxxxxx  +|
-|   | xxxxxxxxxxxx+|
-|   | xxxxxxxxxxxx.|
-|   |.xx          +|
-|   | xxxxxxxxxxxx.|
-|   |.xxxx        +|
-|   | xxxxxxxxxxxx.|
-|   |.xxxxxx      +|
-|   | xxxxxxxxxxxx.|
-|   |.xxxxxxxx     |
-| a+| yyyyyyyyyyyy.|
-| b |.yyyy        +|
-|   | yyyyyyyyyyyy.|
-|   |.yy          +|
-|   | yyyyyyyyyyyy+|
-|   | yyyyyyyyyy  +|
-|   | yyyyyyyy    +|
-|   | yyyyyy      +|
-|   | yyyy        +|
-|   | yy          +|
-|   |              |
-+---+--------------+
+| 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
@@ -548,10 +555,10 @@ execute q;
 \pset border 0
 \pset format unaligned
 execute q;
-a
+ab
 
-b|a
-b
+c|a
+bc
 xx|yyyyyyyyyyyyyyyyyy
 xxxx
 xxxxxx
@@ -573,9 +580,9 @@ yy
 (2 rows)
 \pset format aligned
 execute q;
-         a                   a         
-                    +        b         
-         b          +                  
+         ab                  a         
+                    +        bc        
+         c          +                  
 -------------------- ------------------
 xx                   yyyyyyyyyyyyyyyyyy
 xxxx                 yyyyyyyyyyyyyyyy   
@@ -591,9 +598,9 @@ xxxxxxxxxxxxxxxxxxxx
 
 \pset format wrapped
 execute q;
-         a                   a         
-                    +        b         
-         b          +                  
+         ab                  a         
+                    +        bc        
+         c          +                  
 -------------------- ------------------
 xx                   yyyyyyyyyyyyyyyyyy
 xxxx                 yyyyyyyyyyyyyyyy   
@@ -610,10 +617,10 @@ xxxxxxxxxxxxxxxxxxxx
 \pset border 1
 \pset format unaligned
 execute q;
-a
+ab
 
-b|a
-b
+c|a
+bc
 xx|yyyyyyyyyyyyyyyyyy
 xxxx
 xxxxxx
@@ -635,9 +642,9 @@ yy
 (2 rows)
 \pset format aligned
 execute q;
-          a           |         a          
-+                     |+        b          
-+         b           |+                   
+          ab          |         a          
++                     |+        bc         
++         c           |+                   
 ----------------------+--------------------
  xx                   | yyyyyyyyyyyyyyyyyy
  xxxx                 | yyyyyyyyyyyyyyyy   
@@ -653,9 +660,9 @@ execute q;
 
 \pset format wrapped
 execute q;
-         a         |         a          
-+                  |+        b          
-+        b         |+                   
+        ab         |         a          
++                  |+        bc         
++        c         |+                   
 -------------------+--------------------
  xx                | yyyyyyyyyyyyyyyyyy
  xxxx              | yyyyyyyyyyyyyyyy   
@@ -674,10 +681,10 @@ execute q;
 \pset border 2
 \pset format unaligned
 execute q;
-a
+ab
 
-b|a
-b
+c|a
+bc
 xx|yyyyyyyyyyyyyyyyyy
 xxxx
 xxxxxx
@@ -700,9 +707,9 @@ yy
 \pset format aligned
 execute q;
 +----------------------+--------------------+
-|          a           |         a          |
-|+                     |+        b          |
-|+         b           |+                   |
+|          ab          |         a          |
+|+                     |+        bc         |
+|+         c           |+                   |
 +----------------------+--------------------+
 | xx                   | yyyyyyyyyyyyyyyyyy |
 | xxxx                 | yyyyyyyyyyyyyyyy   |
@@ -720,9 +727,9 @@ execute q;
 \pset format wrapped
 execute q;
 +-----------------+--------------------+
-|        a        |         a          |
-|+                |+        b          |
-|+       b        |+                   |
+|       ab        |         a          |
+|+                |+        bc         |
+|+       c        |+                   |
 +-----------------+--------------------+
 | xx              | yyyyyyyyyyyyyyyyyy |
 | xxxx            | yyyyyyyyyyyyyyyy   |
@@ -745,15 +752,15 @@ execute q;
 \pset border 0
 \pset format unaligned
 execute q;
-a
+ab
 
-b|xx
+c|xx
 a
-b|yyyyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyyyy
 
-a
+ab
 
-b|xxxx
+c|xxxx
 xxxxxx
 xxxxxxxx
 xxxxxxxxxx
@@ -763,7 +770,7 @@ xxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxxxx
 a
-b|yyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyy
 yyyyyyyyyyyyyy
 yyyyyyyyyyyy
 yyyyyyyyyy
@@ -774,73 +781,74 @@ yy
 
 \pset format aligned
 execute q;
-* Record 1           
- a  xx                   
+* Record 1             
+ ab xx
 +  
-+b 
- a  yyyyyyyyyyyyyyyyyy   
-+b 
-* Record 2           
- a  xxxx                 
-+   xxxxxx               
-+b  xxxxxxxx             
-    xxxxxxxxxx           
-    xxxxxxxxxxxx         
-    xxxxxxxxxxxxxx       
-    xxxxxxxxxxxxxxxx     
-    xxxxxxxxxxxxxxxxxx   
-    xxxxxxxxxxxxxxxxxxxx 
- a  yyyyyyyyyyyyyyyy     
-+b  yyyyyyyyyyyyyy       
-    yyyyyyyyyyyy         
-    yyyyyyyyyy           
-    yyyyyyyy             
-    yyyyyy               
-    yyyy                 
-    yy                   
-                         
++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         
- a  xx                 
+ ab xx
 +  
-+b 
- a  yyyyyyyyyyyyyyyyyy 
-+b 
++c 
+ a  yyyyyyyyyyyyyyyy
++bc yy
 * Record 2         
- a  xxxx               
-+   xxxxxx             
-+b  xxxxxxxx           
-    xxxxxxxxxx         
-    xxxxxxxxxxxx       
-    xxxxxxxxxxxxxx     
-    xxxxxxxxxxxxxxxx   
-    xxxxxxxxxxxxxxxxxx 
-    xxxxxxxxxxxxxxxxxx 
-    xx                 
- a  yyyyyyyyyyyyyyyy   
-+b  yyyyyyyyyyyyyy     
-    yyyyyyyyyyyy       
-    yyyyyyyyyy         
-    yyyyyyyy           
-    yyyyyy             
-    yyyy               
-    yy                 
-                       
+ 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;
-a
+ab
 
-b|xx
+c|xx
 a
-b|yyyyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyyyy
 
-a
+ab
 
-b|xxxx
+c|xxxx
 xxxxxx
 xxxxxxxx
 xxxxxxxxxx
@@ -850,7 +858,7 @@ xxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxxxx
 a
-b|yyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyy
 yyyyyyyyyyyyyy
 yyyyyyyyyyyy
 yyyyyyyyyy
@@ -861,74 +869,76 @@ yy
 
 \pset format aligned
 execute q;
--[ RECORD 1 ]-----------
- a | xx                   
-+  ;
-+b ;
- a | yyyyyyyyyyyyyyyyyy   
-+b ;
--[ RECORD 2 ]-----------
- a | xxxx                 
-+  : xxxxxx               
-+b : xxxxxxxx             
-   : xxxxxxxxxx           
-   : xxxxxxxxxxxx         
-   : xxxxxxxxxxxxxx       
-   : xxxxxxxxxxxxxxxx     
-   : xxxxxxxxxxxxxxxxxx   
-   : xxxxxxxxxxxxxxxxxxxx 
- a | yyyyyyyyyyyyyyyy     
-+b : yyyyyyyyyyyyyy       
-   : yyyyyyyyyyyy         
-   : yyyyyyyyyy           
-   : yyyyyyyy             
-   : yyyyyy               
-   : yyyy                 
-   : yy                   
-   :                      
+-[ 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 ]-------
- a | xx               
-+  ;
-+b ;
- a | yyyyyyyyyyyyyyyy 
-+b ; yy               
+ ab | xx
++   ;
++c  ;
+ a  | yyyyyyyyyyyyyy
++bc ; yyyy
 -[ RECORD 2 ]-------
- a | xxxx             
-+  : xxxxxx           
-+b : xxxxxxxx         
-   : xxxxxxxxxx       
-   : xxxxxxxxxxxx     
-   : xxxxxxxxxxxxxx   
-   : xxxxxxxxxxxxxxxx 
-   : xxxxxxxxxxxxxxxx 
-   ; xx               
-   : xxxxxxxxxxxxxxxx 
-   ; xxxx             
- a | yyyyyyyyyyyyyyyy 
-+b : yyyyyyyyyyyyyy   
-   : yyyyyyyyyyyy     
-   : yyyyyyyyyy       
-   : yyyyyyyy         
-   : yyyyyy           
-   : yyyy             
-   : yy               
-   :                  
+ 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;
-a
+ab
 
-b|xx
+c|xx
 a
-b|yyyyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyyyy
 
-a
+ab
 
-b|xxxx
+c|xxxx
 xxxxxx
 xxxxxxxx
 xxxxxxxxxx
@@ -938,7 +948,7 @@ xxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxxxxxxx
 a
-b|yyyyyyyyyyyyyyyy
+bc|yyyyyyyyyyyyyyyy
 yyyyyyyyyyyyyy
 yyyyyyyyyyyy
 yyyyyyyyyy
@@ -949,66 +959,1164 @@ yy
 
 \pset format aligned
 execute q;
-+-[ RECORD 1 ]-------------+
-| a | xx                   |
-|+  ;                      |
-|+b ;                      |
-| a | yyyyyyyyyyyyyyyyyy   |
-|+b ;                      |
-+-[ RECORD 2 ]-------------+
-| a | xxxx                 |
-|+  : xxxxxx               |
-|+b : xxxxxxxx             |
-|   : xxxxxxxxxx           |
-|   : xxxxxxxxxxxx         |
-|   : xxxxxxxxxxxxxx       |
-|   : xxxxxxxxxxxxxxxx     |
-|   : xxxxxxxxxxxxxxxxxx   |
-|   : xxxxxxxxxxxxxxxxxxxx |
-| a | yyyyyyyyyyyyyyyy     |
-|+b : yyyyyyyyyyyyyy       |
-|   : yyyyyyyyyyyy         |
-|   : yyyyyyyyyy           |
-|   : yyyyyyyy             |
-|   : yyyyyy               |
-|   : yyyy                 |
-|   : yy                   |
-|   :                      |
-+---+----------------------+
++-[ 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 ]-----+
-| a | xx           |
-|+  ;              |
-|+b ;              |
-| a | yyyyyyyyyyyy |
-|+b ; yyyyyy       |
+| ab | xx          |
+|+   ;             |
+|+c  ;             |
+| a  | yyyyyyyyyyy |
+|+bc ; yyyyyyy     |
 +-[ RECORD 2 ]-----+
-| a | xxxx         |
-|+  : xxxxxx       |
-|+b : xxxxxxxx     |
-|   : xxxxxxxxxx   |
-|   : xxxxxxxxxxxx |
-|   : xxxxxxxxxxxx |
-|   ; xx           |
-|   : xxxxxxxxxxxx |
-|   ; xxxx         |
-|   : xxxxxxxxxxxx |
-|   ; xxxxxx       |
-|   : xxxxxxxxxxxx |
-|   ; xxxxxxxx     |
-| a | yyyyyyyyyyyy |
-|+b ; yyyy         |
-|   : yyyyyyyyyyyy |
-|   ; yy           |
-|   : yyyyyyyyyyyy |
-|   : yyyyyyyyyy   |
-|   : yyyyyyyy     |
-|   : yyyyyy       |
-|   : yyyy         |
-|   : yy           |
-|   :              |
-+---+--------------+
+| 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 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       yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy
+* Record 2        
+0123456789abcdef xx.
+                .xx
+0123456789       yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy
+* Record 3        
+0123456789abcdef xx.
+                .xx.
+                .xx
+0123456789       yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy
+* Record 4        
+0123456789abcdef xx.
+                .xx.
+                .xx.
+                .xx
+0123456789       yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy
+* Record 5        
+0123456789abcdef xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx
+0123456789       yy.
+                .yy.
+                .yy.
+                .yy.
+                .yy
+* Record 6        
+0123456789abcdef xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx
+0123456789       yy.
+                .yy.
+                .yy.
+                .yy
+* Record 7        
+0123456789abcdef xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx
+0123456789       yy.
+                .yy.
+                .yy
+* Record 8        
+0123456789abcdef xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx
+0123456789       yy.
+                .yy
+* Record 9        
+0123456789abcdef xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx
+0123456789       yy
+* Record 10       
+0123456789abcdef xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .xx.
+                .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;
diff --git a/src/test/regress/sql/psql.sql b/src/test/regress/sql/psql.sql
index a7d5eeb587a8ad9bff87240cb8271fbff01731c3..5ccc68f4ed37be712a650aa4fa71eb7c70a1bb4f 100644
--- a/src/test/regress/sql/psql.sql
+++ b/src/test/regress/sql/psql.sql
@@ -42,10 +42,10 @@ select 10 as test01, 20 as test02 from generate_series(1,0) \gset
 \pset
 
 -- test multi-line headers, wrapping, and newline indicators
-prepare q as select array_to_string(array_agg(repeat('x',2*n)),E'\n') as "a
+prepare q as select array_to_string(array_agg(repeat('x',2*n)),E'\n') as "ab
 
-b", array_to_string(array_agg(repeat('y',20-2*n)),E'\n') as "a
-b" from generate_series(1,10) as n(n) group by n>1 ;
+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 ;
 
 \pset linestyle ascii
 
@@ -160,3 +160,119 @@ execute q;
 execute q;
 
 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;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+\pset border 1
+\pset format unaligned
+execute q;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+\pset border 2
+\pset format unaligned
+execute q;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+\pset expanded on
+\pset columns 20
+
+\pset border 0
+\pset format unaligned
+execute q;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+\pset border 1
+\pset format unaligned
+execute q;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+\pset border 2
+\pset format unaligned
+execute q;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+\pset linestyle old-ascii
+
+\pset expanded off
+\pset columns 40
+
+\pset border 0
+\pset format unaligned
+execute q;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+\pset border 1
+\pset format unaligned
+execute q;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+\pset border 2
+\pset format unaligned
+execute q;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+\pset expanded on
+
+\pset border 0
+\pset format unaligned
+execute q;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+\pset border 1
+\pset format unaligned
+execute q;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+\pset border 2
+\pset format unaligned
+execute q;
+\pset format aligned
+execute q;
+\pset format wrapped
+execute q;
+
+deallocate q;