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 511 of file help.c.

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

Referenced by exec_command_help().

512 {
513 #define VALUE_OR_NULL(a) ((a) ? (a) : "")
514 
515  if (!topic || strlen(topic) == 0)
516  {
517  /* Print all the available command names */
518  int screen_width;
519  int ncolumns;
520  int nrows;
521  FILE *output;
522  int i;
523  int j;
524 
525 #ifdef TIOCGWINSZ
526  struct winsize screen_size;
527 
528  if (ioctl(fileno(stdout), TIOCGWINSZ, &screen_size) == -1)
529  screen_width = 80; /* ioctl failed, assume 80 */
530  else
531  screen_width = screen_size.ws_col;
532 #else
533  screen_width = 80; /* default assumption */
534 #endif
535 
536  ncolumns = (screen_width - 3) / (QL_MAX_CMD_LEN + 1);
537  ncolumns = Max(ncolumns, 1);
538  nrows = (QL_HELP_COUNT + (ncolumns - 1)) / ncolumns;
539 
540  output = PageOutput(nrows + 1, pager ? &(pset.popt.topt) : NULL);
541 
542  fputs(_("Available help:\n"), output);
543 
544  for (i = 0; i < nrows; i++)
545  {
546  fprintf(output, " ");
547  for (j = 0; j < ncolumns - 1; j++)
548  fprintf(output, "%-*s",
549  QL_MAX_CMD_LEN + 1,
550  VALUE_OR_NULL(QL_HELP[i + j * nrows].cmd));
551  if (i + j * nrows < QL_HELP_COUNT)
552  fprintf(output, "%s",
553  VALUE_OR_NULL(QL_HELP[i + j * nrows].cmd));
554  fputc('\n', output);
555  }
556 
557  ClosePager(output);
558  }
559  else
560  {
561  int i,
562  j,
563  x = 0;
564  bool help_found = false;
565  FILE *output = NULL;
566  size_t len,
567  wordlen;
568  int nl_count = 0;
569 
570  /*
571  * We first try exact match, then first + second words, then first
572  * word only.
573  */
574  len = strlen(topic);
575 
576  for (x = 1; x <= 3; x++)
577  {
578  if (x > 1) /* Nothing on first pass - try the opening
579  * word(s) */
580  {
581  wordlen = j = 1;
582  while (topic[j] != ' ' && j++ < len)
583  wordlen++;
584  if (x == 2)
585  {
586  j++;
587  while (topic[j] != ' ' && j++ <= len)
588  wordlen++;
589  }
590  if (wordlen >= len) /* Don't try again if the same word */
591  {
592  if (!output)
593  output = PageOutput(nl_count, pager ? &(pset.popt.topt) : NULL);
594  break;
595  }
596  len = wordlen;
597  }
598 
599  /* Count newlines for pager */
600  for (i = 0; QL_HELP[i].cmd; i++)
601  {
602  if (pg_strncasecmp(topic, QL_HELP[i].cmd, len) == 0 ||
603  strcmp(topic, "*") == 0)
604  {
605  nl_count += 5 + QL_HELP[i].nl_count;
606 
607  /* If we have an exact match, exit. Fixes \h SELECT */
608  if (pg_strcasecmp(topic, QL_HELP[i].cmd) == 0)
609  break;
610  }
611  }
612 
613  if (!output)
614  output = PageOutput(nl_count, pager ? &(pset.popt.topt) : NULL);
615 
616  for (i = 0; QL_HELP[i].cmd; i++)
617  {
618  if (pg_strncasecmp(topic, QL_HELP[i].cmd, len) == 0 ||
619  strcmp(topic, "*") == 0)
620  {
622 
623  initPQExpBuffer(&buffer);
624  QL_HELP[i].syntaxfunc(&buffer);
625  help_found = true;
626  fprintf(output, _("Command: %s\n"
627  "Description: %s\n"
628  "Syntax:\n%s\n\n"),
629  QL_HELP[i].cmd,
630  _(QL_HELP[i].help),
631  buffer.data);
632  /* If we have an exact match, exit. Fixes \h SELECT */
633  if (pg_strcasecmp(topic, QL_HELP[i].cmd) == 0)
634  break;
635  }
636  }
637  if (help_found) /* Don't keep trying if we got a match */
638  break;
639  }
640 
641  if (!help_found)
642  fprintf(output, _("No help available for \"%s\".\nTry \\h with no arguments to see available help.\n"), topic);
643 
644  ClosePager(output);
645  }
646 }
PsqlSettings pset
Definition: startup.c:33
static void output(uint64 loop_count)
void ClosePager(FILE *pagerpipe)
Definition: print.c:2902
printTableOpt topt
Definition: print.h:165
int pg_strcasecmp(const char *s1, const char *s2)
Definition: pgstrcasecmp.c:36
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:2851
#define Max(x, y)
Definition: c.h:796
WalTimeSample buffer[LAG_TRACKER_BUFFER_SIZE]
Definition: walsender.c:214
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

