PostgreSQL Source Code  git master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
help.c File Reference
#include "postgres_fe.h"
#include <sys/types.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include "common.h"
#include "common/username.h"
#include "help.h"
#include "input.h"
#include "settings.h"
#include "sql_help.h"
Include dependency graph for help.c:

Go to the source code of this file.

Macros

#define ON(var)   (var ? _("on") : _("off"))
 
#define VALUE_OR_NULL(a)   ((a) ? (a) : "")
 

Functions

void usage (unsigned short int pager)
 
void slashUsage (unsigned short int pager)
 
void helpVariables (unsigned short int pager)
 
void helpSQL (const char *topic, unsigned short int pager)
 
void print_copyright (void)
 

Macro Definition Documentation

#define ON (   var)    (var ? _("on") : _("off"))

Definition at line 46 of file help.c.

Referenced by slashUsage().

#define VALUE_OR_NULL (   a)    ((a) ? (a) : "")

Referenced by helpSQL().

Function Documentation

void helpSQL ( const char *  topic,
unsigned short int  pager 
)

Definition at line 432 of file help.c.

References _, ClosePager(), PQExpBufferData::data, help(), i, initPQExpBuffer(), Max, NULL, output(), PageOutput(), pg_strcasecmp(), pg_strncasecmp(), _psqlSettings::popt, pset, printQueryOpt::topt, and VALUE_OR_NULL.

Referenced by exec_command().

