postgres.git / summary / log / commit / refs

commit    1f89fc21874791d410f8a554e2b613a451e1ec16
Author:   Stephen Frost <sfrost@snowman.net>
Date:     Fri Sep 12 15:24:09 2014 +0000
First released in: 9.5.0, 9.0.19, 9.1.15, 9.2.10, 9.3.6, 9.4.0

    Handle border = 3 in expanded mode
    
    In psql, expanded mode was not being displayed correctly when using
    the normal ascii or unicode linestyles and border set to '3'.  Now,
    per the documentation, border '3' is really only sensible for HTML
    and LaTeX formats, however, that's no excuse for ascii/unicode to
    break in that case, and provisions had been made for psql to cleanly
    handle this case (and it did, in non-expanded mode).
    
    This was broken when ascii/unicode was initially added a good five
    years ago because print_aligned_vertical_line wasn't passed in the
    border setting being used by print_aligned_vertical but instead was
    given the whole printTableContent.  There really isn't a good reason
    for vertical_line to have the entire printTableContent structure, so
    just pass in the printTextFormat and border setting (similar to how
    this is handled in horizontal_line).
    
    Pointed out by Pavel Stehule, fix by me.
    
    Back-patch to all currently-supported versions.


src/bin/psql/print.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c index 58d88ced71a..387e08b7a7d 100644 --- a/src/bin/psql/print.c +++ b/src/bin/psql/print.c @@ -1050,16 +1050,15 @@ print_aligned_text(const printTableContent *cont, FILE *fout) static void -print_aligned_vertical_line(const printTableContent *cont, +print_aligned_vertical_line(const printTextFormat *format, + const unsigned short opt_border, unsigned long record, unsigned int hwidth, unsigned int dwidth, printTextRule pos, FILE *fout) { - const printTextFormat *format = get_line_style(cont->opt); const printTextLineFormat *lformat = &format->lrule[pos]; - unsigned short opt_border = cont->opt->border; unsigned int i; int reclen = 0; @@ -1211,11 +1210,11 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout) if (i % cont->ncolumns == 0) { if (!opt_tuples_only) - print_aligned_vertical_line(cont, record++, hwidth, dwidth, - pos, fout); + print_aligned_vertical_line(format, opt_border, record++, + hwidth, dwidth, pos, fout); else if (i != 0 || !cont->opt->start_table || opt_border == 2) - print_aligned_vertical_line(cont, 0, hwidth, dwidth, - pos, fout); + print_aligned_vertical_line(format, opt_border, 0, hwidth, + dwidth, pos, fout); } /* Format the header */ @@ -1274,7 +1273,7 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout) if (cont->opt->stop_table) { if (opt_border == 2 && !cancel_pressed) - print_aligned_vertical_line(cont, 0, hwidth, dwidth, + print_aligned_vertical_line(format, opt_border, 0, hwidth, dwidth, PRINT_RULE_BOTTOM, fout); /* print footers */ [parent: 26f8a4691e2a]