Skip to content

Commit 5d63f21

Browse files
committed
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.
1 parent 228ed43 commit 5d63f21

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

src/bin/psql/print.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,16 +1115,15 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
11151115

11161116

11171117
static void
1118-
print_aligned_vertical_line(const printTableContent *cont,
1118+
print_aligned_vertical_line(const printTextFormat *format,
1119+
const unsigned short opt_border,
11191120
unsigned long record,
11201121
unsigned int hwidth,
11211122
unsigned int dwidth,
11221123
printTextRule pos,
11231124
FILE *fout)
11241125
{
1125-
const printTextFormat *format = get_line_style(cont->opt);
11261126
const printTextLineFormat *lformat = &format->lrule[pos];
1127-
unsigned short opt_border = cont->opt->border;
11281127
unsigned int i;
11291128
int reclen = 0;
11301129

@@ -1284,11 +1283,11 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
12841283
if (i % cont->ncolumns == 0)
12851284
{
12861285
if (!opt_tuples_only)
1287-
print_aligned_vertical_line(cont, record++, hwidth, dwidth,
1288-
pos, fout);
1286+
print_aligned_vertical_line(format, opt_border, record++,
1287+
hwidth, dwidth, pos, fout);
12891288
else if (i != 0 || !cont->opt->start_table || opt_border == 2)
1290-
print_aligned_vertical_line(cont, 0, hwidth, dwidth,
1291-
pos, fout);
1289+
print_aligned_vertical_line(format, opt_border, 0, hwidth,
1290+
dwidth, pos, fout);
12921291
}
12931292

12941293
/* Format the header */
@@ -1347,7 +1346,7 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
13471346
if (cont->opt->stop_table)
13481347
{
13491348
if (opt_border == 2 && !cancel_pressed)
1350-
print_aligned_vertical_line(cont, 0, hwidth, dwidth,
1349+
print_aligned_vertical_line(format, opt_border, 0, hwidth, dwidth,
13511350
PRINT_RULE_BOTTOM, fout);
13521351

13531352
/* print footers */

0 commit comments

Comments
 (0)