PostgreSQL Source Code  git master
help.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

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)
 

Function Documentation

◆ helpSQL()

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

Definition at line 523 of file help.c.

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

Referenced by exec_command_help().

524 {
525 #define VALUE_OR_NULL(a) ((a) ? (a) : "")
526 
527  if (!topic || strlen(topic) == 0)
528  {
529  /* Print all the available command names */
530  int screen_width;
531  int ncolumns;
532  int nrows;
533  FILE *output;
534  int i;
535  int j;
536 
537 #ifdef TIOCGWINSZ
538  struct winsize screen_size;
539 
540  if (ioctl(fileno(stdout), TIOCGWINSZ, &screen_size) == -1)
541  screen_width = 80; /* ioctl failed, assume 80 */
542  else
543  screen_width = screen_size.ws_col;
544 #else
545  screen_width = 80; /* default assumption */
546 #endif
547 
548  ncolumns = (screen_width - 3) / (QL_MAX_CMD_LEN + 1);
549  ncolumns = Max(ncolumns, 1);
550  nrows = (QL_HELP_COUNT + (ncolumns - 1)) / ncolumns;
551 
552  output = PageOutput(nrows + 1, pager ? &(pset.popt.topt) : NULL);
553 
554  fputs(_("Available help:\n"), output);
555 
556  for (i = 0; i < nrows; i++)
557  {
558  fprintf(output, " ");
559  for (j = 0; j < ncolumns - 1; j++)
560  fprintf(output, "%-*s",
561  QL_MAX_CMD_LEN + 1,
562  VALUE_OR_NULL(QL_HELP[i + j * nrows].cmd));
563  if (i + j * nrows < QL_HELP_COUNT)
564  fprintf(output, "%s",
565  VALUE_OR_NULL(QL_HELP[i + j * nrows].cmd));
566  fputc('\n', output);
567  }
568 
569  ClosePager(output);
570  }
571  else
572  {
573  int i,
574  j,
575  x = 0;
576  bool help_found = false;
577  FILE *output = NULL;
578  size_t len,
579  wordlen;
580  int nl_count = 0;
581 
582  /*
583  * We first try exact match, then first + second words, then first
584  * word only.
585  */
586  len = strlen(topic);
587 
588  for (x = 1; x <= 3; x++)
589  {
590  if (x > 1) /* Nothing on first pass - try the opening
591  * word(s) */
592  {
593  wordlen = j = 1;
594  while (topic[j] != ' ' && j++ < len)
595  wordlen++;
596  if (x == 2)
597  {
598  j++;
599  while (topic[j] != ' ' && j++ <= len)
600  wordlen++;
601  }
602  if (wordlen >= len) /* Don't try again if the same word */
603  {
604  if (!output)
605  output = PageOutput(nl_count, pager ? &(pset.popt.topt) : NULL);
606  break;
607  }
608  len = wordlen;
609  }
610 
611  /* Count newlines for pager */
612  for (i = 0; QL_HELP[i].cmd; i++)
613  {
614  if (pg_strncasecmp(topic, QL_HELP[i].cmd, len) == 0 ||
615  strcmp(topic, "*") == 0)
616  {
617  nl_count += 5 + QL_HELP[i].nl_count;
618 
619  /* If we have an exact match, exit. Fixes \h SELECT */
620  if (pg_strcasecmp(topic, QL_HELP[i].cmd) == 0)
621  break;
622  }
623  }
624 
625  if (!output)
626  output = PageOutput(nl_count, pager ? &(pset.popt.topt) : NULL);
627 
628  for (i = 0; QL_HELP[i].cmd; i++)
629  {
630  if (pg_strncasecmp(topic, QL_HELP[i].cmd, len) == 0 ||
631  strcmp(topic, "*") == 0)
632  {
633  PQExpBufferData buffer;
634  char *url;
635 
636  initPQExpBuffer(&buffer);
637  QL_HELP[i].syntaxfunc(&buffer);
638  help_found = true;
639  url = psprintf("https://www.postgresql.org/docs/%s/%s.html",
640  strstr(PG_VERSION, "devel") ? "devel" : PG_MAJORVERSION,
641  QL_HELP[i].docbook_id);
642  fprintf(output, _("Command: %s\n"
643  "Description: %s\n"
644  "Syntax:\n%s\n\n"
645  "URL: %s\n\n"),
646  QL_HELP[i].cmd,
647  _(QL_HELP[i].help),
648  buffer.data,
649  url);
650  free(url);
651  /* If we have an exact match, exit. Fixes \h SELECT */
652  if (pg_strcasecmp(topic, QL_HELP[i].cmd) == 0)
653  break;
654  }
655  }
656  if (help_found) /* Don't keep trying if we got a match */
657  break;
658  }
659 
660  if (!help_found)
661  fprintf(output, _("No help available for \"%s\".\nTry \\h with no arguments to see available help.\n"), topic);
662 
663  ClosePager(output);
664  }
665 }
PsqlSettings pset
Definition: startup.c:31
static void output(uint64 loop_count)
void ClosePager(FILE *pagerpipe)
Definition: print.c:3026
char * psprintf(const char *fmt,...)
Definition: psprintf.c:46
printTableOpt topt
Definition: print.h:169
int pg_strcasecmp(const char *s1, const char *s2)
Definition: pgstrcasecmp.c:36
#define fprintf
Definition: port.h:197
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:2975
#define free(a)
Definition: header.h:65
#define Max(x, y)
Definition: c.h:914
printQueryOpt popt
Definition: settings.h:91
int i
#define VALUE_OR_NULL(a)
#define _(x)
Definition: elog.c:88
void initPQExpBuffer(PQExpBuffer str)
Definition: pqexpbuffer.c:92