433 {
434 #define VALUE_OR_NULL(a) ((a) ? (a) : "")
435 
436  if (!topic || strlen(topic) == 0)
437  {
438  /* Print all the available command names */
439  int screen_width;
440  int ncolumns;
441  int nrows;
442  FILE *output;
443  int i;
444  int j;
445 
446 #ifdef TIOCGWINSZ
447  struct winsize screen_size;
448 
449  if (ioctl(fileno(stdout), TIOCGWINSZ, &screen_size) == -1)
450  screen_width = 80; /* ioctl failed, assume 80 */
451  else
452  screen_width = screen_size.ws_col;
453 #else
454  screen_width = 80; /* default assumption */
455 #endif
456 
457  ncolumns = (screen_width - 3) / (QL_MAX_CMD_LEN + 1);
458  ncolumns = Max(ncolumns, 1);
459  nrows = (QL_HELP_COUNT + (ncolumns - 1)) / ncolumns;
460 
461  output = PageOutput(nrows + 1, pager ? &(pset.popt.topt) : NULL);
462 
463  fputs(_("Available help:\n"), output);
464 
465  for (i = 0; i < nrows; i++)
466  {
467  fprintf(output, " ");
468  for (j = 0; j < ncolumns - 1; j++)
469  fprintf(output, "%-*s",
470  QL_MAX_CMD_LEN + 1,
471  VALUE_OR_NULL(QL_HELP[i + j * nrows].cmd));
472  if (i + j * nrows < QL_HELP_COUNT)
473  fprintf(output, "%s",
474  VALUE_OR_NULL(QL_HELP[i + j * nrows].cmd));
475  fputc('\n', output);
476  }
477 
478  ClosePager(output);
479  }
480  else
481  {
482  int i,
483  j,
484  x = 0;
485  bool help_found = false;
486  FILE *output = NULL;
487  size_t len,
488  wordlen;
489  int nl_count = 0;
490 
491  /*
492  * We first try exact match, then first + second words, then first
493  * word only.
494  */
495  len = strlen(topic);
496 
497  for (x = 1; x <= 3; x++)
498  {
499  if (x > 1) /* Nothing on first pass - try the opening
500  * word(s) */
501  {
502  wordlen = j = 1;
503  while (topic[j] != ' ' && j++ < len)
504  wordlen++;
505  if (x == 2)
506  {
507  j++;
508  while (topic[j] != ' ' && j++ <= len)
509  wordlen++;
510  }
511  if (wordlen >= len) /* Don't try again if the same word */
512  {
513  if (!output)
514  output = PageOutput(nl_count, pager ? &(pset.popt.topt) : NULL);
515  break;
516  }
517  len = wordlen;
518  }
519 
520  /* Count newlines for pager */
521  for (i = 0; QL_HELP[i].cmd; i++)
522  {
523  if (pg_strncasecmp(topic, QL_HELP[i].cmd, len) == 0 ||
524  strcmp(topic, "*") == 0)
525  {
526  nl_count += 5 + QL_HELP[i].nl_count;
527 
528  /* If we have an exact match, exit. Fixes \h SELECT */
529  if (pg_strcasecmp(topic, QL_HELP[i].cmd) == 0)
530  break;
531  }
532  }
533 
534  if (!output)
535  output = PageOutput(nl_count, pager ? &(pset.popt.topt) : NULL);
536 
537  for (i = 0; QL_HELP[i].cmd; i++)
538  {
539  if (pg_strncasecmp(topic, QL_HELP[i].cmd, len) == 0 ||
540  strcmp(topic, "*") == 0)
541  {
542  PQExpBufferData buffer;
543 
544  initPQExpBuffer(&buffer);
545  QL_HELP[i].syntaxfunc(&buffer);
546  help_found = true;
547  fprintf(output, _("Command: %s\n"
548  "Description: %s\n"
549  "Syntax:\n%s\n\n"),
550  QL_HELP[i].cmd,
551  _(QL_HELP[i].help),
552  buffer.data);
553  /* If we have an exact match, exit. Fixes \h SELECT */
554  if (pg_strcasecmp(topic, QL_HELP[i].cmd) == 0)
555  break;
556  }
557  }
558  if (help_found) /* Don't keep trying if we got a match */
559  break;
560  }
561 
562  if (!help_found)
563  fprintf(output, _("No help available for \"%s\".\nTry \\h with no arguments to see available help.\n"), topic);
564 
565  ClosePager(output);
566  }
567 }
PsqlSettings pset
Definition: startup.c:37
static void output(uint64 loop_count)
void ClosePager(FILE *pagerpipe)
Definition: print.c:2901
printTableOpt topt
Definition: print.h:165
int pg_strcasecmp(const char *s1, const char *s2)
Definition: pgstrcasecmp.c:36
static void help(const char *progname)
Definition: oid2name.c:170
int pg_strncasecmp(const char *s1, const char *s2, size_t n)
Definition: pgstrcasecmp.c:69
FILE * PageOutput(int lines, const printTableOpt *topt)
Definition: print.c:2852
#define Max(x, y)
Definition: c.h:796
#define NULL
Definition: c.h:226
printQueryOpt popt
Definition: settings.h:91
int i
#define VALUE_OR_NULL(a)
#define _(x)
Definition: elog.c:84
void initPQExpBuffer(PQExpBuffer str)
Definition: pqexpbuffer.c:89
void helpVariables ( unsigned short int  pager)

Definition at line 320 of file help.c.

References _, ClosePager(), DEFAULT_FIELD_SEP, NULL, output(), PageOutput(), _psqlSettings::popt, pset, and printQueryOpt::topt.

Referenced by exec_command(), and parse_psql_options().