◆ helpVariables()

void helpVariables ( unsigned short int  pager)

Definition at line 330 of file help.c.

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

Referenced by exec_command_slash_command_help(), and parse_psql_options().

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

◆ print_copyright()

void print_copyright ( void  )

Definition at line 651 of file help.c.

Referenced by exec_command_copyright().

652 {
653  puts(
654  "PostgreSQL Database Management System\n"
655  "(formerly known as Postgres, then as Postgres95)\n\n"
656  "Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group\n\n"
657  "Portions Copyright (c) 1994, The Regents of the University of California\n\n"
658  "Permission to use, copy, modify, and distribute this software and its\n"
659  "documentation for any purpose, without fee, and without a written agreement\n"
660  "is hereby granted, provided that the above copyright notice and this\n"
661  "paragraph and the following two paragraphs appear in all copies.\n\n"
662  "IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR\n"
663  "DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING\n"
664  "LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS\n"
665  "DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE\n"
666  "POSSIBILITY OF SUCH DAMAGE.\n\n"
667  "THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,\n"
668  "INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY\n"
669  "AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\n"
670  "ON AN \"AS IS\" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO\n"
671  "PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\n"
672  );
673 }

◆ slashUsage()

void slashUsage ( unsigned short int  pager)

Definition at line 158 of file help.c.

References _, ClosePager(), _psqlSettings::db, printTableOpt::expanded, printTableOpt::format, 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().

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

◆ usage()

void usage ( unsigned short int  pager)

Definition at line 48 of file help.c.

References _, ClosePager(), DEFAULT_FIELD_SEP, EXIT_FAILURE, get_user_name(), output(), PageOutput(), _psqlSettings::popt, pset, psql_error(), 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  psql_error("%s\n", 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(61, 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, _(" -F, --field-separator=STRING\n"
112  " field separator for unaligned output (default: \"%s\")\n"),
114  fprintf(output, _(" -H, --html HTML table output mode\n"));
115  fprintf(output, _(" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n"));
116  fprintf(output, _(" -R, --record-separator=STRING\n"
117  " record separator for unaligned output (default: newline)\n"));
118  fprintf(output, _(" -t, --tuples-only print rows only\n"));
119  fprintf(output, _(" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n"));
120  fprintf(output, _(" -x, --expanded turn on expanded table output\n"));
121  fprintf(output, _(" -z, --field-separator-zero\n"
122  " set field separator for unaligned output to zero byte\n"));
123  fprintf(output, _(" -0, --record-separator-zero\n"
124  " set record separator for unaligned output to zero byte\n"));
125 
126  fprintf(output, _("\nConnection options:\n"));
127  /* Display default host */
128  env = getenv("PGHOST");
129  fprintf(output, _(" -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n"),
130  env ? env : _("local socket"));
131  /* Display default port */
132  env = getenv("PGPORT");
133  fprintf(output, _(" -p, --port=PORT database server port (default: \"%s\")\n"),
134  env ? env : DEF_PGPORT_STR);
135  /* Display default user */
136  env = getenv("PGUSER");
137  if (!env)
138  env = user;
139  fprintf(output, _(" -U, --username=USERNAME database user name (default: \"%s\")\n"), env);
140  fprintf(output, _(" -w, --no-password never prompt for password\n"));
141  fprintf(output, _(" -W, --password force password prompt (should happen automatically)\n"));
142 
143  fprintf(output, _("\nFor more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n"
144  "commands) from within psql, or consult the psql section in the PostgreSQL\n"
145  "documentation.\n\n"));
146  fprintf(output, _("Report bugs to <pgsql-bugs@postgresql.org>.\n"));
147 
148  ClosePager(output);
149 }
PsqlSettings pset
Definition: startup.c:33
static void output(uint64 loop_count)
void ClosePager(FILE *pagerpipe)
Definition: print.c:2902
printTableOpt topt
Definition: print.h:165
const char * get_user_name(char **errstr)
Definition: username.c:31
FILE * PageOutput(int lines, const printTableOpt *topt)
Definition: print.c:2851
void psql_error(const char *fmt,...)
Definition: common.c:221
printQueryOpt popt
Definition: settings.h:91
static char * user
Definition: pg_regress.c:93
#define EXIT_FAILURE
Definition: settings.h:152
#define DEFAULT_FIELD_SEP
Definition: settings.h:15
#define _(x)
Definition: elog.c:84