◆ helpVariables()

void helpVariables ( unsigned short int  pager)

Definition at line 340 of file help.c.

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

Referenced by exec_command_slash_command_help(), and parse_psql_options().

341 {
342  FILE *output;
343 
344  /*
345  * Keep this line count in sync with the number of lines printed below!
346  * Use "psql --help=variables | wc" to count correctly; but notice that
347  * Windows builds currently print one more line than non-Windows builds.
348  * Using the larger number is fine.
349  */
350  output = PageOutput(158, pager ? &(pset.popt.topt) : NULL);
351 
352  fprintf(output, _("List of specially treated variables\n\n"));
353 
354  fprintf(output, _("psql variables:\n"));
355  fprintf(output, _("Usage:\n"));
356  fprintf(output, _(" psql --set=NAME=VALUE\n or \\set NAME VALUE inside psql\n\n"));
357 
358  fprintf(output, _(" AUTOCOMMIT\n"
359  " if set, successful SQL commands are automatically committed\n"));
360  fprintf(output, _(" COMP_KEYWORD_CASE\n"
361  " determines the case used to complete SQL key words\n"
362  " [lower, upper, preserve-lower, preserve-upper]\n"));
363  fprintf(output, _(" DBNAME\n"
364  " the currently connected database name\n"));
365  fprintf(output, _(" ECHO\n"
366  " controls what input is written to standard output\n"
367  " [all, errors, none, queries]\n"));
368  fprintf(output, _(" ECHO_HIDDEN\n"
369  " if set, display internal queries executed by backslash commands;\n"
370  " if set to \"noexec\", just show them without execution\n"));
371  fprintf(output, _(" ENCODING\n"
372  " current client character set encoding\n"));
373  fprintf(output, _(" ERROR\n"
374  " true if last query failed, else false\n"));
375  fprintf(output, _(" FETCH_COUNT\n"
376  " the number of result rows to fetch and display at a time (0 = unlimited)\n"));
377  fprintf(output, _(" HIDE_TABLEAM\n"
378  " if set, table access methods are not displayed\n"));
379  fprintf(output, _(" HISTCONTROL\n"
380  " controls command history [ignorespace, ignoredups, ignoreboth]\n"));
381  fprintf(output, _(" HISTFILE\n"
382  " file name used to store the command history\n"));
383  fprintf(output, _(" HISTSIZE\n"
384  " maximum number of commands to store in the command history\n"));
385  fprintf(output, _(" HOST\n"
386  " the currently connected database server host\n"));
387  fprintf(output, _(" IGNOREEOF\n"
388  " number of EOFs needed to terminate an interactive session\n"));
389  fprintf(output, _(" LASTOID\n"
390  " value of the last affected OID\n"));
391  fprintf(output, _(" LAST_ERROR_MESSAGE\n"
392  " LAST_ERROR_SQLSTATE\n"
393  " message and SQLSTATE of last error, or empty string and \"00000\" if none\n"));
394  fprintf(output, _(" ON_ERROR_ROLLBACK\n"
395  " if set, an error doesn't stop a transaction (uses implicit savepoints)\n"));
396  fprintf(output, _(" ON_ERROR_STOP\n"
397  " stop batch execution after error\n"));
398  fprintf(output, _(" PORT\n"
399  " server port of the current connection\n"));
400  fprintf(output, _(" PROMPT1\n"
401  " specifies the standard psql prompt\n"));
402  fprintf(output, _(" PROMPT2\n"
403  " specifies the prompt used when a statement continues from a previous line\n"));
404  fprintf(output, _(" PROMPT3\n"
405  " specifies the prompt used during COPY ... FROM STDIN\n"));
406  fprintf(output, _(" QUIET\n"
407  " run quietly (same as -q option)\n"));
408  fprintf(output, _(" ROW_COUNT\n"
409  " number of rows returned or affected by last query, or 0\n"));
410  fprintf(output, _(" SERVER_VERSION_NAME\n"
411  " SERVER_VERSION_NUM\n"
412  " server's version (in short string or numeric format)\n"));
413  fprintf(output, _(" SHOW_CONTEXT\n"
414  " controls display of message context fields [never, errors, always]\n"));
415  fprintf(output, _(" SINGLELINE\n"
416  " if set, end of line terminates SQL commands (same as -S option)\n"));
417  fprintf(output, _(" SINGLESTEP\n"
418  " single-step mode (same as -s option)\n"));
419  fprintf(output, _(" SQLSTATE\n"
420  " SQLSTATE of last query, or \"00000\" if no error\n"));
421  fprintf(output, _(" USER\n"
422  " the currently connected database user\n"));
423  fprintf(output, _(" VERBOSITY\n"
424  " controls verbosity of error reports [default, verbose, terse, sqlstate]\n"));
425  fprintf(output, _(" VERSION\n"
426  " VERSION_NAME\n"
427  " VERSION_NUM\n"
428  " psql's version (in verbose string, short string, or numeric format)\n"));
429 
430  fprintf(output, _("\nDisplay settings:\n"));
431  fprintf(output, _("Usage:\n"));
432  fprintf(output, _(" psql --pset=NAME[=VALUE]\n or \\pset NAME [VALUE] inside psql\n\n"));
433 
434  fprintf(output, _(" border\n"
435  " border style (number)\n"));
436  fprintf(output, _(" columns\n"
437  " target width for the wrapped format\n"));
438  fprintf(output, _(" expanded (or x)\n"
439  " expanded output [on, off, auto]\n"));
440  fprintf(output, _(" fieldsep\n"
441  " field separator for unaligned output (default \"%s\")\n"),
443  fprintf(output, _(" fieldsep_zero\n"
444  " set field separator for unaligned output to a zero byte\n"));
445  fprintf(output, _(" footer\n"
446  " enable or disable display of the table footer [on, off]\n"));
447  fprintf(output, _(" format\n"
448  " set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n"));
449  fprintf(output, _(" linestyle\n"
450  " set the border line drawing style [ascii, old-ascii, unicode]\n"));
451  fprintf(output, _(" null\n"
452  " set the string to be printed in place of a null value\n"));
453  fprintf(output, _(" numericlocale\n"
454  " enable display of a locale-specific character to separate groups of digits\n"));
455  fprintf(output, _(" pager\n"
456  " control when an external pager is used [yes, no, always]\n"));
457  fprintf(output, _(" recordsep\n"
458  " record (line) separator for unaligned output\n"));
459  fprintf(output, _(" recordsep_zero\n"
460  " set record separator for unaligned output to a zero byte\n"));
461  fprintf(output, _(" tableattr (or T)\n"
462  " specify attributes for table tag in html format, or proportional\n"
463  " column widths for left-aligned data types in latex-longtable format\n"));
464  fprintf(output, _(" title\n"
465  " set the table title for subsequently printed tables\n"));
466  fprintf(output, _(" tuples_only\n"
467  " if set, only actual table data is shown\n"));
468  fprintf(output, _(" unicode_border_linestyle\n"
469  " unicode_column_linestyle\n"
470  " unicode_header_linestyle\n"
471  " set the style of Unicode line drawing [single, double]\n"));
472 
473  fprintf(output, _("\nEnvironment variables:\n"));
474  fprintf(output, _("Usage:\n"));
475 
476 #ifndef WIN32
477  fprintf(output, _(" NAME=VALUE [NAME=VALUE] psql ...\n or \\setenv NAME [VALUE] inside psql\n\n"));
478 #else
479  fprintf(output, _(" set NAME=VALUE\n psql ...\n or \\setenv NAME [VALUE] inside psql\n\n"));
480 #endif
481 
482  fprintf(output, _(" COLUMNS\n"
483  " number of columns for wrapped format\n"));
484  fprintf(output, _(" PGAPPNAME\n"
485  " same as the application_name connection parameter\n"));
486  fprintf(output, _(" PGDATABASE\n"
487  " same as the dbname connection parameter\n"));
488  fprintf(output, _(" PGHOST\n"
489  " same as the host connection parameter\n"));
490  fprintf(output, _(" PGPASSWORD\n"
491  " connection password (not recommended)\n"));
492  fprintf(output, _(" PGPASSFILE\n"
493  " password file name\n"));
494  fprintf(output, _(" PGPORT\n"
495  " same as the port connection parameter\n"));
496  fprintf(output, _(" PGUSER\n"
497  " same as the user connection parameter\n"));
498  fprintf(output, _(" PSQL_EDITOR, EDITOR, VISUAL\n"
499  " editor used by the \\e, \\ef, and \\ev commands\n"));
500  fprintf(output, _(" PSQL_EDITOR_LINENUMBER_ARG\n"
501  " how to specify a line number when invoking the editor\n"));
502  fprintf(output, _(" PSQL_HISTORY\n"
503  " alternative location for the command history file\n"));
504  fprintf(output, _(" PSQL_PAGER, PAGER\n"
505  " name of external pager program\n"));
506  fprintf(output, _(" PSQLRC\n"
507  " alternative location for the user's .psqlrc file\n"));
508  fprintf(output, _(" SHELL\n"
509  " shell used by the \\! command\n"));
510  fprintf(output, _(" TMPDIR\n"
511  " directory for temporary files\n"));
512 
513  ClosePager(output);
514 }
PsqlSettings pset
Definition: startup.c:31
static void output(uint64 loop_count)
void ClosePager(FILE *pagerpipe)
Definition: print.c:3026
printTableOpt topt
Definition: print.h:169
#define fprintf
Definition: port.h:197
FILE * PageOutput(int lines, const printTableOpt *topt)
Definition: print.c:2975
printQueryOpt popt
Definition: settings.h:91
#define DEFAULT_FIELD_SEP
Definition: settings.h:15
#define _(x)
Definition: elog.c:88

◆ print_copyright()

void print_copyright ( void  )

Definition at line 670 of file help.c.

Referenced by exec_command_copyright().

671 {
672  puts("PostgreSQL Database Management System\n"
673  "(formerly known as Postgres, then as Postgres95)\n\n"
674  "Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group\n\n"
675  "Portions Copyright (c) 1994, The Regents of the University of California\n\n"
676  "Permission to use, copy, modify, and distribute this software and its\n"
677  "documentation for any purpose, without fee, and without a written agreement\n"
678  "is hereby granted, provided that the above copyright notice and this\n"
679  "paragraph and the following two paragraphs appear in all copies.\n\n"
680  "IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR\n"
681  "DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING\n"
682  "LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS\n"
683  "DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE\n"
684  "POSSIBILITY OF SUCH DAMAGE.\n\n"
685  "THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,\n"
686  "INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY\n"
687  "AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\n"
688  "ON AN \"AS IS\" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO\n"
689  "PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\n");
690 }

◆ slashUsage()

void slashUsage ( unsigned short int  pager)

Definition at line 160 of file help.c.

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

Referenced by exec_command_slash_command_help(), and parse_psql_options().

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

◆ usage()

void usage ( unsigned short int  pager)

Definition at line 48 of file help.c.

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

49 {
50  const char *env;
51  const char *user;
52  char *errstr;
53  FILE *output;
54 
55  /* Find default user, in case we need it. */
56  user = getenv("PGUSER");
57  if (!user)
58  {
59  user = get_user_name(&errstr);
60  if (!user)
61  {
62  pg_log_fatal("%s", errstr);
63  exit(EXIT_FAILURE);
64  }
65  }
66 
67  /*
68  * Keep this line count in sync with the number of lines printed below!
69  * Use "psql --help=options | wc" to count correctly.
70  */
71  output = PageOutput(63, pager ? &(pset.popt.topt) : NULL);
72 
73  fprintf(output, _("psql is the PostgreSQL interactive terminal.\n\n"));
74  fprintf(output, _("Usage:\n"));
75  fprintf(output, _(" psql [OPTION]... [DBNAME [USERNAME]]\n\n"));
76 
77  fprintf(output, _("General options:\n"));
78  /* Display default database */
79  env = getenv("PGDATABASE");
80  if (!env)
81  env = user;
82  fprintf(output, _(" -c, --command=COMMAND run only single command (SQL or internal) and exit\n"));
83  fprintf(output, _(" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n"), env);
84  fprintf(output, _(" -f, --file=FILENAME execute commands from file, then exit\n"));
85  fprintf(output, _(" -l, --list list available databases, then exit\n"));
86  fprintf(output, _(" -v, --set=, --variable=NAME=VALUE\n"
87  " set psql variable NAME to VALUE\n"
88  " (e.g., -v ON_ERROR_STOP=1)\n"));
89  fprintf(output, _(" -V, --version output version information, then exit\n"));
90  fprintf(output, _(" -X, --no-psqlrc do not read startup file (~/.psqlrc)\n"));
91  fprintf(output, _(" -1 (\"one\"), --single-transaction\n"
92  " execute as a single transaction (if non-interactive)\n"));
93  fprintf(output, _(" -?, --help[=options] show this help, then exit\n"));
94  fprintf(output, _(" --help=commands list backslash commands, then exit\n"));
95  fprintf(output, _(" --help=variables list special variables, then exit\n"));
96 
97  fprintf(output, _("\nInput and output options:\n"));
98  fprintf(output, _(" -a, --echo-all echo all input from script\n"));
99  fprintf(output, _(" -b, --echo-errors echo failed commands\n"));
100  fprintf(output, _(" -e, --echo-queries echo commands sent to server\n"));
101  fprintf(output, _(" -E, --echo-hidden display queries that internal commands generate\n"));
102  fprintf(output, _(" -L, --log-file=FILENAME send session log to file\n"));
103  fprintf(output, _(" -n, --no-readline disable enhanced command line editing (readline)\n"));
104  fprintf(output, _(" -o, --output=FILENAME send query results to file (or |pipe)\n"));
105  fprintf(output, _(" -q, --quiet run quietly (no messages, only query output)\n"));
106  fprintf(output, _(" -s, --single-step single-step mode (confirm each query)\n"));
107  fprintf(output, _(" -S, --single-line single-line mode (end of line terminates SQL command)\n"));
108 
109  fprintf(output, _("\nOutput format options:\n"));
110  fprintf(output, _(" -A, --no-align unaligned table output mode\n"));
111  fprintf(output, _(" --csv CSV (Comma-Separated Values) 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 <%s>.\n"), PACKAGE_BUGREPORT);
148  fprintf(output, _("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
149 
150  ClosePager(output);
151 }
PsqlSettings pset
Definition: startup.c:31
static void output(uint64 loop_count)
void ClosePager(FILE *pagerpipe)
Definition: print.c:3026
printTableOpt topt
Definition: print.h:169
#define fprintf
Definition: port.h:197
const char * get_user_name(char **errstr)
Definition: username.c:31
FILE * PageOutput(int lines, const printTableOpt *topt)
Definition: print.c:2975
printQueryOpt popt
Definition: settings.h:91
static char * user
Definition: pg_regress.c:93
#define EXIT_FAILURE
Definition: settings.h:154
#define DEFAULT_FIELD_SEP
Definition: settings.h:15
#define _(x)
Definition: elog.c:88
#define pg_log_fatal(...)
Definition: logging.h:75