diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c index 62850d8de5..5e6316919e 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" */ - 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 = 0, one space in the middle. + */ + swidth = 1; + } + else if (opt_border == 1) + { + /* + * 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; + + 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) + { + /* + * Record number + */ + unsigned int rwidth = 1 + log10(cont->nrows); + if (opt_border == 0) + rwidth += 9; /* "* RECORD " */ + else if (opt_border == 1) + rwidth += 12; /* "-[ RECORD ]" */ + else + rwidth += 15; /* "+-[ RECORD ]-+" */ + + if (rwidth > min_width) + min_width = rwidth; } /* Wrap to minimum width */ - if (!opt_tuples_only) + 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)) { - int delta = 1 + log10(cont->nrows) - width; - - if (opt_border == 0) - delta += 6; /* "* RECORD " */ - else if (opt_border == 1) - delta += 10; /* "-[ RECORD ]" */ - else - delta += 15; /* "+-[ RECORD ]-+" */ - - if (delta > 0) - dwidth += delta; + dmultiline = true; + if ((opt_border == 0) && + (format != &pg_asciiformat_old)) + width--; /* for wrap indicators */ } - else if (dwidth < 3) - dwidth = 3; + 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 c7dbd54307..199036d595 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 a7d5eeb587..5ccc68f4ed 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;