321 {
322  FILE *output;
323 
324  /*
325  * Keep this line count in sync with the number of lines printed below!
326  * Use "psql --help=variables | wc" to count correctly; but notice that
327  * Windows builds currently print one more line than non-Windows builds.
328  * Using the larger number is fine.
329  */
330  output = PageOutput(88, pager ? &(pset.popt.topt) : NULL);
331 
332  fprintf(output, _("List of specially treated variables\n\n"));
333 
334  fprintf(output, _("psql variables:\n"));
335  fprintf(output, _("Usage:\n"));
336  fprintf(output, _(" psql --set=NAME=VALUE\n or \\set NAME VALUE inside psql\n\n"));
337 
338  fprintf(output, _(" AUTOCOMMIT if set, successful SQL commands are automatically committed\n"));
339  fprintf(output, _(" COMP_KEYWORD_CASE determines the case used to complete SQL key words\n"
340  " [lower, upper, preserve-lower, preserve-upper]\n"));
341  fprintf(output, _(" DBNAME the currently connected database name\n"));
342  fprintf(output, _(" ECHO controls what input is written to standard output\n"
343  " [all, errors, none, queries]\n"));
344  fprintf(output, _(" ECHO_HIDDEN if set, display internal queries executed by backslash commands;\n"
345  " if set to \"noexec\", just show without execution\n"));
346  fprintf(output, _(" ENCODING current client character set encoding\n"));
347  fprintf(output, _(" FETCH_COUNT the number of result rows to fetch and display at a time\n"
348  " (default: 0=unlimited)\n"));
349  fprintf(output, _(" HISTCONTROL controls command history [ignorespace, ignoredups, ignoreboth]\n"));
350  fprintf(output, _(" HISTFILE file name used to store the command history\n"));
351  fprintf(output, _(" HISTSIZE max number of commands to store in the command history\n"));
352  fprintf(output, _(" HOST the currently connected database server host\n"));
353  fprintf(output, _(" IGNOREEOF number of EOFs needed to terminate an interactive session\n"));
354  fprintf(output, _(" LASTOID value of the last affected OID\n"));
355  fprintf(output, _(" ON_ERROR_ROLLBACK if set, an error doesn't stop a transaction (uses implicit savepoints)\n"));
356  fprintf(output, _(" ON_ERROR_STOP stop batch execution after error\n"));
357  fprintf(output, _(" PORT server port of the current connection\n"));
358  fprintf(output, _(" PROMPT1 specifies the standard psql prompt\n"));
359  fprintf(output, _(" PROMPT2 specifies the prompt used when a statement continues from a previous line\n"));
360  fprintf(output, _(" PROMPT3 specifies the prompt used during COPY ... FROM STDIN\n"));
361  fprintf(output, _(" QUIET run quietly (same as -q option)\n"));
362  fprintf(output, _(" SHOW_CONTEXT controls display of message context fields [never, errors, always]\n"));
363  fprintf(output, _(" SINGLELINE end of line terminates SQL command mode (same as -S option)\n"));
364  fprintf(output, _(" SINGLESTEP single-step mode (same as -s option)\n"));
365  fprintf(output, _(" USER the currently connected database user\n"));
366  fprintf(output, _(" VERBOSITY controls verbosity of error reports [default, verbose, terse]\n"));
367 
368  fprintf(output, _("\nDisplay settings:\n"));
369  fprintf(output, _("Usage:\n"));
370  fprintf(output, _(" psql --pset=NAME[=VALUE]\n or \\pset NAME [VALUE] inside psql\n\n"));
371 
372  fprintf(output, _(" border border style (number)\n"));
373  fprintf(output, _(" columns target width for the wrapped format\n"));
374  fprintf(output, _(" expanded (or x) expanded output [on, off, auto]\n"));
375  fprintf(output, _(" fieldsep field separator for unaligned output (default \"%s\")\n"), DEFAULT_FIELD_SEP);
376  fprintf(output, _(" fieldsep_zero set field separator for unaligned output to zero byte\n"));
377  fprintf(output, _(" footer enable or disable display of the table footer [on, off]\n"));
378  fprintf(output, _(" format set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"));
379  fprintf(output, _(" linestyle set the border line drawing style [ascii, old-ascii, unicode]\n"));
380  fprintf(output, _(" null set the string to be printed in place of a null value\n"));
381  fprintf(output, _(" numericlocale enable or disable display of a locale-specific character to separate\n"
382  " groups of digits [on, off]\n"));
383  fprintf(output, _(" pager control when an external pager is used [yes, no, always]\n"));
384  fprintf(output, _(" recordsep record (line) separator for unaligned output\n"));
385  fprintf(output, _(" recordsep_zero set record separator for unaligned output to zero byte\n"));
386  fprintf(output, _(" tableattr (or T) specify attributes for table tag in html format or proportional\n"
387  " column widths for left-aligned data types in latex-longtable format\n"));
388  fprintf(output, _(" title set the table title for any subsequently printed tables\n"));
389  fprintf(output, _(" tuples_only if set, only actual table data is shown\n"));
390  fprintf(output, _(" unicode_border_linestyle\n"
391  " unicode_column_linestyle\n"
392  " unicode_header_linestyle\n"
393  " set the style of Unicode line drawing [single, double]\n"));
394 
395  fprintf(output, _("\nEnvironment variables:\n"));
396  fprintf(output, _("Usage:\n"));
397 
398 #ifndef WIN32
399  fprintf(output, _(" NAME=VALUE [NAME=VALUE] psql ...\n or \\setenv NAME [VALUE] inside psql\n\n"));
400 #else
401  fprintf(output, _(" set NAME=VALUE\n psql ...\n or \\setenv NAME [VALUE] inside psql\n\n"));
402 #endif
403 
404  fprintf(output, _(" COLUMNS number of columns for wrapped format\n"));
405  fprintf(output, _(" PAGER name of external pager program\n"));
406  fprintf(output, _(" PGAPPNAME same as the application_name connection parameter\n"));
407  fprintf(output, _(" PGDATABASE same as the dbname connection parameter\n"));
408  fprintf(output, _(" PGHOST same as the host connection parameter\n"));
409  fprintf(output, _(" PGPORT same as the port connection parameter\n"));
410  fprintf(output, _(" PGUSER same as the user connection parameter\n"));
411  fprintf(output, _(" PGPASSWORD connection password (not recommended)\n"));
412  fprintf(output, _(" PGPASSFILE password file name\n"));
413  fprintf(output, _(" PSQL_EDITOR, EDITOR, VISUAL\n"
414  " editor used by the \\e, \\ef, and \\ev commands\n"));
415  fprintf(output, _(" PSQL_EDITOR_LINENUMBER_ARG\n"
416  " how to specify a line number when invoking the editor\n"));
417  fprintf(output, _(" PSQL_HISTORY alternative location for the command history file\n"));
418  fprintf(output, _(" PSQLRC alternative location for the user's .psqlrc file\n"));
419  fprintf(output, _(" SHELL shell used by the \\! command\n"));
420  fprintf(output, _(" TMPDIR directory for temporary files\n"));
421 
422  ClosePager(output);
423 }
PsqlSettings pset
Definition: startup.c:37
static void output(uint64 loop_count)
void ClosePager(FILE *pagerpipe)
Definition: print.c:2901
printTableOpt topt
Definition: print.h:165
FILE * PageOutput(int lines, const printTableOpt *topt)
Definition: print.c:2852
#define NULL
Definition: c.h:226
printQueryOpt popt
Definition: settings.h:91
#define DEFAULT_FIELD_SEP
Definition: settings.h:15
#define _(x)
Definition: elog.c:84
void print_copyright ( void  )

