Index: doc/src/sgml/ref/psql-ref.sgml =================================================================== RCS file: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v retrieving revision 1.209 diff -u -p -u -r1.209 psql-ref.sgml --- doc/src/sgml/ref/psql-ref.sgml 3 Jul 2008 03:37:16 -0000 1.209 +++ doc/src/sgml/ref/psql-ref.sgml 23 Aug 2008 14:00:47 -0000 @@ -1570,7 +1570,7 @@ lo_import 152801 HTML mode, this will translate directly into the border=... attribute, in the others only values 0 (no border), 1 (internal dividing lines), - and 2 (table frame) make sense. + 2 (table frame) and 3 (individual cells) make sense. @@ -2973,6 +2973,22 @@ peter@localhost testdb=> S +-------+--------+ (4 rows) +peter@localhost testdb=> \pset border 3 +Border style is 3. +peter@localhost testdb=> SELECT * FROM my_table; ++-------+--------+ +| first | second | ++=======+========+ +| 1 | one | ++-------+--------+ +| 2 | two | ++-------+--------+ +| 3 | three | ++-------+--------+ +| 4 | four | ++-------+--------+ +(4 rows) + peter@localhost testdb=> \pset border 0 Border style is 0. peter@localhost testdb=> SELECT * FROM my_table; Index: src/bin/psql/print.c =================================================================== RCS file: /cvsroot/pgsql/src/bin/psql/print.c,v retrieving revision 1.109 diff -u -p -u -r1.109 print.c --- src/bin/psql/print.c 14 Jul 2008 22:00:04 -0000 1.109 +++ src/bin/psql/print.c 23 Aug 2008 14:00:47 -0000 @@ -364,30 +364,40 @@ _print_horizontal_line(const unsigned in { unsigned int i, j; + char dash = (border == 0x83) ? '=' : '-'; - if (border == 1) - fputc('-', fout); - else if (border == 2) - fputs("+-", fout); + border &= 0x7f; + + if (border >= 2) + fputc('+', fout); + + if (border >= 1) + fputc(dash, fout); for (i = 0; i < ncolumns; i++) { for (j = 0; j < widths[i]; j++) - fputc('-', fout); + fputc(dash, fout); if (i < ncolumns - 1) { if (border == 0) fputc(' ', fout); else - fputs("-+-", fout); + { + fputc(dash, fout); + fputc('+', fout); + fputc(dash, fout); + } } } - if (border == 2) - fputs("-+", fout); - else if (border == 1) - fputc('-', fout); + if (border >= 1) + fputc(dash, fout); + + if (border >= 2) + fputc('+', fout); + fputc('\n', fout); } @@ -434,8 +444,8 @@ print_aligned_text(const printTableConte if (cancel_pressed) return; - if (opt_border > 2) - opt_border = 2; + if (opt_border > 3) + opt_border = 3; if (cont->ncolumns > 0) { @@ -707,7 +717,7 @@ print_aligned_text(const printTableConte int more_col_wrapping; int curr_nl_line; - if (opt_border == 2) + if (opt_border >= 2) _print_horizontal_line(col_count, width_wrap, opt_border, fout); for (i = 0; i < col_count; i++) @@ -720,7 +730,7 @@ print_aligned_text(const printTableConte memset(header_done, false, col_count * sizeof(bool)); while (more_col_wrapping) { - if (opt_border == 2) + if (opt_border >= 2) fprintf(fout, "|%c", curr_nl_line ? '+' : ' '); else if (opt_border == 1) fputc(curr_nl_line ? '+' : ' ', fout); @@ -757,14 +767,14 @@ print_aligned_text(const printTableConte } curr_nl_line++; - if (opt_border == 2) + if (opt_border >= 2) fputs(" |", fout); else if (opt_border == 1) fputc(' ', fout); fputc('\n', fout); } - _print_horizontal_line(col_count, width_wrap, opt_border, fout); + _print_horizontal_line(col_count,width_wrap,opt_border|0x80, fout); } } @@ -809,7 +819,7 @@ print_aligned_text(const printTableConte more_lines = false; /* left border */ - if (opt_border == 2) + if (opt_border >= 2) fputs("| ", fout); else if (opt_border == 1) fputc(' ', fout); @@ -821,7 +831,7 @@ print_aligned_text(const printTableConte struct lineptr *this_line = &col_lineptrs[j][curr_nl_line[j]]; int bytes_to_output; int chars_to_output = width_wrap[j]; - bool finalspaces = (opt_border == 2 || j < col_count - 1); + bool finalspaces = (opt_border >= 2 || j < col_count - 1); if (!this_line->ptr) { @@ -897,10 +907,12 @@ print_aligned_text(const printTableConte } /* end-of-row border */ - if (opt_border == 2) + if (opt_border >= 2) fputs(" |", fout); fputc('\n', fout); + if (opt_border == 3) + _print_horizontal_line(col_count, width_wrap, opt_border, fout); } while (more_lines); }