mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-01 19:45:33 +08: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:
parent
8c05ca7754
commit
077811605e
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.143 2005/06/13 02:40:08 neilc Exp $
|
||||
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.144 2005/06/13 06:36:22 neilc Exp $
|
||||
PostgreSQL documentation
|
||||
-->
|
||||
|
||||
@ -433,8 +433,8 @@ PostgreSQL documentation
|
||||
<term><option>--expanded</></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Turn on the extended table formatting mode. This is equivalent to the
|
||||
command <command>\x</command>.
|
||||
Turn on the expanded table formatting mode. This is equivalent to the
|
||||
<command>\x</command> command.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -1389,7 +1389,7 @@ lo_import 152801
|
||||
<literal>aligned</literal>, <literal>html</literal>,
|
||||
<literal>latex</literal>, or <literal>troff-ms</literal>.
|
||||
Unique abbreviations are allowed. (That would mean one letter
|
||||
is enough.)
|
||||
is enough.)
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -1429,10 +1429,13 @@ lo_import 152801
|
||||
<listitem>
|
||||
<para>
|
||||
Toggles between regular and expanded format. When expanded
|
||||
format is enabled, all output has two columns with the column
|
||||
name on the left and the data on the right. This mode is
|
||||
useful if the data wouldn't fit on the screen in the normal
|
||||
<quote>horizontal</quote> mode.
|
||||
format is enabled, query results are displayed in two
|
||||
columns, with the column name on the left and the data on
|
||||
the right. This option only affects how normal query results
|
||||
are displayed; the output of <application>psql</application>
|
||||
meta-commands is always presented using the regular
|
||||
format. This mode is useful if the data wouldn't fit on the
|
||||
screen in the normal <quote>horizontal</quote> mode.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -1722,7 +1725,7 @@ lo_import 152801
|
||||
<term><literal>\x</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Toggles extended table formatting mode. As such it is equivalent to
|
||||
Toggles expanded table formatting mode. As such it is equivalent to
|
||||
<literal>\pset expanded</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.145 2005/06/09 23:28:09 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.146 2005/06/13 06:36:22 neilc Exp $
|
||||
*/
|
||||
#include "postgres_fe.h"
|
||||
#include "command.h"
|
||||
@ -114,11 +114,6 @@ HandleSlashCmds(PsqlScanState scan_state,
|
||||
{
|
||||
/* adjust cmd for possible messages below */
|
||||
cmd[1] = '\0';
|
||||
|
||||
#if 0 /* turned out to be too annoying */
|
||||
if (isalpha((unsigned char) cmd[0]))
|
||||
psql_error("Warning: This syntax is deprecated.\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.100 2005/06/10 14:49:31 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.101 2005/06/13 06:36:22 neilc Exp $
|
||||
*/
|
||||
#include "postgres_fe.h"
|
||||
#include "common.h"
|
||||
@ -64,7 +64,6 @@ extern bool prompt_state;
|
||||
|
||||
static bool command_no_begin(const char *query);
|
||||
|
||||
|
||||
/*
|
||||
* "Safe" wrapper around strdup()
|
||||
*/
|
||||
@ -189,7 +188,7 @@ setQFout(const char *fname)
|
||||
*
|
||||
*/
|
||||
void
|
||||
psql_error(const char *fmt,...)
|
||||
psql_error(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
@ -784,6 +783,10 @@ PrintNotifications(void)
|
||||
static bool
|
||||
PrintQueryTuples(const PGresult *results)
|
||||
{
|
||||
printQueryOpt my_popt = pset.popt;
|
||||
|
||||
my_popt.topt.normal_query = true;
|
||||
|
||||
/* write output to \g argument, if any */
|
||||
if (pset.gfname)
|
||||
{
|
||||
@ -800,7 +803,7 @@ PrintQueryTuples(const PGresult *results)
|
||||
return false;
|
||||
}
|
||||
|
||||
printQuery(results, &pset.popt, pset.queryFout);
|
||||
printQuery(results, &my_popt, pset.queryFout);
|
||||
|
||||
/* close file/pipe, restore old setting */
|
||||
setQFout(NULL);
|
||||
@ -812,7 +815,7 @@ PrintQueryTuples(const PGresult *results)
|
||||
pset.gfname = NULL;
|
||||
}
|
||||
else
|
||||
printQuery(results, &pset.popt, pset.queryFout);
|
||||
printQuery(results, &my_popt, pset.queryFout);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1001,7 +1004,7 @@ SendQuery(const char *query)
|
||||
if (on_error_rollback_warning == false && pset.sversion < 80000)
|
||||
{
|
||||
fprintf(stderr, _("The server version (%d) does not support savepoints for ON_ERROR_ROLLBACK.\n"),
|
||||
pset.sversion);
|
||||
pset.sversion);
|
||||
on_error_rollback_warning = true;
|
||||
}
|
||||
else
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/bin/psql/common.h,v 1.43 2005/05/30 18:28:11 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/psql/common.h,v 1.44 2005/06/13 06:36:22 neilc Exp $
|
||||
*/
|
||||
#ifndef COMMON_H
|
||||
#define COMMON_H
|
||||
@ -22,7 +22,6 @@
|
||||
|
||||
#define atooid(x) ((Oid) strtoul((x), NULL, 10))
|
||||
|
||||
|
||||
/*
|
||||
* Safer versions of some standard C library functions. If an
|
||||
* out-of-memory condition occurs, these functions will bail out
|
||||
@ -36,7 +35,7 @@ extern void *pg_calloc(size_t nmemb, size_t size);
|
||||
extern bool setQFout(const char *fname);
|
||||
|
||||
extern void
|
||||
psql_error(const char *fmt,...)
|
||||
psql_error(const char *fmt, ...)
|
||||
/* This lets gcc check the format string for consistency. */
|
||||
__attribute__((format(printf, 1, 2)));
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/bin/psql/print.h,v 1.23 2005/06/09 15:27:27 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/psql/print.h,v 1.24 2005/06/13 06:36:22 neilc Exp $
|
||||
*/
|
||||
#ifndef PRINT_H
|
||||
#define PRINT_H
|
||||
@ -42,6 +42,9 @@ typedef struct _printTableOpt
|
||||
* mode */
|
||||
char *tableAttr; /* attributes for HTML <table ...> */
|
||||
int encoding; /* character encoding */
|
||||
bool normal_query; /* are we presenting the results of a
|
||||
* "normal" query, or a slash
|
||||
* command? */
|
||||
} printTableOpt;
|
||||
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.115 2005/04/29 14:30:11 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.116 2005/06/13 06:36:22 neilc Exp $
|
||||
*/
|
||||
#include "postgres_fe.h"
|
||||
|
||||
@ -143,6 +143,7 @@ main(int argc, char *argv[])
|
||||
pset.queryFout = stdout;
|
||||
pset.popt.topt.border = 1;
|
||||
pset.popt.topt.pager = 1;
|
||||
pset.popt.topt.normal_query = false;
|
||||
pset.popt.default_footer = true;
|
||||
|
||||
SetVariable(pset.vars, "VERSION", PG_VERSION_STR);
|
||||
|
Loading…
Reference in New Issue
Block a user