Definition at line 572 of file help.c.

Referenced by exec_command().

573 {
574  puts(
575  "PostgreSQL Database Management System\n"
576  "(formerly known as Postgres, then as Postgres95)\n\n"
577  "Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group\n\n"
578  "Portions Copyright (c) 1994, The Regents of the University of California\n\n"
579  "Permission to use, copy, modify, and distribute this software and its\n"
580  "documentation for any purpose, without fee, and without a written agreement\n"
581  "is hereby granted, provided that the above copyright notice and this\n"
582  "paragraph and the following two paragraphs appear in all copies.\n\n"
583  "IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR\n"
584  "DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING\n"
585  "LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS\n"
586  "DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE\n"
587  "POSSIBILITY OF SUCH DAMAGE.\n\n"
588  "THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,\n"
589  "INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY\n"
590  "AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\n"
591  "ON AN \"AS IS\" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO\n"
592  "PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\n"
593  );
594 }
void slashUsage ( unsigned short int  pager)

Definition at line 159 of file help.c.

References _, ClosePager(), _psqlSettings::db, printTableOpt::expanded, printTableOpt::format, NULL, ON, output(), PageOutput(), _psqlSettings::popt, PQdb(), PRINT_HTML, pset, _psqlSettings::timing, printQueryOpt::topt, and printTableOpt::tuples_only.

Referenced by exec_command(), and parse_psql_options().

