Skip to content

Commit 376a0c4

Browse files
committed
psql: show proper row count in \x mode for zero-column output
Also, fix pager enable selection for such cases, and other cleanups for zero-column output. Report by Thom Brown
1 parent 66c8040 commit 376a0c4

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

src/bin/psql/print.c

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -692,7 +692,7 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
692692
if (opt_border == 0)
693693
width_total = col_count;
694694
else if (opt_border == 1)
695-
width_total = col_count * 3 - 1;
695+
width_total = col_count * 3 - ((col_count > 0) ? 1 : 0);
696696
else
697697
width_total = col_count * 3 + 1;
698698
total_header_width = width_total;
@@ -928,7 +928,7 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
928928
fputs(!header_done[i] ? format->header_nl_right : " ",
929929
fout);
930930

931-
if (opt_border != 0 && i < col_count - 1)
931+
if (opt_border != 0 && col_count > 0 && i < col_count - 1)
932932
fputs(dformat->midvrule, fout);
933933
}
934934
curr_nl_line++;
@@ -983,7 +983,8 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
983983
struct lineptr *this_line = &col_lineptrs[j][curr_nl_line[j]];
984984
int bytes_to_output;
985985
int chars_to_output = width_wrap[j];
986-
bool finalspaces = (opt_border == 2 || j < col_count - 1);
986+
bool finalspaces = (opt_border == 2 ||
987+
(col_count > 0 && j < col_count - 1));
987988

988989
/* Print left-hand wrap or newline mark */
989990
if (opt_border != 0)
@@ -1077,11 +1078,11 @@ print_aligned_text(const printTableContent *cont, FILE *fout)
10771078
fputs(format->wrap_right, fout);
10781079
else if (wrap[j] == PRINT_LINE_WRAP_NEWLINE)
10791080
fputs(format->nl_right, fout);
1080-
else if (opt_border == 2 || j < col_count - 1)
1081+
else if (opt_border == 2 || (col_count > 0 && j < col_count - 1))
10811082
fputc(' ', fout);
10821083

10831084
/* Print column divider, if not the last column */
1084-
if (opt_border != 0 && j < col_count - 1)
1085+
if (opt_border != 0 && (col_count > 0 && j < col_count - 1))
10851086
{
10861087
if (wrap[j + 1] == PRINT_LINE_WRAP_WRAP)
10871088
fputs(format->midvrule_wrap, fout);
@@ -1236,8 +1237,18 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
12361237
if (cont->cells[0] == NULL && cont->opt->start_table &&
12371238
cont->opt->stop_table)
12381239
{
1239-
if (!opt_tuples_only && cont->opt->default_footer)
1240-
fprintf(fout, _("(No rows)\n"));
1240+
printTableFooter *footers = footers_with_default(cont);
1241+
1242+
if (!opt_tuples_only && !cancel_pressed && footers)
1243+
{
1244+
printTableFooter *f;
1245+
1246+
for (f = footers; f; f = f->next)
1247+
fprintf(fout, "%s\n", f->data);
1248+
}
1249+
1250+
fputc('\n', fout);
1251+
12411252
return;
12421253
}
12431254

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy