Hello

here is a prototype:

bash-4.1$ /usr/local/pgsql/bin/psql --help-variables
List of some variables (options) for use from command line.
Complete list you find in psql section in the PostgreSQL documentation.

psql variables:
Usage:
  psql --set=NAME=VALUE
  or \set NAME VALUE in interactive mode

  AUTOCOMMIT         when is on, successful SQL command is automatically
commited
  COMP_KEYWORD_CASE  determines which letter case to use when completing an
SQL key word
  ECHO               all lines from input can be written to standard output
  ECHO_HIDDEN        display queries for internal commands (same as -E
option)
  FETCH_COUNT        how many rows should be for one page (default 0
unlimited)
  HISTFILE           file name that be used for store history list
  HISTSIZE           the number of commands to store in the command history
  ON_ERROR_ROLLBACK  when is on, raise ROLLBACK on error automatically
  ON_ERROR_STOP      when is set, then batch execution stop immediately
after error
  VERBOSITY          control verbosity of error reports [default, verbose,
terse]

Printing options:
Usage:
  psql --pset=NAME[=VALUE]
  or \pset NAME [VALUE] in interactive mode

  border             number of border style
  fieldsep           specify field separator for unaligned output
  fieldsep_zero      field separator in unaligned mode will be zero
  format             set output format [unaligned, aligned, wrapped, html,
latex, ..]
  linestyle          sets the border line drawing style [ascii, old-ascii,
unicode]
  null               sets the string to be printed in place of a null value
  pager              when the pager option is off, the pager program is not
used
  recordsep          specifies the record (line) separator to use in
unaligned output format
  recordsep_zero     record separator be in unaligned output format a zero
byte
  title              sets the table title for any subsequently printed
tables
  tuples_only        in tuples-only mode, only actual table data is shown

Environment options:
Usage:
  NAME=VALUE, [NAME=VALUE] psql ...
  or \setenv NAME [VALUE] in interactive mode

  COLUMNS            number of columns for wrapped format
  PAGER              used pager
  PGHOST             same as the host connection parameter
  PGDATABASE         same as the dbname connection parameter
  PGUSER             same as the user connection parameter
  PGPASSWORD         possibility to set password
  PSQL_EDITOR, EDITOR, VISUAL  editor used by \e \ef commands
  PSQL_EDITOR_LINE_NUMBER_ARG  style how to line number is used in editor
  PSQL_HISTORY       alternative location for the command history file
  PSQL_RC            alternative location of the user's .psqlrc file
  SHELL              command executed by the \! command
  TMPDIR             directory for storing temporary files

For more information consult the psql section in the PostgreSQL
documentation.

Regards

Pavel



2014-02-28 23:01 GMT+01:00 Andrew Dunstan <and...@dunslane.net>:

>
> On 02/28/2014 04:38 PM, Tom Lane wrote:
>
>> Andrew Dunstan <and...@dunslane.net> writes:
>>
>>> Well, then we just have to add more info to --help
>>>>
>>> +1 for at least doing that. I found it annoying just the other day not
>>> to find it in plsql's --help output, in a moment of brain fade when I
>>> forgot how to spell it. So it's not just beginners who can benefit, it's
>>> people like me whose memory occasionally goes awry.
>>>
>> No objection in principle, but what are we talking about exactly?
>> Adding some new backslash command that lists all the variables that have
>> special meanings?
>>
>
>
> That's a pretty good idea, especially if we give that command a command
> line option too, so something like
>
>    psql --special-variables
>
> would run that command and exit.
>
> Maybe I'm over-egging the pudding a bit ;-)
>
> cheers
>
> andrew
>
commit 82a6a61a11bdb76c00481abeccff42b4b532762e
Author: Pavel Stehule <pavel.steh...@gmail.com>
Date:   Sat Mar 1 09:34:47 2014 +0100

    initial

diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c
index baa9417..fb77132 100644
--- a/src/bin/psql/help.c
+++ b/src/bin/psql/help.c
@@ -78,12 +78,13 @@ usage(void)
 	printf(_("  -f, --file=FILENAME      execute commands from file, then exit\n"));
 	printf(_("  -l, --list               list available databases, then exit\n"));
 	printf(_("  -v, --set=, --variable=NAME=VALUE\n"
-			 "                           set psql variable NAME to VALUE\n"));
+			 "                           set psql variable NAME to VALUE e.g.: -v ON_ERROR_STOP=1\n"));
 	printf(_("  -V, --version            output version information, then exit\n"));
 	printf(_("  -X, --no-psqlrc          do not read startup file (~/.psqlrc)\n"));
 	printf(_("  -1 (\"one\"), --single-transaction\n"
 			 "                           execute as a single transaction (if non-interactive)\n"));
 	printf(_("  -?, --help               show this help, then exit\n"));
+	printf(_("      --help-variables     list of available configuration variables (options), then exit\n"));
 
 	printf(_("\nInput and output options:\n"));
 	printf(_("  -a, --echo-all           echo all input from script\n"));
@@ -279,6 +280,68 @@ slashUsage(unsigned short int pager)
 }
 
 