160 {
161  FILE *output;
162  char *currdb;
163 
164  currdb = PQdb(pset.db);
165 
166  /*
167  * Keep this line count in sync with the number of lines printed below!
168  * Use "psql --help=commands | wc" to count correctly. It's okay to count
169  * the USE_READLINE line even in builds without that.
170  */
171  output = PageOutput(113, pager ? &(pset.popt.topt) : NULL);
172 
173  fprintf(output, _("General\n"));
174  fprintf(output, _(" \\copyright show PostgreSQL usage and distribution terms\n"));
175  fprintf(output, _(" \\errverbose show most recent error message at maximum verbosity\n"));
176  fprintf(output, _(" \\g [FILE] or ; execute query (and send results to file or |pipe)\n"));
177  fprintf(output, _(" \\gexec execute query, then execute each value in its result\n"));
178  fprintf(output, _(" \\gset [PREFIX] execute query and store results in psql variables\n"));
179  fprintf(output, _(" \\q quit psql\n"));
180  fprintf(output, _(" \\crosstabview [COLUMNS] execute query and display results in crosstab\n"));
181  fprintf(output, _(" \\watch [SEC] execute query every SEC seconds\n"));
182  fprintf(output, "\n");
183 
184  fprintf(output, _("Help\n"));
185 
186  fprintf(output, _(" \\? [commands] show help on backslash commands\n"));
187  fprintf(output, _(" \\? options show help on psql command-line options\n"));
188  fprintf(output, _(" \\? variables show help on special variables\n"));
189  fprintf(output, _(" \\h [NAME] help on syntax of SQL commands, * for all commands\n"));
190  fprintf(output, "\n");
191 
192  fprintf(output, _("Query Buffer\n"));
193  fprintf(output, _(" \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n"));
194  fprintf(output, _(" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n"));
195  fprintf(output, _(" \\ev [VIEWNAME [LINE]] edit view definition with external editor\n"));
196  fprintf(output, _(" \\p show the contents of the query buffer\n"));
197  fprintf(output, _(" \\r reset (clear) the query buffer\n"));
198 #ifdef USE_READLINE
199  fprintf(output, _(" \\s [FILE] display history or save it to file\n"));
200 #endif
201  fprintf(output, _(" \\w FILE write query buffer to file\n"));
202  fprintf(output, "\n");
203 
204  fprintf(output, _("Input/Output\n"));
205  fprintf(output, _(" \\copy ... perform SQL COPY with data stream to the client host\n"));
206  fprintf(output, _(" \\echo [STRING] write string to standard output\n"));
207  fprintf(output, _(" \\i FILE execute commands from file\n"));
208  fprintf(output, _(" \\ir FILE as \\i, but relative to location of current script\n"));
209  fprintf(output, _(" \\o [FILE] send all query results to file or |pipe\n"));
210  fprintf(output, _(" \\qecho [STRING] write string to query output stream (see \\o)\n"));
211  fprintf(output, "\n");
212 
213  fprintf(output, _("Informational\n"));
214  fprintf(output, _(" (options: S = show system objects, + = additional detail)\n"));
215  fprintf(output, _(" \\d[S+] list tables, views, and sequences\n"));
216  fprintf(output, _(" \\d[S+] NAME describe table, view, sequence, or index\n"));
217  fprintf(output, _(" \\da[S] [PATTERN] list aggregates\n"));
218  fprintf(output, _(" \\dA[+] [PATTERN] list access methods\n"));
219  fprintf(output, _(" \\db[+] [PATTERN] list tablespaces\n"));
220  fprintf(output, _(" \\dc[S+] [PATTERN] list conversions\n"));
221  fprintf(output, _(" \\dC[+] [PATTERN] list casts\n"));
222  fprintf(output, _(" \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n"));
223  fprintf(output, _(" \\ddp [PATTERN] list default privileges\n"));
224  fprintf(output, _(" \\dD[S+] [PATTERN] list domains\n"));
225  fprintf(output, _(" \\det[+] [PATTERN] list foreign tables\n"));
226  fprintf(output, _(" \\des[+] [PATTERN] list foreign servers\n"));
227  fprintf(output, _(" \\deu[+] [PATTERN] list user mappings\n"));
228  fprintf(output, _(" \\dew[+] [PATTERN] list foreign-data wrappers\n"));
229  fprintf(output, _(" \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n"));
230  fprintf(output, _(" \\dF[+] [PATTERN] list text search configurations\n"));
231  fprintf(output, _(" \\dFd[+] [PATTERN] list text search dictionaries\n"));
232  fprintf(output, _(" \\dFp[+] [PATTERN] list text search parsers\n"));
233  fprintf(output, _(" \\dFt[+] [PATTERN] list text search templates\n"));
234  fprintf(output, _(" \\dg[S+] [PATTERN] list roles\n"));
235  fprintf(output, _(" \\di[S+] [PATTERN] list indexes\n"));
236  fprintf(output, _(" \\dl list large objects, same as \\lo_list\n"));
237  fprintf(output, _(" \\dL[S+] [PATTERN] list procedural languages\n"));
238  fprintf(output, _(" \\dm[S+] [PATTERN] list materialized views\n"));
239  fprintf(output, _(" \\dn[S+] [PATTERN] list schemas\n"));
240  fprintf(output, _(" \\do[S] [PATTERN] list operators\n"));
241  fprintf(output, _(" \\dO[S+] [PATTERN] list collations\n"));
242  fprintf(output, _(" \\dp [PATTERN] list table, view, and sequence access privileges\n"));
243  fprintf(output, _(" \\drds [PATRN1 [PATRN2]] list per-database role settings\n"));
244  fprintf(output, _(" \\dRp[+] [PATTERN] list replication publications\n"));
245  fprintf(output, _(" \\dRs[+] [PATTERN] list replication subscriptions\n"));
246  fprintf(output, _(" \\ds[S+] [PATTERN] list sequences\n"));
247  fprintf(output, _(" \\dt[S+] [PATTERN] list tables\n"));
248  fprintf(output, _(" \\dT[S+] [PATTERN] list data types\n"));
249  fprintf(output, _(" \\du[S+] [PATTERN] list roles\n"));
250  fprintf(output, _(" \\dv[S+] [PATTERN] list views\n"));
251  fprintf(output, _(" \\dE[S+] [PATTERN] list foreign tables\n"));
252  fprintf(output, _(" \\dx[+] [PATTERN] list extensions\n"));
253  fprintf(output, _(" \\dy [PATTERN] list event triggers\n"));
254  fprintf(output, _(" \\l[+] [PATTERN] list databases\n"));
255  fprintf(output, _(" \\sf[+] FUNCNAME show a function's definition\n"));
256  fprintf(output, _(" \\sv[+] VIEWNAME show a view's definition\n"));
257  fprintf(output, _(" \\z [PATTERN] same as \\dp\n"));
258  fprintf(output, "\n");
259 
260  fprintf(output, _("Formatting\n"));
261  fprintf(output, _(" \\a toggle between unaligned and aligned output mode\n"));
262  fprintf(output, _(" \\C [STRING] set table title, or unset if none\n"));
263  fprintf(output, _(" \\f [STRING] show or set field separator for unaligned query output\n"));
264  fprintf(output, _(" \\H toggle HTML output mode (currently %s)\n"),
266  fprintf(output, _(" \\pset [NAME [VALUE]] set table output option\n"
267  " (NAME := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|\n"
268  " numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|\n"
269  " unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\n"));
270  fprintf(output, _(" \\t [on|off] show only rows (currently %s)\n"),
272  fprintf(output, _(" \\T [STRING] set HTML <table> tag attributes, or unset if none\n"));
273  fprintf(output, _(" \\x [on|off|auto] toggle expanded output (currently %s)\n"),
274  pset.popt.topt.expanded == 2 ? "auto" : ON(pset.popt.topt.expanded));
275  fprintf(output, "\n");
276 
277  fprintf(output, _("Connection\n"));
278  if (currdb)
279  fprintf(output, _(" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
280  " connect to new database (currently \"%s\")\n"),
281  currdb);
282  else
283  fprintf(output, _(" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n"
284  " connect to new database (currently no connection)\n"));
285  fprintf(output, _(" \\encoding [ENCODING] show or set client encoding\n"));
286  fprintf(output, _(" \\password [USERNAME] securely change the password for a user\n"));
287  fprintf(output, _(" \\conninfo display information about current connection\n"));
288  fprintf(output, "\n");
289 
290  fprintf(output, _("Operating System\n"));
291  fprintf(output, _(" \\cd [DIR] change the current working directory\n"));
292  fprintf(output, _(" \\setenv NAME [VALUE] set or unset environment variable\n"));
293  fprintf(output, _(" \\timing [on|off] toggle timing of commands (currently %s)\n"),
294  ON(pset.timing));
295  fprintf(output, _(" \\! [COMMAND] execute command in shell or start interactive shell\n"));
296  fprintf(output, "\n");
297 
298  fprintf(output, _("Variables\n"));
299  fprintf(output, _(" \\prompt [TEXT] NAME prompt user to set internal variable\n"));
300  fprintf(output, _(" \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n"));
301  fprintf(output, _(" \\unset NAME unset (delete) internal variable\n"));
302  fprintf(output, "\n");
303 
304  fprintf(output, _("Large Objects\n"));
305  fprintf(output, _(" \\lo_export LOBOID FILE\n"
306  " \\lo_import FILE [COMMENT]\n"
307  " \\lo_list\n"
308  " \\lo_unlink LOBOID large object operations\n"));
309 
310  ClosePager(output);
311 }
PGconn * db
Definition: settings.h:82
PsqlSettings pset
Definition: startup.c:37
static void output(uint64 loop_count)
void ClosePager(FILE *pagerpipe)
Definition: print.c:2901
enum printFormat format
Definition: print.h:98
printTableOpt topt
Definition: print.h:165
#define ON(var)
Definition: help.c:46
unsigned short int expanded
Definition: print.h:99
FILE * PageOutput(int lines, const printTableOpt *topt)
Definition: print.c:2852
bool tuples_only
Definition: print.h:107
char * PQdb(const PGconn *conn)
Definition: fe-connect.c:5828
#define NULL
Definition: c.h:226
printQueryOpt popt
Definition: settings.h:91
#define _(x)
Definition: elog.c:84
void usage ( unsigned short int  pager)

Definition at line 49 of file help.c.

References _, ClosePager(), DEFAULT_FIELD_SEP, EXIT_FAILURE, get_user_name(), NULL, output(), PageOutput(), _psqlSettings::popt, pset, psql_error(), printQueryOpt::topt, and user.

50 {
51  const char *env;
52  const char *user;
53  char *errstr;
54  FILE *output;
55 
56  /* Find default user, in case we need it. */
57  user = getenv("PGUSER");
58  if (!user)
59  {
60  user = get_user_name(&errstr);
61  if (!user)
62  {
63  psql_error("%s\n", errstr);
64  exit(EXIT_FAILURE);
65  }
66  }
67 
68  /*
69  * Keep this line count in sync with the number of lines printed below!
70  * Use "psql --help=options | wc" to count correctly.
71  */
72  output = PageOutput(61, pager ? &(pset.popt.topt) : NULL);
73 
74  fprintf(output, _("psql is the PostgreSQL interactive terminal.\n\n"));
75  fprintf(output, _("Usage:\n"));
76  fprintf(output, _(" psql [OPTION]... [DBNAME [USERNAME]]\n\n"));
77 
78  fprintf(output, _("General options:\n"));
79  /* Display default database */
80  env = getenv("PGDATABASE");
81  if (!env)
82  env = user;
83  fprintf(output, _(" -c, --command=COMMAND run only single command (SQL or internal) and exit\n"));
84  fprintf(output, _(" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"), env);
85  fprintf(output, _(" -f, --file=FILENAME execute commands from file, then exit\n"));
86  fprintf(output, _(" -l, --list list available databases, then exit\n"));
87  fprintf(output, _(" -v, --set=, --variable=NAME=VALUE\n"
88  " set psql variable NAME to VALUE\n"
89  " (e.g., -v ON_ERROR_STOP=1)\n"));
90  fprintf(output, _(" -V, --version output version information, then exit\n"));
91  fprintf(output, _(" -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"));
92  fprintf(output, _(" -1 (\"one\"), --single-transaction\n"
93  " execute as a single transaction (if non-interactive)\n"));
94  fprintf(output, _(" -?, --help[=options] show this help, then exit\n"));
95  fprintf(output, _(" --help=commands list backslash commands, then exit\n"));
96  fprintf(output, _(" --help=variables list special variables, then exit\n"));
97 
98  fprintf(output, _("\nInput and output options:\n"));
99  fprintf(output, _(" -a, --echo-all echo all input from script\n"));
100  fprintf(output, _(" -b, --echo-errors echo failed commands\n"));
101  fprintf(output, _(" -e, --echo-queries echo commands sent to server\n"));
102  fprintf(output, _(" -E, --echo-hidden display queries that internal commands generate\n"));
103  fprintf(output, _(" -L, --log-file=FILENAME send session log to file\n"));
104  fprintf(output, _(" -n, --no-readline disable enhanced command line editing (readline)\n"));
105  fprintf(output, _(" -o, --output=FILENAME send query results to file (or |pipe)\n"));
106  fprintf(output, _(" -q, --quiet run quietly (no messages, only query output)\n"));
107  fprintf(output, _(" -s, --single-step single-step mode (confirm each query)\n"));
108  fprintf(output, _(" -S, --single-line single-line mode (end of line terminates SQL command)\n"));
109 
110  fprintf(output, _("\nOutput format options:\n"));
111  fprintf(output, _(" -A, --no-align unaligned table output mode\n"));
112  fprintf(output, _(" -F, --field-separator=STRING\n"
113  " field separator for unaligned output (default: \"%s\")\n"),
115  fprintf(output, _(" -H, --html HTML table output mode\n"));
116  fprintf(output, _(" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"));
117  fprintf(output, _(" -R, --record-separator=STRING\n"
118  " record separator for unaligned output (default: newline)\n"));
119  fprintf(output, _(" -t, --tuples-only print rows only\n"));
120  fprintf(output, _(" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"));
121  fprintf(output, _(" -x, --expanded turn on expanded table output\n"));
122  fprintf(output, _(" -z, --field-separator-zero\n"
123  " set field separator for unaligned output to zero byte\n"));
124  fprintf(output, _(" -0, --record-separator-zero\n"
125  " set record separator for unaligned output to zero byte\n"));
126 
127  fprintf(output, _("\nConnection options:\n"));
128  /* Display default host */
129  env = getenv("PGHOST");
130  fprintf(output, _(" -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"),
131  env ? env : _("local socket"));
132  /* Display default port */
133  env = getenv("PGPORT");
134  fprintf(output, _(" -p, --port=PORT database server port (default: \"%s\")\n"),
135  env ? env : DEF_PGPORT_STR);
136  /* Display default user */
137  env = getenv("PGUSER");
138  if (!env)
139  env = user;
140  fprintf(output, _(" -U, --username=USERNAME database user name (default: \"%s\")\n"), env);
141  fprintf(output, _(" -w, --no-password never prompt for password\n"));
142  fprintf(output, _(" -W, --password force password prompt (should happen automatically)\n"));
143 
144  fprintf(output, _("\nFor more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
145  "commands) from within psql, or consult the psql section in the PostgreSQL\n"
146  "documentation.\n\n"));
147  fprintf(output, _("Report bugs to <pgsql-bugs@postgresql.org>.\n"));
148 
149  ClosePager(output);
150 }
PsqlSettings pset
Definition: startup.c:37
static void output(uint64 loop_count)
void ClosePager(FILE *pagerpipe)
Definition: print.c:2901
printTableOpt topt
Definition: print.h:165
const char * get_user_name(char **errstr)
Definition: username.c:33
FILE * PageOutput(int lines, const printTableOpt *topt)
Definition: print.c:2852
void psql_error(const char *fmt,...)
Definition: common.c:177
#define NULL
Definition: c.h:226
printQueryOpt popt
Definition: settings.h:91
static char * user
Definition: pg_regress.c:90
#define EXIT_FAILURE
Definition: settings.h:150
#define DEFAULT_FIELD_SEP
Definition: settings.h:15
#define _(x)
Definition: elog.c:84