1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Per discussion on -hackers, this patch changes psql's "expanded" output

mode to only affect the presentation of normal query results, not the
output of psql slash commands. Documentation updated. I also made
some unrelated minor psql cleanup. Per suggestion from Stuart Cooper.
This commit is contained in:
Neil Conway
2005-06-13 06:36:22 +00:00
parent 8c05ca7754
commit 077811605e
7 changed files with 77 additions and 44 deletions

View File

@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.57 2005/06/09 18:40:06 momjian Exp $
* $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.58 2005/06/13 06:36:22 neilc Exp $
*/
#include "postgres_fe.h"
#include "common.h"
@ -29,7 +29,6 @@
#include "mbprint.h"
/*************************/
/* Unaligned text */
/*************************/
@ -1261,6 +1260,7 @@ printTable(const char *title,
const char *default_footer[] = {NULL};
unsigned short int border = opt->border;
FILE *output;
bool use_expanded;
if (opt->format == PRINT_NOTHING)
return;
@ -1271,6 +1271,16 @@ printTable(const char *title,
if (opt->format != PRINT_HTML && border > 2)
border = 2;
/*
* We only want to display the results in "expanded" format if
* this is a normal (user-submitted) query, not a table we're
* printing for a slash command.
*/
if (opt->expanded && opt->normal_query)
use_expanded = true;
else
use_expanded = false;
if (fout == stdout)
{
int col_count = 0,
@ -1305,37 +1315,56 @@ printTable(const char *title,
switch (opt->format)
{
case PRINT_UNALIGNED:
if (opt->expanded)
print_unaligned_vertical(title, headers, cells, footers, opt->fieldSep, opt->recordSep, opt->tuples_only, output);
if (use_expanded)
print_unaligned_vertical(title, headers, cells, footers,
opt->fieldSep, opt->recordSep,
opt->tuples_only, output);
else
print_unaligned_text(title, headers, cells, footers, opt->fieldSep, opt->recordSep, opt->tuples_only, output);
print_unaligned_text(title, headers, cells, footers,
opt->fieldSep, opt->recordSep,
opt->tuples_only, output);
break;
case PRINT_ALIGNED:
if (opt->expanded)
print_aligned_vertical(title, headers, cells, footers, opt->tuples_only, border, opt->encoding, output);
if (use_expanded)
print_aligned_vertical(title, headers, cells, footers,
opt->tuples_only, border,
opt->encoding, output);
else
print_aligned_text(title, headers, cells, footers, align, opt->tuples_only, border, opt->encoding, output);
print_aligned_text(title, headers, cells, footers,
align, opt->tuples_only,
border, opt->encoding, output);
break;
case PRINT_HTML:
if (opt->expanded)
print_html_vertical(title, headers, cells, footers, align, opt->tuples_only, border, opt->tableAttr, output);
if (use_expanded)
print_html_vertical(title, headers, cells, footers,
align, opt->tuples_only,
border, opt->tableAttr, output);
else
print_html_text(title, headers, cells, footers, align, opt->tuples_only, border, opt->tableAttr, output);
print_html_text(title, headers, cells, footers,
align, opt->tuples_only, border,
opt->tableAttr, output);
break;
case PRINT_LATEX:
if (opt->expanded)
print_latex_vertical(title, headers, cells, footers, align, opt->tuples_only, border, output);
if (use_expanded)
print_latex_vertical(title, headers, cells, footers, align,
opt->tuples_only, border, output);
else
print_latex_text(title, headers, cells, footers, align, opt->tuples_only, border, output);
print_latex_text(title, headers, cells, footers, align,
opt->tuples_only, border, output);
break;
case PRINT_TROFF_MS:
if (opt->expanded)
print_troff_ms_vertical(title, headers, cells, footers, align, opt->tuples_only, border, output);
if (use_expanded)
print_troff_ms_vertical(title, headers, cells, footers,
align, opt->tuples_only,
border, output);
else
print_troff_ms_text(title, headers, cells, footers, align, opt->tuples_only, border, output);
print_troff_ms_text(title, headers, cells, footers,
align, opt->tuples_only,
border, output);
break;
default:
fprintf(stderr, "+ Oops, you shouldn't see this!\n");
fprintf(stderr, _("illegal output format: %d"), opt->format);
exit(EXIT_FAILURE);
}
/* Only close if we used the pager */