+/*
+ * show list of available variables (options) from command line
+ */
+void
+help_variables(void)
+{
+	printf(_("List of some variables (options) for use from command line.\n"));
+	printf(_("Complete list you find in psql section in the PostgreSQL documentation.\n\n"));
+
+	printf(_("psql variables:\n"));
+	printf(_("Usage:\n"));
+	printf(_("  psql --set=NAME=VALUE\n  or \\set NAME VALUE in interactive mode\n\n"));
+
+	printf(_("  AUTOCOMMIT         when is on, successful SQL command is automatically commited\n"));
+	printf(_("  COMP_KEYWORD_CASE  determines which letter case to use when completing an SQL key word\n"));
+	printf(_("  ECHO               all lines from input can be written to standard output\n"));
+	printf(_("  ECHO_HIDDEN        display queries for internal commands (same as -E option)\n"));
+	printf(_("  FETCH_COUNT        how many rows should be for one page (default 0 unlimited)\n"));
+	printf(_("  HISTFILE           file name that be used for store history list\n"));
+	printf(_("  HISTSIZE           the number of commands to store in the command history\n"));
+	printf(_("  ON_ERROR_ROLLBACK  when is on, raise ROLLBACK on error automatically\n"));
+	printf(_("  ON_ERROR_STOP      when is set, then batch execution stop immediately after error\n"));
+	printf(_("  VERBOSITY          control verbosity of error reports [default, verbose, terse]\n"));
+
+	printf(_("\nPrinting options:\n"));
+	printf(_("Usage:\n"));
+	printf(_("  psql --pset=NAME[=VALUE]\n  or \\pset NAME [VALUE] in interactive mode\n\n"));
+
+	printf(_("  border             number of border style\n"));
+	printf(_("  fieldsep           specify field separator for unaligned output\n"));
+	printf(_("  fieldsep_zero      field separator in unaligned mode will be zero\n"));
+	printf(_("  format             set output format [unaligned, aligned, wrapped, html, latex, ..]\n"));
+	printf(_("  linestyle          sets the border line drawing style [ascii, old-ascii, unicode]\n"));
+	printf(_("  null               sets the string to be printed in place of a null value\n"));
+	printf(_("  pager              when the pager option is off, the pager program is not used\n"));
+	printf(_("  recordsep          specifies the record (line) separator to use in unaligned output format\n"));
+	printf(_("  recordsep_zero     record separator be in unaligned output format a zero byte\n"));
+	printf(_("  title              sets the table title for any subsequently printed tables\n"));
+	printf(_("  tuples_only        in tuples-only mode, only actual table data is shown\n"));
+
+	printf(_("\nEnvironment options:\n"));
+	printf(_("Usage:\n"));
+	printf(_("  NAME=VALUE, [NAME=VALUE] psql ...\n  or \\setenv NAME [VALUE] in interactive mode\n\n"));
+
+	printf(_("  COLUMNS            number of columns for wrapped format\n"));
+	printf(_("  PAGER              used pager\n"));
+	printf(_("  PGHOST             same as the host connection parameter\n"));
+	printf(_("  PGDATABASE         same as the dbname connection parameter\n"));
+	printf(_("  PGUSER             same as the user connection parameter\n"));
+	printf(_("  PGPASSWORD         possibility to set password\n"));
+	printf(_("  PSQL_EDITOR, EDITOR, VISUAL  editor used by \\e \\ef commands\n"));
+	printf(_("  PSQL_EDITOR_LINE_NUMBER_ARG  style how to line number is used in editor\n"));
+	printf(_("  PSQL_HISTORY       alternative location for the command history file\n"));
+	printf(_("  PSQL_RC            alternative location of the user's .psqlrc file\n"));
+	printf(_("  SHELL              command executed by the \\! command\n"));
+	printf(_("  TMPDIR             directory for storing temporary files\n"));
+
+	printf(_("\nFor more information consult the psql section in the PostgreSQL\n"
+			 "documentation.\n\n"));
+	printf(_("Report bugs to <pgsql-b...@postgresql.org>.\n"));
+}
+
 
 /*
  * helpSQL -- help with SQL commands
diff --git a/src/bin/psql/help.h b/src/bin/psql/help.h
index 054d5a4..e7affff 100644
--- a/src/bin/psql/help.h
+++ b/src/bin/psql/help.h
@@ -12,6 +12,8 @@ void		usage(void);
 
 void		slashUsage(unsigned short int pager);
 
+void		help_variables(void);
+
 void		helpSQL(const char *topic, unsigned short int pager);
 
 void		print_copyright(void);
diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c
index 1061992..22c1976 100644
--- a/src/bin/psql/startup.c
+++ b/src/bin/psql/startup.c
@@ -382,6 +382,7 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
 		{"expanded", no_argument, NULL, 'x'},
 		{"no-psqlrc", no_argument, NULL, 'X'},
 		{"help", no_argument, NULL, '?'},
+		{"help-variables", no_argument, 0},
 		{NULL, 0, NULL, 0}
 	};
 
@@ -390,7 +391,7 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
 
 	memset(options, 0, sizeof *options);
 
-	while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:h:HlL:no:p:P:qR:sStT:U:v:VwWxXz?01",
+	while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:h:HlL:no:p:P:qR:sStT:U:v:VwWxXz?001",
 							long_options, &optindex)) != -1)
 	{
 		switch (c)
@@ -565,6 +566,13 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
 					exit(EXIT_FAILURE);
 				}
 				break;
+			case 0:
+				if (strcmp(argv[optind - 1], "--help-variables") == 0)
+				{
+					help_variables();
+					exit(EXIT_SUCCESS);
+				}
+				break;
 			default:
 				fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
 						pset.progname);
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to